You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ol...@apache.org on 2019/06/02 08:21:39 UTC

[sling-org-apache-sling-clam] 02/09: SLING-8258 Provide HTTP API for Sling Clam

This is an automated email from the ASF dual-hosted git repository.

olli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-clam.git

commit c3cd5ab21b3d76cec56b780c5cfc4f7d98ca7f79
Author: Oliver Lietz <ol...@apache.org>
AuthorDate: Fri May 31 18:30:51 2019 +0200

    SLING-8258 Provide HTTP API for Sling Clam
    
    * rename scan servlet
    * change path
    * use constants
    * add debug logging
---
 pom.xml                                            | 11 ++++++++++
 ...lamScanServlet.java => ClamJcrScanServlet.java} | 25 ++++++++++++----------
 ...n.java => ClamJcrScanServletConfiguration.java} |  4 ++--
 3 files changed, 27 insertions(+), 13 deletions(-)

diff --git a/pom.xml b/pom.xml
index 2467452..0e571d1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -177,6 +177,12 @@
     </dependency>
     <dependency>
       <groupId>org.apache.sling</groupId>
+      <artifactId>org.apache.sling.auth.core</artifactId>
+      <version>1.2.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.sling</groupId>
       <artifactId>org.apache.sling.event</artifactId>
       <version>4.2.10</version>
       <scope>provided</scope>
@@ -195,6 +201,11 @@
     </dependency>
     <dependency>
       <groupId>org.apache.sling</groupId>
+      <artifactId>org.apache.sling.servlets.resolver</artifactId>
+      <version>2.1.0</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.sling</groupId>
       <artifactId>org.apache.sling.serviceusermapper</artifactId>
       <version>1.3.0</version>
       <scope>provided</scope>
diff --git a/src/main/java/org/apache/sling/clam/http/internal/ClamScanServlet.java b/src/main/java/org/apache/sling/clam/http/internal/ClamJcrScanServlet.java
similarity index 83%
rename from src/main/java/org/apache/sling/clam/http/internal/ClamScanServlet.java
rename to src/main/java/org/apache/sling/clam/http/internal/ClamJcrScanServlet.java
index 837acff..02be234 100644
--- a/src/main/java/org/apache/sling/clam/http/internal/ClamScanServlet.java
+++ b/src/main/java/org/apache/sling/clam/http/internal/ClamJcrScanServlet.java
@@ -32,7 +32,9 @@ import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.SlingHttpServletResponse;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.servlets.SlingAllMethodsServlet;
+import org.apache.sling.auth.core.AuthConstants;
 import org.apache.sling.clam.jcr.NodeDescendingJcrPropertyDigger;
+import org.apache.sling.servlets.resolver.internal.ServletResolverConstants;
 import org.jetbrains.annotations.NotNull;
 import org.osgi.framework.Constants;
 import org.osgi.service.component.annotations.Activate;
@@ -57,16 +59,16 @@ import static org.apache.sling.clam.internal.ClamUtil.propertyTypesFromNames;
 @Component(
     service = Servlet.class,
     property = {
-        Constants.SERVICE_DESCRIPTION + "=Apache Sling Clam Scan Servlet",
+        Constants.SERVICE_DESCRIPTION + "=Apache Sling Clam JCR Scan Servlet",
         Constants.SERVICE_VENDOR + "=The Apache Software Foundation",
-        "sling.servlet.paths=/bin/clam/scan",
-        "sling.auth.requirements=/bin/clam/scan"
+        ServletResolverConstants.SLING_SERVLET_PATHS + "=/system/clam-jcr-scan",
+        AuthConstants.AUTH_REQUIREMENTS + "=/system/clam-jcr-scan"
     }
 )
 @Designate(
-    ocd = ClamScanServletConfiguration.class
+    ocd = ClamJcrScanServletConfiguration.class
 )
-public class ClamScanServlet extends SlingAllMethodsServlet {
+public class ClamJcrScanServlet extends SlingAllMethodsServlet {
 
     @Reference(
         policy = ReferencePolicy.DYNAMIC,
@@ -74,26 +76,26 @@ public class ClamScanServlet extends SlingAllMethodsServlet {
     )
     private volatile NodeDescendingJcrPropertyDigger digger;
 
-    private ClamScanServletConfiguration configuration;
+    private ClamJcrScanServletConfiguration configuration;
 
     private Pattern pattern;
 
     private Set<Integer> propertyTypes;
 
-    private final Logger logger = LoggerFactory.getLogger(ClamScanServlet.class);
+    private final Logger logger = LoggerFactory.getLogger(ClamJcrScanServlet.class);
 
-    public ClamScanServlet() {
+    public ClamJcrScanServlet() {
     }
 
     @Activate
-    private void activate(final ClamScanServletConfiguration configuration) throws Exception {
+    private void activate(final ClamJcrScanServletConfiguration configuration) throws Exception {
         logger.debug("activating");
         this.configuration = configuration;
         configure(configuration);
     }
 
     @Modified
-    private void modified(final ClamScanServletConfiguration configuration) throws Exception {
+    private void modified(final ClamJcrScanServletConfiguration configuration) throws Exception {
         logger.debug("modifying");
         this.configuration = configuration;
         configure(configuration);
@@ -107,7 +109,7 @@ public class ClamScanServlet extends SlingAllMethodsServlet {
         propertyTypes = null;
     }
 
-    private void configure(final ClamScanServletConfiguration configuration) throws Exception {
+    private void configure(final ClamJcrScanServletConfiguration configuration) throws Exception {
         pattern = Pattern.compile(configuration.digger_default_property_path_pattern());
         propertyTypes = propertyTypesFromNames(configuration.digger_default_property_types());
     }
@@ -154,6 +156,7 @@ public class ClamScanServlet extends SlingAllMethodsServlet {
         }
 
         try {
+            logger.debug("digging in {} (not deeper than {} levels) for properties of types {} matching {} limited by {} bytes", node.getPath(), maxDepth, propertyTypes, pattern, maxLength);
             digger.dig(node, pattern, propertyTypes, maxLength, maxDepth);
         } catch (Exception e) {
             handleError(response, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage());
diff --git a/src/main/java/org/apache/sling/clam/http/internal/ClamScanServletConfiguration.java b/src/main/java/org/apache/sling/clam/http/internal/ClamJcrScanServletConfiguration.java
similarity index 96%
rename from src/main/java/org/apache/sling/clam/http/internal/ClamScanServletConfiguration.java
rename to src/main/java/org/apache/sling/clam/http/internal/ClamJcrScanServletConfiguration.java
index 9fcf4ec..b8b9b76 100644
--- a/src/main/java/org/apache/sling/clam/http/internal/ClamScanServletConfiguration.java
+++ b/src/main/java/org/apache/sling/clam/http/internal/ClamJcrScanServletConfiguration.java
@@ -23,10 +23,10 @@ import org.osgi.service.metatype.annotations.ObjectClassDefinition;
 import org.osgi.service.metatype.annotations.Option;
 
 @ObjectClassDefinition(
-    name = "Apache Sling Clam Scan Servlet",
+    name = "Apache Sling Clam JCR Scan Servlet",
     description = "..."
 )
-@interface ClamScanServletConfiguration {
+@interface ClamJcrScanServletConfiguration {
 
     @AttributeDefinition(
         name = "scan authorized groups",