You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by bd...@apache.org on 2021/09/15 17:14:46 UTC
[sling-whiteboard] branch master updated: Get ResourceResolver from
request attributes
This is an automated email from the ASF dual-hosted git repository.
bdelacretaz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-whiteboard.git
The following commit(s) were added to refs/heads/master by this push:
new d4bd30a Get ResourceResolver from request attributes
d4bd30a is described below
commit d4bd30a9fb68f96596a681f1aaaa52cbaa99a410
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Wed Sep 15 19:14:13 2021 +0200
Get ResourceResolver from request attributes
---
.../java/org/apache/sling/jaxrs/TestService.java | 27 +++++++++++++++++++---
.../features/feature-aries-jars-sample.json | 5 ++++
2 files changed, 29 insertions(+), 3 deletions(-)
diff --git a/aries-jax-rs-whiteboard/src/main/java/org/apache/sling/jaxrs/TestService.java b/aries-jax-rs-whiteboard/src/main/java/org/apache/sling/jaxrs/TestService.java
index e862041..d865f63 100644
--- a/aries-jax-rs-whiteboard/src/main/java/org/apache/sling/jaxrs/TestService.java
+++ b/aries-jax-rs-whiteboard/src/main/java/org/apache/sling/jaxrs/TestService.java
@@ -18,13 +18,18 @@
*/
package org.apache.sling.jaxrs;
+import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.resource.ResourceResolver;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsResource;
@@ -37,10 +42,26 @@ public class TestService {
static int counter;
@GET
+ @Path("/sling/resource")
+ public String getResource(@Context HttpServletRequest request, @QueryParam("path") String path) throws Exception {
+ final Object obj = request.getAttribute("org.apache.sling.auth.core.ResourceResolver");
+ try (ResourceResolver rr = obj instanceof ResourceResolver ? (ResourceResolver)obj : null) {
+ if(rr == null) {
+ throw new Exception("ResourceResolver not available");
+ }
+ final Resource r = rr.getResource(path);
+ if(r == null) {
+ throw new Exception(String.format("Resource %s not found", path));
+ }
+ return String.format("Got Resource %s of type %s%n", r.getPath(), r.getResourceType());
+ }
+ }
+
+ @GET
@Path("/{one}")
public String getOne(@PathParam("one") String one) {
return String.format(
- "The single input was %s (%d characters) and the counter is %d",
+ "The single input was %s (%d characters) and the counter is %d%n",
one, one.length(), counter);
}
@@ -48,7 +69,7 @@ public class TestService {
@Path("/{one}/{two}")
public String getTwo(@PathParam("one") String one, @PathParam("two") String two) {
return String.format(
- "The dual input was %s and %s and the counter is %d",
+ "The dual input was %s and %s and the counter is %d%n",
one, two, counter);
}
@@ -57,7 +78,7 @@ public class TestService {
public static String incrementCounter(@PathParam("howMuch") int howMuch) {
counter += howMuch;
return String.format(
- "The counter has been incremented by %d and is now %d",
+ "The counter has been incremented by %d and is now %d%n",
howMuch, counter);
}
}
\ No newline at end of file
diff --git a/aries-jax-rs-whiteboard/src/test/resources/features/feature-aries-jars-sample.json b/aries-jax-rs-whiteboard/src/test/resources/features/feature-aries-jars-sample.json
index 0820bd3..7753621 100644
--- a/aries-jax-rs-whiteboard/src/test/resources/features/feature-aries-jars-sample.json
+++ b/aries-jax-rs-whiteboard/src/test/resources/features/feature-aries-jars-sample.json
@@ -65,12 +65,17 @@
}
},
"repoinit:TEXT|true":[
+ "create user jaxrs with password jaxrs",
"create path /api/sling",
"set ACL on /api",
"allow jcr:read for everyone",
"end",
"set properties on /api/sling",
"set info to \"This resource is served by Sling\"",
+ "set sling:resourceType to api/sling/test",
+ "end",
+ "set ACL on /api/sling",
+ "deny jcr:read for jaxrs",
"end"
]
}
\ No newline at end of file