AccountOptionsServlet.java
4.44 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
/*
* Decompiled with CFR 0_118.
*
* Could not load the following classes:
* com.adobe.granite.crypto.CryptoException
* com.adobe.granite.crypto.CryptoSupport
* com.day.cq.commons.inherit.InheritanceValueMap
* com.day.cq.wcm.webservicesupport.Configuration
* com.day.cq.wcm.webservicesupport.ConfigurationManager
* com.google.gson.JsonObject
* javax.annotation.Nonnull
* 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.ResourceResolver
* org.apache.sling.api.servlets.SlingSafeMethodsServlet
* org.slf4j.Logger
* org.slf4j.LoggerFactory
*/
package com.day.cq.analytics.testandtarget.impl.servlets;
import com.adobe.granite.crypto.CryptoException;
import com.adobe.granite.crypto.CryptoSupport;
import com.day.cq.commons.inherit.InheritanceValueMap;
import com.day.cq.wcm.webservicesupport.Configuration;
import com.day.cq.wcm.webservicesupport.ConfigurationManager;
import com.google.gson.JsonObject;
import java.io.IOException;
import java.io.PrintWriter;
import javax.annotation.Nonnull;
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.ResourceResolver;
import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@SlingServlet(name="com.day.cq.analytics.testandtarget.impl.servlets.AccountOptionsServlet", paths={"/libs/cq/analytics/testandtarget/accountoptions"})
public class AccountOptionsServlet
extends SlingSafeMethodsServlet {
private static final Logger LOG = LoggerFactory.getLogger(AccountOptionsServlet.class);
@Reference
CryptoSupport cryptoSupport;
protected void doGet(@Nonnull SlingHttpServletRequest request, @Nonnull SlingHttpServletResponse response) throws ServletException, IOException {
String configurationPath = request.getParameter("configPath");
ConfigurationManager configMgr = (ConfigurationManager)request.getResourceResolver().adaptTo(ConfigurationManager.class);
Configuration targetConfig = configMgr.getConfiguration(configurationPath);
if (targetConfig == null) {
this.sendError(response, "No configuration found at path " + configurationPath, 500);
return;
}
InheritanceValueMap configOptions = targetConfig.getProperties();
String accountOptions = (String)configOptions.get("accountOptions", (Object)"");
if (StringUtils.isEmpty((String)accountOptions)) {
this.sendError(response, "The accountOptions property is not found or empty.", 404);
return;
}
try {
String actualOptions = this.cryptoSupport.unprotect(accountOptions);
response.setContentType("application/json");
JsonObject responseObject = new JsonObject();
responseObject.addProperty("status", "success");
responseObject.addProperty("accountOptions", actualOptions);
PrintWriter out = response.getWriter();
out.print(responseObject.toString());
}
catch (CryptoException e) {
LOG.error(e.getMessage(), (Throwable)e);
this.sendError(response, e.getMessage(), 500);
}
}
private void sendError(SlingHttpServletResponse response, String msg, int code) {
response.setContentType("application/json");
response.setStatus(code);
JsonObject responseObject = new JsonObject();
responseObject.addProperty("status", "error");
responseObject.addProperty("message", msg);
try {
PrintWriter out = response.getWriter();
out.println(responseObject.toString());
}
catch (IOException e) {
LOG.error(e.getMessage(), (Throwable)e);
}
}
protected void bindCryptoSupport(CryptoSupport cryptoSupport) {
this.cryptoSupport = cryptoSupport;
}
protected void unbindCryptoSupport(CryptoSupport cryptoSupport) {
if (this.cryptoSupport == cryptoSupport) {
this.cryptoSupport = null;
}
}
}