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:49:15 UTC
[sling-org-apache-sling-jcr-jackrabbit-accessmanager] 10/14:
SLING-6684: Replace commons.json usage in
org.apache.sling.jcr.jackrabbit.accessmanager
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.jcr.jackrabbit.accessmanager-3.0.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-jcr-jackrabbit-accessmanager.git
commit 5e333e866d3fe9a5e9e838f63003ae0859cb4de8
Author: Karl Pauls <pa...@apache.org>
AuthorDate: Tue Mar 28 13:02:40 2017 +0000
SLING-6684: Replace commons.json usage in org.apache.sling.jcr.jackrabbit.accessmanager
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/bundles/jcr/jackrabbit-accessmanager@1789115 13f79535-47bb-0310-9956-ffa450edef68
---
pom.xml | 22 +++---
.../sling/jcr/jackrabbit/accessmanager/GetAcl.java | 8 +-
.../jackrabbit/accessmanager/GetEffectiveAcl.java | 8 +-
.../jcr/jackrabbit/accessmanager/package-info.java | 2 +-
.../accessmanager/post/AbstractGetAclServlet.java | 92 ++++++++++++++++------
.../accessmanager/post/GetAclServlet.java | 7 +-
.../accessmanager/post/GetEffectiveAclServlet.java | 7 +-
.../accessmanager/post/package-info.java | 2 +-
8 files changed, 95 insertions(+), 53 deletions(-)
diff --git a/pom.xml b/pom.xml
index f852f82..0578dfc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -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>
diff --git a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/GetAcl.java b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/GetAcl.java
index 5bae6d4..be9d415 100644
--- a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/GetAcl.java
+++ b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/GetAcl.java
@@ -20,9 +20,7 @@ package org.apache.sling.jcr.jackrabbit.accessmanager;
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;
}
diff --git a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/GetEffectiveAcl.java b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/GetEffectiveAcl.java
index 2a68a33..c192df0 100644
--- a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/GetEffectiveAcl.java
+++ b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/GetEffectiveAcl.java
@@ -20,9 +20,7 @@ package org.apache.sling.jcr.jackrabbit.accessmanager;
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;
}
diff --git a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/package-info.java b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/package-info.java
index f3c7621..5119ee5 100644
--- a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/package-info.java
+++ b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/package-info.java
@@ -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;
diff --git a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/AbstractGetAclServlet.java b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/AbstractGetAclServlet.java
index 204aaff..fd06c0d 100644
--- a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/AbstractGetAclServlet.java
+++ b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/AbstractGetAclServlet.java
@@ -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.SlingHttpServletRequest;
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 AbstractGetAclServlet extends SlingAllMethodsServlet {
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 AbstractGetAclServlet extends SlingAllMethodsServlet {
}
}
- 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 AbstractGetAclServlet extends SlingAllMethodsServlet {
}
@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 AbstractGetAclServlet extends SlingAllMethodsServlet {
}
}
- 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;
}
/**
diff --git a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetAclServlet.java b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetAclServlet.java
index ba490a9..2bd7ba8 100644
--- a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetAclServlet.java
+++ b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetAclServlet.java
@@ -25,10 +25,9 @@ import javax.jcr.security.AccessControlEntry;
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 AbstractGetAclServlet implements GetAcl {
/* (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);
}
diff --git a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetEffectiveAclServlet.java b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetEffectiveAclServlet.java
index 3a4c6cd..3938fc8 100644
--- a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetEffectiveAclServlet.java
+++ b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/GetEffectiveAclServlet.java
@@ -25,10 +25,9 @@ import javax.jcr.security.AccessControlEntry;
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 extends AbstractGetAclServlet implements Get
/* (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);
}
diff --git a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/package-info.java b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/package-info.java
index 91d1967..c0361a1 100644
--- a/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/package-info.java
+++ b/src/main/java/org/apache/sling/jcr/jackrabbit/accessmanager/post/package-info.java
@@ -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;
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.