You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by pa...@apache.org on 2017/03/28 13:02:40 UTC
svn commit: r1789115 - in /sling/trunk/bundles/jcr/jackrabbit-accessmanager:
./ src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/
src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/
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;