You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 09:26:50 UTC
[sling-org-apache-sling-discovery-base] 03/08: SLING-6689: Replace
commons.json usage in org.apache.sling.discovery.base
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.discovery.base-1.1.8
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-discovery-base.git
commit aea97dd275c7e527cdde0542243ee5176df609b5
Author: Karl Pauls <pa...@apache.org>
AuthorDate: Tue Mar 28 13:02:58 2017 +0000
SLING-6689: Replace commons.json usage in org.apache.sling.discovery.base
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/bundles/extensions/discovery/base@1789117 13f79535-47bb-0310-9956-ffa450edef68
---
pom.xml | 18 ++-
.../base/connectors/announcement/Announcement.java | 169 ++++++++++++---------
.../announcement/AnnouncementRegistryImpl.java | 11 +-
.../base/connectors/announcement/package-info.java | 2 +-
.../connectors/ping/TopologyConnectorClient.java | 4 +-
.../connectors/ping/TopologyConnectorServlet.java | 4 +-
.../connectors/ping/TopologyRequestValidator.java | 38 +++--
7 files changed, 144 insertions(+), 102 deletions(-)
diff --git a/pom.xml b/pom.xml
index 28871fe..b2fc7b8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -130,6 +130,12 @@
<groupId>org.osgi</groupId>
<artifactId>org.osgi.compendium</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.commons.johnzon</artifactId>
+ <version>0.1.0-SNAPSHOT</version>
+ <scope>provided</scope>
+ </dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.jcr.api</artifactId>
@@ -215,12 +221,6 @@
<version>4.3.5</version>
<scope>provided</scope>
</dependency>
- <dependency>
- <groupId>org.apache.sling</groupId>
- <artifactId>org.apache.sling.commons.json</artifactId>
- <version>2.0.6</version>
- <scope>provided</scope>
- </dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
@@ -319,6 +319,12 @@
<artifactId>org.apache.sling.testing.sling-mock</artifactId>
<version>1.2.0</version>
<scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.commons.json</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
</dependencies>
</project>
diff --git a/src/main/java/org/apache/sling/discovery/base/connectors/announcement/Announcement.java b/src/main/java/org/apache/sling/discovery/base/connectors/announcement/Announcement.java
index 95df6fc..4878e6f 100644
--- a/src/main/java/org/apache/sling/discovery/base/connectors/announcement/Announcement.java
+++ b/src/main/java/org/apache/sling/discovery/base/connectors/announcement/Announcement.java
@@ -18,6 +18,8 @@
*/
package org.apache.sling.discovery.base.connectors.announcement;
+import java.io.StringReader;
+import java.io.StringWriter;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
@@ -26,13 +28,18 @@ import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+import javax.json.Json;
+import javax.json.JsonArray;
+import javax.json.JsonArrayBuilder;
+import javax.json.JsonObject;
+import javax.json.JsonObjectBuilder;
+import javax.json.JsonReaderFactory;
+import javax.json.JsonValue;
+
import org.apache.sling.api.resource.ModifiableValueMap;
import org.apache.sling.api.resource.PersistenceException;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
-import org.apache.sling.commons.json.JSONArray;
-import org.apache.sling.commons.json.JSONException;
-import org.apache.sling.commons.json.JSONObject;
import org.apache.sling.discovery.ClusterView;
import org.apache.sling.discovery.InstanceDescription;
import org.apache.sling.discovery.commons.providers.DefaultClusterView;
@@ -83,6 +90,13 @@ public class Announcement {
private long originallyCreatedAt = -1;
private long receivedAt = System.currentTimeMillis();
+
+ private static final JsonReaderFactory jsonReaderFactory;
+ static {
+ Map<String, Object> config = new HashMap<String, Object>();
+ config.put("org.apache.johnzon.supports-comments", true);
+ jsonReaderFactory = Json.createReaderFactory(config);
+ }
public Announcement(final String ownerId) {
this(ownerId, PROTOCOL_VERSION);
@@ -226,88 +240,95 @@ public class Announcement {
}
/** Convert this announcement into a json object **/
- public JSONObject asJSONObject() throws JSONException {
+ public JsonObject asJSONObject() {
return asJSONObject(false);
}
/** Convert this announcement into a json object **/
- private JSONObject asJSONObject(boolean filterTimes) throws JSONException {
- JSONObject announcement = new JSONObject();
- announcement.put("ownerId", ownerId);
- announcement.put("protocolVersion", protocolVersion);
+ private JsonObject asJSONObject(boolean filterTimes) {
+ JsonObjectBuilder announcement = Json.createObjectBuilder();
+ announcement.add("ownerId", ownerId);
+ announcement.add("protocolVersion", protocolVersion);
// SLING-3389: leaving the 'created' property in the announcement
// for backwards compatibility!
if (!filterTimes) {
- announcement.put("created", System.currentTimeMillis());
+ announcement.add("created", System.currentTimeMillis());
}
- announcement.put("inherited", inherited);
+ announcement.add("inherited", inherited);
if (loop) {
- announcement.put("loop", loop);
+ announcement.add("loop", loop);
}
if (serverInfo != null) {
- announcement.put("serverInfo", serverInfo);
+ announcement.add("serverInfo", serverInfo);
}
if (localCluster!=null) {
- announcement.put("localClusterView", asJSON(localCluster));
+ announcement.add("localClusterView", asJSON(localCluster));
}
if (!filterTimes && backoffInterval>0) {
- announcement.put("backoffInterval", backoffInterval);
+ announcement.add("backoffInterval", backoffInterval);
}
if (resetBackoff) {
- announcement.put("resetBackoff", resetBackoff);
+ announcement.add("resetBackoff", resetBackoff);
}
- JSONArray incomingAnnouncements = new JSONArray();
+ JsonArrayBuilder incomingAnnouncements = Json.createArrayBuilder();
for (Iterator<Announcement> it = incomings.iterator(); it.hasNext();) {
Announcement incoming = it.next();
- incomingAnnouncements.put(incoming.asJSONObject(filterTimes));
+ incomingAnnouncements.add(incoming.asJSONObject(filterTimes));
}
- announcement.put("topologyAnnouncements", incomingAnnouncements);
- return announcement;
+ announcement.add("topologyAnnouncements", incomingAnnouncements);
+ return announcement.build();
}
/** Create an announcement form json **/
- public static Announcement fromJSON(final String topologyAnnouncementJSON)
- throws JSONException {
- JSONObject announcement = new JSONObject(topologyAnnouncementJSON);
+ public static Announcement fromJSON(final String topologyAnnouncementJSON) {
+
+ JsonObject announcement = jsonReaderFactory.createReader(new StringReader(topologyAnnouncementJSON)).readObject();
final String ownerId = announcement.getString("ownerId");
final int protocolVersion;
- if (!announcement.has("protocolVersion")) {
+ if (!announcement.containsKey("protocolVersion")) {
protocolVersion = -1;
} else {
protocolVersion = announcement.getInt("protocolVersion");
}
final Announcement result = new Announcement(ownerId, protocolVersion);
- if (announcement.has("created")) {
- result.originallyCreatedAt = announcement.getLong("created");
+ if (announcement.containsKey("created")) {
+ result.originallyCreatedAt = announcement.getJsonNumber("created").longValue();
}
- if (announcement.has("backoffInterval")) {
- long backoffInterval = announcement.getLong("backoffInterval");
+ if (announcement.containsKey("backoffInterval")) {
+ long backoffInterval = announcement.getJsonNumber("backoffInterval").longValue();
result.backoffInterval = backoffInterval;
}
- if (announcement.has("resetBackoff")) {
+ if (announcement.containsKey("resetBackoff")) {
boolean resetBackoff = announcement.getBoolean("resetBackoff");
result.resetBackoff = resetBackoff;
}
- if (announcement.has("loop") && announcement.getBoolean("loop")) {
+ if (announcement.containsKey("loop") && announcement.getBoolean("loop")) {
result.setLoop(true);
return result;
}
- final String localClusterViewJSON = announcement
- .getString("localClusterView");
- final ClusterView localClusterView = asClusterView(localClusterViewJSON);
- final JSONArray subAnnouncements = announcement
- .getJSONArray("topologyAnnouncements");
+ if (announcement.containsKey("localClusterView"))
+ {
+ final String localClusterViewJSON = asJSON(announcement
+ .getJsonObject("localClusterView"));
+
+ final ClusterView localClusterView = asClusterView(localClusterViewJSON);
+
+ result.setLocalCluster(localClusterView);
+ }
- if (announcement.has("inherited")) {
+ if (announcement.containsKey("inherited")) {
final Boolean inherited = announcement.getBoolean("inherited");
result.inherited = inherited;
}
- if (announcement.has("serverInfo")) {
+ if (announcement.containsKey("serverInfo")) {
String serverInfo = announcement.getString("serverInfo");
result.serverInfo = serverInfo;
}
- result.setLocalCluster(localClusterView);
- for (int i = 0; i < subAnnouncements.length(); i++) {
+
+ final JsonArray subAnnouncements = announcement
+ .getJsonArray("topologyAnnouncements");
+
+ for (int i = 0; i < subAnnouncements.size(); i++) {
String subAnnouncementJSON = subAnnouncements.getString(i);
result.addIncomingTopologyAnnouncement(fromJSON(subAnnouncementJSON));
}
@@ -315,15 +336,14 @@ public class Announcement {
}
/** create a clusterview from json **/
- private static ClusterView asClusterView(final String localClusterViewJSON)
- throws JSONException {
- JSONObject obj = new JSONObject(localClusterViewJSON);
+ private static ClusterView asClusterView(final String localClusterViewJSON) {
+ JsonObject obj = jsonReaderFactory.createReader(new StringReader(localClusterViewJSON)).readObject();
DefaultClusterView clusterView = new DefaultClusterView(
obj.getString("id"));
- JSONArray instancesObj = obj.getJSONArray("instances");
+ JsonArray instancesObj = obj.getJsonArray("instances");
- for (int i = 0; i < instancesObj.length(); i++) {
- JSONObject anInstance = instancesObj.getJSONObject(i);
+ for (int i = 0; i < instancesObj.size(); i++) {
+ JsonObject anInstance = instancesObj.getJsonObject(i);
clusterView.addInstanceDescription(asInstance(anInstance));
}
@@ -331,29 +351,27 @@ public class Announcement {
}
/** convert a clusterview into json **/
- private static JSONObject asJSON(final ClusterView clusterView)
- throws JSONException {
- JSONObject obj = new JSONObject();
- obj.put("id", clusterView.getId());
- JSONArray instancesObj = new JSONArray();
+ private static JsonObject asJSON(final ClusterView clusterView) {
+ JsonObjectBuilder obj = Json.createObjectBuilder();
+ obj.add("id", clusterView.getId());
+ JsonArrayBuilder instancesObj = Json.createArrayBuilder();
List<InstanceDescription> instances = clusterView.getInstances();
for (Iterator<InstanceDescription> it = instances.iterator(); it
.hasNext();) {
InstanceDescription instanceDescription = it.next();
- instancesObj.put(asJSON(instanceDescription));
+ instancesObj.add(asJSON(instanceDescription));
}
- obj.put("instances", instancesObj);
- return obj;
+ obj.add("instances", instancesObj);
+ return obj.build();
}
/** create an instancedescription from json **/
- private static DefaultInstanceDescription asInstance(
- final JSONObject anInstance) throws JSONException {
+ private static DefaultInstanceDescription asInstance(final JsonObject anInstance) {
final boolean isLeader = anInstance.getBoolean("isLeader");
final String slingId = anInstance.getString("slingId");
- final JSONObject propertiesObj = anInstance.getJSONObject("properties");
- Iterator<String> it = propertiesObj.keys();
+ final JsonObject propertiesObj = anInstance.getJsonObject("properties");
+ Iterator<String> it = propertiesObj.keySet().iterator();
Map<String, String> properties = new HashMap<String, String>();
while (it.hasNext()) {
String key = it.next();
@@ -366,24 +384,23 @@ public class Announcement {
}
/** convert an instance description into a json object **/
- private static JSONObject asJSON(final InstanceDescription instanceDescription)
- throws JSONException {
- JSONObject obj = new JSONObject();
- obj.put("slingId", instanceDescription.getSlingId());
- obj.put("isLeader", instanceDescription.isLeader());
+ private static JsonObject asJSON(final InstanceDescription instanceDescription) {
+ JsonObjectBuilder obj = Json.createObjectBuilder();
+ obj.add("slingId", instanceDescription.getSlingId());
+ obj.add("isLeader", instanceDescription.isLeader());
ClusterView cluster = instanceDescription.getClusterView();
if (cluster != null) {
- obj.put("cluster", cluster.getId());
+ obj.add("cluster", cluster.getId());
}
- JSONObject propertiesObj = new JSONObject();
+ JsonObjectBuilder propertiesObj = Json.createObjectBuilder();
Map<String, String> propertiesMap = instanceDescription.getProperties();
for (Iterator<Entry<String, String>> it = propertiesMap.entrySet()
.iterator(); it.hasNext();) {
Entry<String, String> entry = it.next();
- propertiesObj.put(entry.getKey(), entry.getValue());
+ propertiesObj.add(entry.getKey(), entry.getValue());
}
- obj.put("properties", propertiesObj);
- return obj;
+ obj.add("properties", propertiesObj);
+ return obj.build();
}
/** sets the local clusterview **/
@@ -398,8 +415,14 @@ public class Announcement {
}
/** Convert this announcement into json **/
- public String asJSON() throws JSONException {
- return asJSONObject().toString();
+ public String asJSON() {
+ return asJSON(asJSONObject());
+ }
+
+ private static String asJSON(JsonValue json) {
+ StringWriter writer = new StringWriter();
+ Json.createGenerator(writer).write(json).close();
+ return writer.toString();
}
/** the key which is unique to this announcement **/
@@ -424,7 +447,7 @@ public class Announcement {
* under which a node with the primary key is created
**/
public void persistTo(Resource announcementsResource)
- throws PersistenceException, JSONException {
+ throws PersistenceException {
Resource announcementChildResource = announcementsResource.getChild(getPrimaryKey());
// SLING-2967 used to introduce 'resetting the created time' here
@@ -466,10 +489,10 @@ public class Announcement {
* to SLING-3389 wire-backwards-compatibility - and backoffInterval
* introduced as part of SLING-3382
*/
- public boolean correspondsTo(Announcement announcement) throws JSONException {
- final JSONObject myJson = asJSONObject(true);
- final JSONObject otherJson = announcement.asJSONObject(true);
- return myJson.toString().equals(otherJson.toString());
+ public boolean correspondsTo(Announcement announcement) {
+ final JsonObject myJson = asJSONObject(true);
+ final JsonObject otherJson = announcement.asJSONObject(true);
+ return asJSON(myJson).equals(asJSON(otherJson));
}
public void registerPing(Announcement incomingAnnouncement) {
diff --git a/src/main/java/org/apache/sling/discovery/base/connectors/announcement/AnnouncementRegistryImpl.java b/src/main/java/org/apache/sling/discovery/base/connectors/announcement/AnnouncementRegistryImpl.java
index c13d4ab..a4f3957 100644
--- a/src/main/java/org/apache/sling/discovery/base/connectors/announcement/AnnouncementRegistryImpl.java
+++ b/src/main/java/org/apache/sling/discovery/base/connectors/announcement/AnnouncementRegistryImpl.java
@@ -25,6 +25,8 @@ import java.util.LinkedList;
import java.util.Map;
import java.util.Map.Entry;
+import javax.json.JsonException;
+
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Reference;
@@ -35,7 +37,6 @@ import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.resource.ResourceResolverFactory;
import org.apache.sling.api.resource.ValueMap;
-import org.apache.sling.commons.json.JSONException;
import org.apache.sling.discovery.ClusterView;
import org.apache.sling.discovery.InstanceDescription;
import org.apache.sling.discovery.base.connectors.BaseConfig;
@@ -243,7 +244,7 @@ public class AnnouncementRegistryImpl implements AnnouncementRegistry {
logger.error("listAnnouncementsInSameCluster: got a PersistenceException: " + e, e);
throw new RuntimeException(
"Exception while talking to repository (" + e + ")", e);
- } catch (JSONException e) {
+ } catch (JsonException e) {
logger.error("listAnnouncementsInSameCluster: got a JSONException: " + e, e);
throw new RuntimeException("Exception while converting json (" + e
+ ")", e);
@@ -327,7 +328,7 @@ public class AnnouncementRegistryImpl implements AnnouncementRegistry {
}
logger.debug("registerAnnouncement: incoming announcement differs from existing one!");
- } catch(JSONException e) {
+ } catch(JsonException e) {
logger.error("registerAnnouncement: got JSONException while converting incoming announcement to JSON: "+e, e);
}
// otherwise the repository and the cache require to be updated
@@ -395,7 +396,7 @@ public class AnnouncementRegistryImpl implements AnnouncementRegistry {
+ e, e);
throw new RuntimeException(
"Exception while talking to repository (" + e + ")", e);
- } catch (JSONException e) {
+ } catch (JsonException e) {
logger.error("registerAnnouncement: got a JSONException: " + e, e);
throw new RuntimeException("Exception while converting json (" + e
+ ")", e);
@@ -467,7 +468,7 @@ public class AnnouncementRegistryImpl implements AnnouncementRegistry {
logger.error("handleEvent: got a PersistenceException: " + e, e);
throw new RuntimeException(
"Exception while talking to repository (" + e + ")", e);
- } catch (JSONException e) {
+ } catch (JsonException e) {
logger.error("handleEvent: got a JSONException: " + e, e);
throw new RuntimeException("Exception while converting json (" + e
+ ")", e);
diff --git a/src/main/java/org/apache/sling/discovery/base/connectors/announcement/package-info.java b/src/main/java/org/apache/sling/discovery/base/connectors/announcement/package-info.java
index 207191e..b1e3218 100644
--- a/src/main/java/org/apache/sling/discovery/base/connectors/announcement/package-info.java
+++ b/src/main/java/org/apache/sling/discovery/base/connectors/announcement/package-info.java
@@ -23,7 +23,7 @@
*
* @version 1.1.2
*/
-@Version("1.1.2")
+@Version("2.0.0")
package org.apache.sling.discovery.base.connectors.announcement;
import aQute.bnd.annotation.Version;
diff --git a/src/main/java/org/apache/sling/discovery/base/connectors/ping/TopologyConnectorClient.java b/src/main/java/org/apache/sling/discovery/base/connectors/ping/TopologyConnectorClient.java
index a5db553..9cb6e2c 100644
--- a/src/main/java/org/apache/sling/discovery/base/connectors/ping/TopologyConnectorClient.java
+++ b/src/main/java/org/apache/sling/discovery/base/connectors/ping/TopologyConnectorClient.java
@@ -26,6 +26,7 @@ import java.util.Iterator;
import java.util.UUID;
import java.util.zip.GZIPOutputStream;
+import javax.json.JsonException;
import javax.servlet.http.HttpServletResponse;
import org.apache.http.Header;
@@ -44,7 +45,6 @@ import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.DefaultHttpRequestRetryHandler;
import org.apache.http.impl.client.HttpClientBuilder;
-import org.apache.sling.commons.json.JSONException;
import org.apache.sling.discovery.ClusterView;
import org.apache.sling.discovery.InstanceDescription;
import org.apache.sling.discovery.base.commons.ClusterViewService;
@@ -322,7 +322,7 @@ public class TopologyConnectorClient implements
logger.warn("ping: got IOException [suppressing further warns]: " + e + ", uri=" + uri);
}
statusDetails = e.toString();
- } catch (JSONException e) {
+ } catch (JsonException e) {
logger.warn("ping: got JSONException: " + e);
statusDetails = e.toString();
} catch (RuntimeException re) {
diff --git a/src/main/java/org/apache/sling/discovery/base/connectors/ping/TopologyConnectorServlet.java b/src/main/java/org/apache/sling/discovery/base/connectors/ping/TopologyConnectorServlet.java
index 4211cf3..037bc3f 100644
--- a/src/main/java/org/apache/sling/discovery/base/connectors/ping/TopologyConnectorServlet.java
+++ b/src/main/java/org/apache/sling/discovery/base/connectors/ping/TopologyConnectorServlet.java
@@ -28,6 +28,7 @@ import java.util.Set;
import java.util.StringTokenizer;
import java.util.zip.GZIPOutputStream;
+import javax.json.JsonException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
@@ -38,7 +39,6 @@ import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Deactivate;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.Service;
-import org.apache.sling.commons.json.JSONException;
import org.apache.sling.discovery.ClusterView;
import org.apache.sling.discovery.base.commons.ClusterViewHelper;
import org.apache.sling.discovery.base.commons.ClusterViewService;
@@ -320,7 +320,7 @@ public class TopologyConnectorServlet extends HttpServlet {
pw.print(p);
pw.flush();
}
- } catch (JSONException e) {
+ } catch (JsonException e) {
logger.error("doPost: Got a JSONException: " + e, e);
response.sendError(500);
} catch (UndefinedClusterViewException e) {
diff --git a/src/main/java/org/apache/sling/discovery/base/connectors/ping/TopologyRequestValidator.java b/src/main/java/org/apache/sling/discovery/base/connectors/ping/TopologyRequestValidator.java
index fee273c..833e995 100644
--- a/src/main/java/org/apache/sling/discovery/base/connectors/ping/TopologyRequestValidator.java
+++ b/src/main/java/org/apache/sling/discovery/base/connectors/ping/TopologyRequestValidator.java
@@ -18,6 +18,8 @@
package org.apache.sling.discovery.base.connectors.ping;
import java.io.IOException;
+import java.io.StringReader;
+import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.security.AlgorithmParameters;
import java.security.InvalidAlgorithmParameterException;
@@ -46,6 +48,12 @@ import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.SecretKeySpec;
+import javax.json.Json;
+import javax.json.JsonArray;
+import javax.json.JsonArrayBuilder;
+import javax.json.JsonException;
+import javax.json.JsonObject;
+import javax.json.JsonObjectBuilder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -54,9 +62,6 @@ import org.apache.commons.io.IOUtils;
import org.apache.http.Header;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.sling.commons.json.JSONArray;
-import org.apache.sling.commons.json.JSONException;
-import org.apache.sling.commons.json.JSONObject;
import org.apache.sling.discovery.base.connectors.BaseConfig;
/**
@@ -138,9 +143,16 @@ public class TopologyRequestValidator {
checkActive();
if (encryptionEnabled) {
try {
- JSONObject json = new JSONObject();
- json.put("payload", new JSONArray(encrypt(body)));
- return json.toString();
+ JsonObjectBuilder json = Json.createObjectBuilder();
+ JsonArrayBuilder array = Json.createArrayBuilder();
+ for (String value : encrypt(body))
+ {
+ array.add(value);
+ }
+ json.add("payload", array);
+ StringWriter writer = new StringWriter();
+ Json.createGenerator(writer).write(json.build()).close();
+ return writer.toString();
} catch (InvalidKeyException e) {
e.printStackTrace();
throw new IOException("Unable to Encrypt Message " + e.getMessage());
@@ -154,7 +166,7 @@ public class TopologyRequestValidator {
throw new IOException("Unable to Encrypt Message " + e.getMessage());
} catch (NoSuchPaddingException e) {
throw new IOException("Unable to Encrypt Message " + e.getMessage());
- } catch (JSONException e) {
+ } catch (JsonException e) {
throw new IOException("Unable to Encrypt Message " + e.getMessage());
} catch (InvalidKeySpecException e) {
throw new IOException("Unable to Encrypt Message " + e.getMessage());
@@ -211,11 +223,11 @@ public class TopologyRequestValidator {
if (bodyHash.equals(requestHash)) {
if (encryptionEnabled) {
try {
- JSONObject json = new JSONObject(body);
- if (json.has("payload")) {
- return decrypt(json.getJSONArray("payload"));
+ JsonObject json = Json.createReader(new StringReader(body)).readObject();
+ if (json.containsKey("payload")) {
+ return decrypt(json.getJsonArray("payload"));
}
- } catch (JSONException e) {
+ } catch (JsonException e) {
throw new IOException("Encrypted Message is in the correct json format");
} catch (InvalidKeyException e) {
throw new IOException("Encrypted Message is in the correct json format");
@@ -418,9 +430,9 @@ public class TopologyRequestValidator {
* @throws InvalidAlgorithmParameterException
* @throws JSONException
*/
- private String decrypt(JSONArray jsonArray) throws IllegalBlockSizeException,
+ private String decrypt(JsonArray jsonArray) throws IllegalBlockSizeException,
BadPaddingException, UnsupportedEncodingException, InvalidKeyException,
- NoSuchAlgorithmException, NoSuchPaddingException, InvalidAlgorithmParameterException, InvalidKeySpecException, JSONException {
+ NoSuchAlgorithmException, NoSuchPaddingException, InvalidAlgorithmParameterException, InvalidKeySpecException {
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, getCiperKey(Base64.decodeBase64(jsonArray.getString(0).getBytes("UTF-8"))), new IvParameterSpec(Base64.decodeBase64(jsonArray.getString(1).getBytes("UTF-8"))));
return new String(cipher.doFinal(Base64.decodeBase64(jsonArray.getString(2).getBytes("UTF-8"))));
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.