Author: pauls
Date: Tue Mar 28 13:02:40 2017
New Revision: 1789115

URL: http://svn.apache.org/viewvc?rev=1789115&view=rev
Log:
SLING-6684: Replace commons.json usage in 
org.apache.sling.jcr.jackrabbit.accessmanager

Modified:
    sling/trunk/bundles/jcr/jackrabbit-accessmanager/pom.xml
    
sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/GetAcl.java
    
sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/GetEffectiveAcl.java
    
sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/package-info.java
    
sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/AbstractGetAclServlet.java
    
sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetAclServlet.java
    
sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetEffectiveAclServlet.java
    
sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/package-info.java

Modified: sling/trunk/bundles/jcr/jackrabbit-accessmanager/pom.xml
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-accessmanager/pom.xml?rev=1789115&r1=1789114&r2=1789115&view=diff
==============================================================================
--- sling/trunk/bundles/jcr/jackrabbit-accessmanager/pom.xml (original)
+++ sling/trunk/bundles/jcr/jackrabbit-accessmanager/pom.xml Tue Mar 28 
13:02:40 2017
@@ -29,7 +29,7 @@
 
     <artifactId>org.apache.sling.jcr.jackrabbit.accessmanager</artifactId>
     <packaging>bundle</packaging>
-    <version>2.1.3-SNAPSHOT</version>
+    <version>3.0.1-SNAPSHOT</version>
     <name>Apache Sling Jackrabbit JSR-283 Access Control Manager Support</name>
     <description>
         Provides SlingPostOperations for the Jackrabbit JSR-283 Access Control 
Manager.
@@ -53,6 +53,10 @@
                 <groupId>org.apache.felix</groupId>
                 <artifactId>maven-bundle-plugin</artifactId>
                 <extensions>true</extensions>
+                <configuration>
+                    <instructions>
+                    </instructions>
+                </configuration>
             </plugin>
         </plugins>
     </build>
@@ -62,14 +66,6 @@
             <groupId>javax.servlet</groupId>
             <artifactId>javax.servlet-api</artifactId>
         </dependency>
-
-        <dependency>
-            <groupId>org.apache.sling</groupId>
-            <artifactId>org.apache.sling.commons.json</artifactId>
-            <version>2.0.4-incubator</version>
-            <scope>provided</scope>
-        </dependency>
-
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.api</artifactId>
@@ -85,7 +81,7 @@
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.servlets.post</artifactId>
-            <version>2.1.2</version>
+            <version>2.3.15-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
@@ -103,5 +99,11 @@
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-api</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>
     </dependencies>
 </project>

Modified: 
sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/GetAcl.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/GetAcl.java?rev=1789115&r1=1789114&r2=1789115&view=diff
==============================================================================
--- 
sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/GetAcl.java
 (original)
+++ 
sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/GetAcl.java
 Tue Mar 28 13:02:40 2017
@@ -20,9 +20,7 @@ package org.apache.sling.jcr.jackrabbit.
 
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
-
-import org.apache.sling.commons.json.JSONException;
-import org.apache.sling.commons.json.JSONObject;
+import javax.json.JsonObject;
 
 /**
  * The <code>GetAcl</code> service api.
@@ -41,8 +39,8 @@ public interface GetAcl {
      * @return the ACL as a JSON object 
         * @throws RepositoryException
         */
-       JSONObject getAcl(Session jcrSession,
+       JsonObject getAcl(Session jcrSession,
                                                        String resourcePath
-                               ) throws RepositoryException, JSONException;
+                               ) throws RepositoryException;
        
 }

Modified: 
sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/GetEffectiveAcl.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/GetEffectiveAcl.java?rev=1789115&r1=1789114&r2=1789115&view=diff
==============================================================================
--- 
sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/GetEffectiveAcl.java
 (original)
+++ 
sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/GetEffectiveAcl.java
 Tue Mar 28 13:02:40 2017
@@ -20,9 +20,7 @@ package org.apache.sling.jcr.jackrabbit.
 
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
-
-import org.apache.sling.commons.json.JSONException;
-import org.apache.sling.commons.json.JSONObject;
+import javax.json.JsonObject;
 
 /**
  * The <code>GetAcl</code> service api.
@@ -41,8 +39,8 @@ public interface GetEffectiveAcl {
      * @return the ACL as a JSON object 
         * @throws RepositoryException
         */
-       JSONObject getEffectiveAcl(Session jcrSession,
+       JsonObject getEffectiveAcl(Session jcrSession,
                                                        String resourcePath
-                               ) throws RepositoryException, JSONException;
+                               ) throws RepositoryException;
        
 }

Modified: 
sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/package-info.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/package-info.java?rev=1789115&r1=1789114&r2=1789115&view=diff
==============================================================================
--- 
sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/package-info.java
 (original)
+++ 
sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/package-info.java
 Tue Mar 28 13:02:40 2017
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-@org.osgi.annotation.versioning.Version("2.1.1")
+@org.osgi.annotation.versioning.Version("3.0.0")
 package org.apache.sling.jcr.jackrabbit.accessmanager;
 
 

Modified: 
sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/AbstractGetAclServlet.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/AbstractGetAclServlet.java?rev=1789115&r1=1789114&r2=1789115&view=diff
==============================================================================
--- 
sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/AbstractGetAclServlet.java
 (original)
+++ 
sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/AbstractGetAclServlet.java
 Tue Mar 28 13:02:40 2017
@@ -36,6 +36,12 @@ import javax.jcr.Session;
 import javax.jcr.security.AccessControlEntry;
 import javax.jcr.security.AccessControlManager;
 import javax.jcr.security.Privilege;
+import javax.json.Json;
+import javax.json.JsonArrayBuilder;
+import javax.json.JsonObject;
+import javax.json.JsonObjectBuilder;
+import javax.json.JsonValue;
+import javax.json.stream.JsonGenerator;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletResponse;
 
@@ -43,8 +49,6 @@ import org.apache.sling.api.SlingHttpSer
 import org.apache.sling.api.SlingHttpServletResponse;
 import org.apache.sling.api.resource.ResourceNotFoundException;
 import org.apache.sling.api.servlets.SlingAllMethodsServlet;
-import org.apache.sling.commons.json.JSONException;
-import org.apache.sling.commons.json.JSONObject;
 import org.apache.sling.jcr.base.util.AccessControlUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -69,7 +73,7 @@ public abstract class AbstractGetAclServ
                        Session session = 
request.getResourceResolver().adaptTo(Session.class);
                String resourcePath = request.getResource().getPath();
 
-               JSONObject acl = internalGetAcl(session, resourcePath);
+               JsonObject acl = internalGetAcl(session, resourcePath);
                response.setContentType("application/json");
                response.setCharacterEncoding("UTF-8");
 
@@ -84,11 +88,9 @@ public abstract class AbstractGetAclServ
                                }
                }
 
-               if (isTidy) {
-                       response.getWriter().append(acl.toString(2));
-               } else {
-                       acl.write(response.getWriter());
-               }
+               Map<String, Object> options = new HashMap<>();
+            options.put(JsonGenerator.PRETTY_PRINTING, isTidy);
+               
Json.createGeneratorFactory(options).createGenerator(response.getWriter()).write(acl).flush();
         } catch (AccessDeniedException ade) {
             response.sendError(HttpServletResponse.SC_NOT_FOUND);
         } catch (ResourceNotFoundException rnfe) {
@@ -102,8 +104,7 @@ public abstract class AbstractGetAclServ
     }
 
     @SuppressWarnings("unchecked")
-       protected JSONObject internalGetAcl(Session jcrSession, String 
resourcePath)
-                       throws RepositoryException, JSONException {
+       protected JsonObject internalGetAcl(Session jcrSession, String 
resourcePath) throws RepositoryException {
 
         if (jcrSession == null) {
             throw new RepositoryException("JCR Session not found");
@@ -184,33 +185,78 @@ public abstract class AbstractGetAclServ
             }
         }
 
-        List<JSONObject> aclList = new ArrayList<JSONObject>();
+        List<JsonObject> aclList = new ArrayList<>();
         Set<Entry<String, Map<String, Object>>> entrySet = aclMap.entrySet();
         for (Entry<String, Map<String, Object>> entry : entrySet) {
             String principalName = entry.getKey();
             Map<String, Object> value = entry.getValue();
 
-            JSONObject aceObject = new JSONObject();
-            aceObject.put("principal", principalName);
+            JsonObjectBuilder aceObject = Json.createObjectBuilder();
+            aceObject.add("principal", principalName);
 
-            Set<String> grantedSet = (Set<String>) value.get("granted");
+            Set<Privilege> grantedSet = (Set<Privilege>) value.get("granted");
             if (grantedSet != null && !grantedSet.isEmpty()) {
-                aceObject.put("granted", grantedSet);
+                JsonArrayBuilder arrayBuilder = Json.createArrayBuilder();
+                for (Privilege v : grantedSet)
+                {
+                    arrayBuilder.add(v.getName());
+                }
+                aceObject.add("granted", arrayBuilder);
             }
 
-            Set<String> deniedSet = (Set<String>) value.get("denied");
+            Set<Privilege> deniedSet = (Set<Privilege>) value.get("denied");
             if (deniedSet != null && !deniedSet.isEmpty()) {
-                aceObject.put("denied", deniedSet);
+                JsonArrayBuilder arrayBuilder = Json.createArrayBuilder();
+                for (Privilege v : deniedSet)
+                {
+                    arrayBuilder.add(v.getName());
+                }
+                aceObject.add("denied", arrayBuilder);
             }
-            aceObject.put("order", value.get("order"));
-            aclList.add(aceObject);
+            aceObject.add("order", (Integer) value.get("order"));
+            aclList.add(aceObject.build());
         }
-        JSONObject jsonAclMap = new JSONObject(aclMap);
-        for ( JSONObject jsonObj : aclList) {
-               jsonAclMap.put(jsonObj.getString("principal"), jsonObj);
+        JsonObjectBuilder jsonAclMap = Json.createObjectBuilder();
+        for (Map.Entry<String, Map<String, Object>> entry : aclMap.entrySet())
+        {
+            JsonObjectBuilder builder = Json.createObjectBuilder();
+            for (Map.Entry<String, Object> inner : entry.getValue().entrySet())
+            {
+                addTo(builder, inner.getKey(), inner.getValue());
+            }
+            jsonAclMap.add(entry.getKey(), builder);
+        }
+        for (JsonObject jsonObj : aclList) {
+            jsonAclMap.add(jsonObj.getString("principal"), jsonObj);
         }
 
-        return jsonAclMap;
+        return jsonAclMap.build();
+    }
+    
+    private JsonObjectBuilder addTo(JsonObjectBuilder builder, String key, 
Object value) {
+        if (value instanceof Byte || value instanceof Short || value 
instanceof Integer || value instanceof Long)
+        {
+            builder.add(key, ((Number) value).longValue());
+        }
+        else if (value instanceof Float || value instanceof Double)
+        {
+            builder.add(key, ((Number) value).doubleValue());
+        }
+        else if (value instanceof Privilege)
+        {
+            JsonObjectBuilder privilegeBuilder = Json.createObjectBuilder();
+            privilegeBuilder.add("name", ((Privilege) value).getName());
+            builder.add(key, privilegeBuilder);
+        }
+        else if (value instanceof String)
+        {
+            builder.add(key, (String) value);
+        }
+        else
+        {
+            builder.add(key, value.toString());
+        }
+        return builder;
     }
 
        /**

Modified: 
sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetAclServlet.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetAclServlet.java?rev=1789115&r1=1789114&r2=1789115&view=diff
==============================================================================
--- 
sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetAclServlet.java
 (original)
+++ 
sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetAclServlet.java
 Tue Mar 28 13:02:40 2017
@@ -25,10 +25,9 @@ import javax.jcr.security.AccessControlE
 import javax.jcr.security.AccessControlList;
 import javax.jcr.security.AccessControlManager;
 import javax.jcr.security.AccessControlPolicy;
+import javax.json.JsonObject;
 import javax.servlet.Servlet;
 
-import org.apache.sling.commons.json.JSONException;
-import org.apache.sling.commons.json.JSONObject;
 import org.apache.sling.jcr.base.util.AccessControlUtil;
 import org.apache.sling.jcr.jackrabbit.accessmanager.GetAcl;
 import org.osgi.service.component.annotations.Component;
@@ -112,8 +111,8 @@ public class GetAclServlet extends Abstr
        /* (non-Javadoc)
         * @see 
org.apache.sling.jcr.jackrabbit.accessmanager.GetAcl#getAcl(javax.jcr.Session, 
java.lang.String)
         */
-       public JSONObject getAcl(Session jcrSession, String resourcePath)
-                       throws RepositoryException, JSONException {
+       public JsonObject getAcl(Session jcrSession, String resourcePath)
+                       throws RepositoryException {
                return internalGetAcl(jcrSession, resourcePath);
        }
 

Modified: 
sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetEffectiveAclServlet.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetEffectiveAclServlet.java?rev=1789115&r1=1789114&r2=1789115&view=diff
==============================================================================
--- 
sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetEffectiveAclServlet.java
 (original)
+++ 
sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetEffectiveAclServlet.java
 Tue Mar 28 13:02:40 2017
@@ -25,10 +25,9 @@ import javax.jcr.security.AccessControlE
 import javax.jcr.security.AccessControlList;
 import javax.jcr.security.AccessControlManager;
 import javax.jcr.security.AccessControlPolicy;
+import javax.json.JsonObject;
 import javax.servlet.Servlet;
 
-import org.apache.sling.commons.json.JSONException;
-import org.apache.sling.commons.json.JSONObject;
 import org.apache.sling.jcr.base.util.AccessControlUtil;
 import org.apache.sling.jcr.jackrabbit.accessmanager.GetEffectiveAcl;
 import org.osgi.service.component.annotations.Component;
@@ -112,8 +111,8 @@ public class GetEffectiveAclServlet exte
     /* (non-Javadoc)
         * @see 
org.apache.sling.jcr.jackrabbit.accessmanager.GetEffectiveAcl#getEffectiveAcl(javax.jcr.Session,
 java.lang.String)
         */
-       public JSONObject getEffectiveAcl(Session jcrSession, String 
resourcePath)
-                       throws RepositoryException, JSONException {
+       public JsonObject getEffectiveAcl(Session jcrSession, String 
resourcePath)
+                       throws RepositoryException {
                return internalGetAcl(jcrSession, resourcePath);
        }
 

Modified: 
sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/package-info.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/package-info.java?rev=1789115&r1=1789114&r2=1789115&view=diff
==============================================================================
--- 
sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/package-info.java
 (original)
+++ 
sling/trunk/bundles/jcr/jackrabbit-accessmanager/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/package-info.java
 Tue Mar 28 13:02:40 2017
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-@org.osgi.annotation.versioning.Version("2.1.2")
+@org.osgi.annotation.versioning.Version("3.0.0")
 package org.apache.sling.jcr.jackrabbit.accessmanager.post;
 
 


Reply via email to