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"
)