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/08/17 07:49:09 UTC

[sling-org-apache-sling-clam] 03/12: 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 2e6edc8935d078f54564b87a5485e28a5425ac5c
Author: Oliver Lietz <ol...@apache.org>
AuthorDate: Sat Jul 27 09:40:51 2019 +0200

    SLING-8258 Provide HTTP API for Sling Clam
    
    * Make servlet paths and auth configurable
---
 pom.xml                                            | 11 ------
 .../clam/http/internal/ClamEventsServlet.java      |  9 ++---
 .../internal/ClamEventsServletConfiguration.java   | 42 ++++++++++++++++++++++
 .../clam/http/internal/ClamJcrScanServlet.java     |  6 +---
 .../internal/ClamJcrScanServletConfiguration.java  | 14 +++++++-
 5 files changed, 61 insertions(+), 21 deletions(-)

diff --git a/pom.xml b/pom.xml
index 8c8c290..fdf19c2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -188,12 +188,6 @@
     </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>
@@ -212,11 +206,6 @@
     </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/ClamEventsServlet.java b/src/main/java/org/apache/sling/clam/http/internal/ClamEventsServlet.java
index 6d36c5e..d62d2b8 100644
--- a/src/main/java/org/apache/sling/clam/http/internal/ClamEventsServlet.java
+++ b/src/main/java/org/apache/sling/clam/http/internal/ClamEventsServlet.java
@@ -38,7 +38,6 @@ import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import org.apache.sling.auth.core.AuthConstants;
 import org.apache.sling.clam.result.JcrPropertyScanResultHandler;
 import org.apache.sling.commons.clam.ScanResult;
 import org.jetbrains.annotations.NotNull;
@@ -46,6 +45,7 @@ import org.jetbrains.annotations.Nullable;
 import org.osgi.framework.Constants;
 import org.osgi.service.component.annotations.Component;
 import org.osgi.service.http.whiteboard.HttpWhiteboardConstants;
+import org.osgi.service.metatype.annotations.Designate;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -60,11 +60,12 @@ import static org.apache.sling.clam.http.internal.ResponseUtil.json;
         Constants.SERVICE_DESCRIPTION + "=Apache Sling Clam Events Servlet",
         Constants.SERVICE_VENDOR + "=The Apache Software Foundation",
         HttpWhiteboardConstants.HTTP_WHITEBOARD_CONTEXT_SELECT + "=(osgi.http.whiteboard.context.name=org.osgi.service.http)",
-        HttpWhiteboardConstants.HTTP_WHITEBOARD_SERVLET_PATTERN + "=/system/clam-events",
-        HttpWhiteboardConstants.HTTP_WHITEBOARD_SERVLET_ASYNC_SUPPORTED + "=true",
-        AuthConstants.AUTH_REQUIREMENTS + "=/system/clam-events"
+        HttpWhiteboardConstants.HTTP_WHITEBOARD_SERVLET_ASYNC_SUPPORTED + "=true"
     }
 )
+@Designate(
+    ocd = ClamEventsServletConfiguration.class
+)
 public class ClamEventsServlet extends HttpServlet implements JcrPropertyScanResultHandler {
 
     private List<Client> clients = Collections.synchronizedList(new ArrayList<>());
diff --git a/src/main/java/org/apache/sling/clam/http/internal/ClamEventsServletConfiguration.java b/src/main/java/org/apache/sling/clam/http/internal/ClamEventsServletConfiguration.java
new file mode 100644
index 0000000..1e57ded
--- /dev/null
+++ b/src/main/java/org/apache/sling/clam/http/internal/ClamEventsServletConfiguration.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sling.clam.http.internal;
+
+import org.osgi.service.metatype.annotations.AttributeDefinition;
+import org.osgi.service.metatype.annotations.ObjectClassDefinition;
+
+@ObjectClassDefinition(
+    name = "Apache Sling Clam Events Servlet",
+    description = "TODO"
+)
+@interface ClamEventsServletConfiguration {
+
+    @AttributeDefinition(
+        name = "TODO",
+        description = "TODO"
+    )
+    String[] osgi_http_whiteboard_servlet_pattern() default {"/system/clam-events"};
+
+    @AttributeDefinition(
+        name = "TODO",
+        description = "TODO"
+    )
+    String[] sling_auth_requirements() default {"/system/clam-events"};
+
+}
diff --git a/src/main/java/org/apache/sling/clam/http/internal/ClamJcrScanServlet.java b/src/main/java/org/apache/sling/clam/http/internal/ClamJcrScanServlet.java
index 0da7131..bebdb7e 100644
--- a/src/main/java/org/apache/sling/clam/http/internal/ClamJcrScanServlet.java
+++ b/src/main/java/org/apache/sling/clam/http/internal/ClamJcrScanServlet.java
@@ -33,9 +33,7 @@ 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;
@@ -62,9 +60,7 @@ import static org.apache.sling.clam.internal.ClamUtil.propertyTypesFromNames;
     service = Servlet.class,
     property = {
         Constants.SERVICE_DESCRIPTION + "=Apache Sling Clam JCR Scan Servlet",
-        Constants.SERVICE_VENDOR + "=The Apache Software Foundation",
-        ServletResolverConstants.SLING_SERVLET_PATHS + "=/system/clam-jcr-scan",
-        AuthConstants.AUTH_REQUIREMENTS + "=/system/clam-jcr-scan"
+        Constants.SERVICE_VENDOR + "=The Apache Software Foundation"
     }
 )
 @Designate(
diff --git a/src/main/java/org/apache/sling/clam/http/internal/ClamJcrScanServletConfiguration.java b/src/main/java/org/apache/sling/clam/http/internal/ClamJcrScanServletConfiguration.java
index 348580f..77b0e06 100644
--- a/src/main/java/org/apache/sling/clam/http/internal/ClamJcrScanServletConfiguration.java
+++ b/src/main/java/org/apache/sling/clam/http/internal/ClamJcrScanServletConfiguration.java
@@ -24,11 +24,23 @@ import org.osgi.service.metatype.annotations.Option;
 
 @ObjectClassDefinition(
     name = "Apache Sling Clam JCR Scan Servlet",
-    description = "..."
+    description = "TODO"
 )
 @interface ClamJcrScanServletConfiguration {
 
     @AttributeDefinition(
+        name = "TODO",
+        description = "TODO"
+    )
+    String[] sling_servlet_paths() default {"/system/clam-jcr-scan"};
+
+    @AttributeDefinition(
+        name = "TODO",
+        description = "TODO"
+    )
+    String[] sling_auth_requirements() default {"/system/clam-jcr-scan"};
+
+    @AttributeDefinition(
         name = "scan authorized groups",
         description = "User groups authorized for scanning"
     )