Author: pauls Date: Tue Mar 28 13:03:04 2017 New Revision: 1789118 URL: http://svn.apache.org/viewvc?rev=1789118&view=rev Log: SLING-6690: Replace commons.json usage in org.apache.sling.discovery.commons
Modified: sling/trunk/bundles/extensions/discovery/commons/pom.xml sling/trunk/bundles/extensions/discovery/commons/src/main/java/org/apache/sling/discovery/commons/providers/spi/base/DiscoveryLiteDescriptor.java sling/trunk/bundles/extensions/discovery/commons/src/main/java/org/apache/sling/discovery/commons/providers/spi/base/IdMapService.java sling/trunk/bundles/extensions/discovery/commons/src/main/java/org/apache/sling/discovery/commons/providers/spi/base/OakBacklogClusterSyncService.java sling/trunk/bundles/extensions/discovery/commons/src/test/java/org/apache/sling/discovery/commons/providers/spi/base/DiscoveryLiteDescriptorBuilder.java Modified: sling/trunk/bundles/extensions/discovery/commons/pom.xml URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/commons/pom.xml?rev=1789118&r1=1789117&r2=1789118&view=diff ============================================================================== --- sling/trunk/bundles/extensions/discovery/commons/pom.xml (original) +++ sling/trunk/bundles/extensions/discovery/commons/pom.xml Tue Mar 28 13:03:04 2017 @@ -116,6 +116,12 @@ <version>1.0.0</version> <scope>provided</scope> </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.api</artifactId> @@ -123,12 +129,6 @@ <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>javax.jcr</groupId> <artifactId>jcr</artifactId> <version>2.0</version> Modified: sling/trunk/bundles/extensions/discovery/commons/src/main/java/org/apache/sling/discovery/commons/providers/spi/base/DiscoveryLiteDescriptor.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/commons/src/main/java/org/apache/sling/discovery/commons/providers/spi/base/DiscoveryLiteDescriptor.java?rev=1789118&r1=1789117&r2=1789118&view=diff ============================================================================== --- sling/trunk/bundles/extensions/discovery/commons/src/main/java/org/apache/sling/discovery/commons/providers/spi/base/DiscoveryLiteDescriptor.java (original) +++ sling/trunk/bundles/extensions/discovery/commons/src/main/java/org/apache/sling/discovery/commons/providers/spi/base/DiscoveryLiteDescriptor.java Tue Mar 28 13:03:04 2017 @@ -18,11 +18,18 @@ */ package org.apache.sling.discovery.commons.providers.spi.base; +import java.io.StringReader; +import java.io.StringWriter; +import java.util.HashMap; +import java.util.Map; + import javax.jcr.Session; +import javax.json.Json; +import javax.json.JsonArray; +import javax.json.JsonObject; +import javax.json.JsonReaderFactory; import org.apache.sling.api.resource.ResourceResolver; -import org.apache.sling.commons.json.JSONArray; -import org.apache.sling.commons.json.JSONObject; /** * Simplifies access to the underlying JSON-backed oak discovery-lite descriptor @@ -32,6 +39,12 @@ public class DiscoveryLiteDescriptor { /** TODO: avoid hardcoding the constant here but use an Oak constant class instead if possible */ public static final String OAK_DISCOVERYLITE_CLUSTERVIEW = "oak.discoverylite.clusterview"; + 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); + } /** * {"seq":8,"final":true,"id":"aae34e9a-b08d-409e-be10-9ff4106e5387","me":4,"active":[4],"deactivating":[],"inactive":[1,2,3]} */ @@ -44,14 +57,14 @@ public class DiscoveryLiteDescriptor { if (descriptorStr == null) { throw new Exception("No value available for descriptor " + OAK_DISCOVERYLITE_CLUSTERVIEW); } - JSONObject descriptor = new JSONObject(descriptorStr); + JsonObject descriptor = jsonReaderFactory.createReader(new StringReader(descriptorStr)).readObject(); return new DiscoveryLiteDescriptor(descriptor); } /** the actual descriptor **/ - private final JSONObject descriptor; + private final JsonObject descriptor; - DiscoveryLiteDescriptor(JSONObject descriptor) { + DiscoveryLiteDescriptor(JsonObject descriptor) { this.descriptor = descriptor; } @@ -61,27 +74,15 @@ public class DiscoveryLiteDescriptor { * @throws Exception if anything in the descriptor is wrongly formatted */ public int getMyId() throws Exception { - Object meObj = descriptor.get("me"); - if (meObj == null || !(meObj instanceof Number)) { - throw new Exception("getMyId: 'me' value of descriptor not a Number: "+meObj+" (descriptor: "+descriptor+")"); - } - Number me = (Number)meObj; - return me.intValue(); + return descriptor.getInt("me"); } private int[] getArray(String name) throws Exception { - Object deactivatingObj = descriptor.get(name); - if (deactivatingObj==null || !(deactivatingObj instanceof JSONArray)) { - throw new Exception("getArray: '" + name + "' value of descriptor not an array: "+deactivatingObj+" (descriptor: "+descriptor+")"); - } - JSONArray deactivating = (JSONArray) deactivatingObj; - int[] result = new int[deactivating.length()]; - for(int i=0; i<deactivating.length(); i++) { - Object obj = deactivating.get(i); - if (obj==null || !(obj instanceof Number)) { - throw new Exception("getArray: '" + name + "' at "+i+" null or not a number: "+obj+", (descriptor: "+descriptor+")"); - } - result[i] = ((Number)obj).intValue(); + JsonArray deactivating = descriptor.getJsonArray(name); + + int[] result = new int[deactivating.size()]; + for(int i=0; i<deactivating.size(); i++) { + result[i] = deactivating.getInt(i); } return result; } @@ -115,11 +116,7 @@ public class DiscoveryLiteDescriptor { // so treat this separately and return null here too return null; } - Object idObj = descriptor.get("id"); - if (idObj == null || !(idObj instanceof String)) { - throw new Exception("getViewId: 'id' value of descriptor not a String: "+idObj+" (descriptor: "+descriptor+")"); - } - return String.valueOf(idObj); + return descriptor.getString("id"); } @Override @@ -132,25 +129,17 @@ public class DiscoveryLiteDescriptor { * @return the raw toString of the underlying descriptor */ public String getDescriptorStr() { - return descriptor.toString(); + StringWriter writer = new StringWriter(); + Json.createGenerator(writer).write(descriptor).close(); + return writer.toString(); } public Long getSeqNum() throws Exception { - Object seqObj = descriptor.get("seq"); - if (seqObj == null || !(seqObj instanceof Number)) { - throw new Exception("getSeqNum: 'seq' value of descriptor not a Number: "+seqObj+" (descriptor: "+descriptor+")"); - } - Number seqNum = (Number)seqObj; - return seqNum.longValue(); + return descriptor.getJsonNumber("seq").longValue(); } public boolean isFinal() throws Exception { - Object finalObj = descriptor.get("final"); - if (finalObj == null || !(finalObj instanceof Boolean)) { - throw new Exception("isFinal: 'final' value of descriptor not a Boolean: "+finalObj+" (descriptor: "+descriptor+")"); - } - Boolean isFinal = (Boolean)finalObj; - return isFinal; + return descriptor.getBoolean("final"); } } Modified: sling/trunk/bundles/extensions/discovery/commons/src/main/java/org/apache/sling/discovery/commons/providers/spi/base/IdMapService.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/commons/src/main/java/org/apache/sling/discovery/commons/providers/spi/base/IdMapService.java?rev=1789118&r1=1789117&r2=1789118&view=diff ============================================================================== --- sling/trunk/bundles/extensions/discovery/commons/src/main/java/org/apache/sling/discovery/commons/providers/spi/base/IdMapService.java (original) +++ sling/trunk/bundles/extensions/discovery/commons/src/main/java/org/apache/sling/discovery/commons/providers/spi/base/IdMapService.java Tue Mar 28 13:03:04 2017 @@ -42,7 +42,6 @@ import org.apache.sling.api.resource.Val import org.apache.sling.api.resource.observation.ResourceChangeListener; import org.apache.sling.api.resource.observation.ResourceChange; import org.apache.sling.api.resource.observation.ResourceChange.ChangeType; -import org.apache.sling.commons.json.JSONException; import org.apache.sling.discovery.commons.providers.util.ResourceHelper; import org.apache.sling.settings.SlingSettingsService; import org.osgi.framework.BundleContext; @@ -180,7 +179,7 @@ public class IdMapService extends Abstra return initialized; } - private synchronized boolean init() throws LoginException, JSONException, PersistenceException { + private synchronized boolean init() throws LoginException, PersistenceException { if (initialized) { return true; } Modified: sling/trunk/bundles/extensions/discovery/commons/src/main/java/org/apache/sling/discovery/commons/providers/spi/base/OakBacklogClusterSyncService.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/commons/src/main/java/org/apache/sling/discovery/commons/providers/spi/base/OakBacklogClusterSyncService.java?rev=1789118&r1=1789117&r2=1789118&view=diff ============================================================================== --- sling/trunk/bundles/extensions/discovery/commons/src/main/java/org/apache/sling/discovery/commons/providers/spi/base/OakBacklogClusterSyncService.java (original) +++ sling/trunk/bundles/extensions/discovery/commons/src/main/java/org/apache/sling/discovery/commons/providers/spi/base/OakBacklogClusterSyncService.java Tue Mar 28 13:03:04 2017 @@ -30,7 +30,6 @@ import org.apache.felix.scr.annotations. import org.apache.sling.api.resource.LoginException; import org.apache.sling.api.resource.ResourceResolver; import org.apache.sling.api.resource.ResourceResolverFactory; -import org.apache.sling.commons.json.JSONException; import org.apache.sling.discovery.ClusterView; import org.apache.sling.discovery.InstanceDescription; import org.apache.sling.discovery.commons.providers.BaseTopologyView; Modified: sling/trunk/bundles/extensions/discovery/commons/src/test/java/org/apache/sling/discovery/commons/providers/spi/base/DiscoveryLiteDescriptorBuilder.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/commons/src/test/java/org/apache/sling/discovery/commons/providers/spi/base/DiscoveryLiteDescriptorBuilder.java?rev=1789118&r1=1789117&r2=1789118&view=diff ============================================================================== --- sling/trunk/bundles/extensions/discovery/commons/src/test/java/org/apache/sling/discovery/commons/providers/spi/base/DiscoveryLiteDescriptorBuilder.java (original) +++ sling/trunk/bundles/extensions/discovery/commons/src/test/java/org/apache/sling/discovery/commons/providers/spi/base/DiscoveryLiteDescriptorBuilder.java Tue Mar 28 13:03:04 2017 @@ -18,11 +18,15 @@ */ package org.apache.sling.discovery.commons.providers.spi.base; +import java.io.StringWriter; import java.util.Arrays; +import java.util.List; -import org.apache.sling.commons.json.JSONArray; -import org.apache.sling.commons.json.JSONException; -import org.apache.sling.commons.json.JSONObject; +import javax.json.Json; +import javax.json.JsonArray; +import javax.json.JsonArrayBuilder; +import javax.json.JsonException; +import javax.json.JsonObjectBuilder; // {"seq":8,"final":true,"id":"aae34e9a-b08d-409e-be10-9ff4106e5387","me":4,"active":[4],"deactivating":[],"inactive":[1,2,3]} public class DiscoveryLiteDescriptorBuilder { @@ -43,7 +47,7 @@ public class DiscoveryLiteDescriptorBuil public String toString() { try { return asJson(); - } catch (JSONException e) { + } catch (JsonException e) { return "A DiscoLite["+e+"]"; } } @@ -83,16 +87,33 @@ public class DiscoveryLiteDescriptorBuil return this; } - public String asJson() throws JSONException { - JSONObject json = new JSONObject(); - json.put("id", id); - json.put("final", isFinal); - json.put("me", me); - json.put("seq", seqNum); - json.put("active", new JSONArray(Arrays.asList(activeIds))); - json.put("inactive", new JSONArray(Arrays.asList(inactiveIds))); - json.put("deactivating", new JSONArray(Arrays.asList(deactivating))); - return json.toString(); + public String asJson() { + JsonObjectBuilder json = Json.createObjectBuilder(); + if (id != null) + { + json.add("id", id); + } + json.add("final", isFinal); + json.add("me", me); + json.add("seq", seqNum); + json.add("active", toArray(Arrays.asList(activeIds))); + json.add("inactive", toArray(Arrays.asList(inactiveIds))); + json.add("deactivating", toArray(Arrays.asList(deactivating))); + StringWriter writer = new StringWriter(); + + Json.createGenerator(writer).write(json.build()).close(); + + return writer.toString(); } + + private JsonArray toArray(List<Integer> values) { + JsonArrayBuilder builder = Json.createArrayBuilder(); + for (Integer value : values) + { + builder.add(value); + } + return builder.build(); + } + }