SLING-8258 Provide HTTP API for Sling Clam
* rename scan servlet
* change path
* use constants
* add debug logging
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.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 @@
@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 @@
)
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 @@
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 @@
}
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.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",