PushWinningExperience.java
5.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/*
* Decompiled with CFR 0_118.
*
* Could not load the following classes:
* com.google.gson.JsonArray
* com.google.gson.JsonElement
* com.google.gson.JsonObject
* com.google.gson.JsonPrimitive
* javax.servlet.ServletException
* org.apache.commons.lang.StringUtils
* org.apache.felix.scr.annotations.Reference
* org.apache.felix.scr.annotations.sling.SlingServlet
* org.apache.sling.api.SlingHttpServletRequest
* org.apache.sling.api.SlingHttpServletResponse
* org.apache.sling.api.resource.Resource
* org.apache.sling.api.resource.ValueMap
* org.apache.sling.api.servlets.SlingAllMethodsServlet
* org.slf4j.Logger
* org.slf4j.LoggerFactory
*/
package com.day.cq.analytics.testandtarget.impl.servlets;
import com.day.cq.analytics.testandtarget.TargetMediator;
import com.day.cq.analytics.testandtarget.TestandtargetException;
import com.day.cq.analytics.testandtarget.impl.TargetHelperService;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonPrimitive;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import org.apache.commons.lang.StringUtils;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.sling.SlingServlet;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ValueMap;
import org.apache.sling.api.servlets.SlingAllMethodsServlet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@SlingServlet(name=" com.day.cq.analytics.testandtarget.impl.servlets.PushWinningExperience", resourceTypes={"cq/personalization/components/campaignpage"}, selectors={"pushwinner"}, methods={"POST"}, extensions={"json"})
public class PushWinningExperience
extends SlingAllMethodsServlet {
private static final String PARAM_EXPERIENCE_NAME = "experienceName";
private static final String DEFAULT_EXPERIENCE_NAME = "Default";
private static final String PN_CAMPAIGN_ACTIVE = "campaignActive";
private static final Logger LOG = LoggerFactory.getLogger(PushWinningExperience.class);
@Reference
private TargetHelperService helperService;
@Reference
private TargetMediator targetMediatorService;
protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
Resource campaign = request.getResource().getParent();
LOG.debug("Request to push winning experience for campaign at {}", (Object)campaign.getPath());
String experienceName = request.getParameter("experienceName");
if (StringUtils.isEmpty((String)experienceName)) {
this.sendError(response, "Parameter experienceName not supplied", 400);
return;
}
ValueMap properties = (ValueMap)request.getResource().adaptTo(ValueMap.class);
if (!((Boolean)properties.get("campaignActive", (Object)true)).booleanValue()) {
LOG.debug("Pushing experience not allowed for inactive campaign {}", (Object)campaign.getPath());
this.sendError(response, "Pushing experience not allowed for inactive campaign!", 400);
return;
}
try {
List<String> replacedPaths = "Default".equals(experienceName) ? this.helperService.pushDefaultWinningExperience(campaign) : this.helperService.pushWinningExperience(campaign, experienceName);
LOG.debug("Replaced {} locations", (Object)replacedPaths.size());
if (replacedPaths.size() > 0) {
this.targetMediatorService.deactivatePublishCampaign(campaign.getPath());
this.sendOk(response, replacedPaths);
} else {
this.sendError(response, "No content paths have been for any locations in this campaign", 404);
}
}
catch (TestandtargetException e) {
LOG.error(e.getMessage(), (Throwable)e);
this.sendError(response, e.getMessage(), 500);
}
catch (RuntimeException e) {
LOG.error(e.getMessage(), (Throwable)e);
this.sendError(response, e.getMessage(), 500);
}
}
private void sendOk(SlingHttpServletResponse response, List<String> locationPaths) throws IOException {
JsonObject responseJson = new JsonObject();
JsonArray arr = new JsonArray();
for (String l : locationPaths) {
arr.add((JsonElement)new JsonPrimitive(l));
}
responseJson.add("locationPaths", (JsonElement)arr);
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
out.print(responseJson.toString());
}
private void sendError(SlingHttpServletResponse response, String message, int responseCode) throws IOException {
response.setContentType("application/json");
response.setStatus(responseCode);
PrintWriter out = response.getWriter();
JsonObject object = new JsonObject();
object.addProperty("message", message);
out.print(object.toString());
}
protected void bindHelperService(TargetHelperService targetHelperService) {
this.helperService = targetHelperService;
}
protected void unbindHelperService(TargetHelperService targetHelperService) {
if (this.helperService == targetHelperService) {
this.helperService = null;
}
}
protected void bindTargetMediatorService(TargetMediator targetMediator) {
this.targetMediatorService = targetMediator;
}
protected void unbindTargetMediatorService(TargetMediator targetMediator) {
if (this.targetMediatorService == targetMediator) {
this.targetMediatorService = null;
}
}
}