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();
+    }
+    
 
 }


Reply via email to