You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by kw...@apache.org on 2018/05/29 15:10:10 UTC

[sling-org-apache-sling-servlets-annotations-it] 03/06: update IT for changed annotations, also add test for filters

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

kwin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-servlets-annotations-it.git

commit 126f87de862d00b108d9cbd97275d691d4edfdb6
Author: Konrad Windszus <kw...@apache.org>
AuthorDate: Fri May 25 10:31:01 2018 +0200

    update IT for changed annotations, also add test for filters
---
 pom.xml                                            | 11 ++++-
 .../testservletfilters/SimpleServletFilter.java    | 47 ++++++++++++++++++++++
 .../annotations/testservlets/PathBoundServlet.java | 18 +++++++--
 .../testservlets/PathBoundServletWithPrefix.java   |  6 ++-
 .../testservlets/ResourceTypeBoundServlet.java     |  4 +-
 .../ResourceTypeBoundServletWithExtension.java     |  4 +-
 .../ResourceTypeBoundServletWithMethods.java       |  4 +-
 .../ResourceTypeBoundServletWithPrefix.java        |  6 ++-
 .../ResourceTypeBoundServletWithSelectors.java     |  4 +-
 .../annotations/ServletRegistrationIT.java         | 17 ++++++--
 src/test/provisioning/model.txt                    | 29 -------------
 11 files changed, 101 insertions(+), 49 deletions(-)

diff --git a/pom.xml b/pom.xml
index 00b95d8..5161587 100644
--- a/pom.xml
+++ b/pom.xml
@@ -74,6 +74,8 @@
                 <!-- the Sling instance is provisioned from the model in src/main/provisioning/model.txt -->
                 <groupId>org.apache.sling</groupId>
                 <artifactId>slingstart-maven-plugin</artifactId>
+                <!-- for https://issues.apache.org/jira/browse/SLING-7662 -->
+                <version>1.8.1-SNAPSHOT</version>
                 <extensions>true</extensions>
                 <executions>
                     <execution>
@@ -110,7 +112,7 @@
                         </server>
                     </servers>
                     <!-- this configuration only applies to 'prepare-package' and 'package' -->
-                    <!-- <disableExtendingMavenClasspath>true</disableExtendingMavenClasspath>  -->
+                    <disableExtendingMavenClasspath>true</disableExtendingMavenClasspath>
                 </configuration>
             </plugin>
             <plugin>
@@ -167,6 +169,13 @@
         </dependency>
         <dependency>
             <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.testing.clients</artifactId>
+            <!-- for https://issues.apache.org/jira/browse/SLING-7680 -->
+            <version>1.2.1-SNAPSHOT</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.testing.rules</artifactId>
             <version>1.0.8</version>
             <scope>test</scope>
diff --git a/src/main/java/org/apache/sling/servlets/annotations/testservletfilters/SimpleServletFilter.java b/src/main/java/org/apache/sling/servlets/annotations/testservletfilters/SimpleServletFilter.java
new file mode 100644
index 0000000..e1a56f6
--- /dev/null
+++ b/src/main/java/org/apache/sling/servlets/annotations/testservletfilters/SimpleServletFilter.java
@@ -0,0 +1,47 @@
+package org.apache.sling.servlets.annotations.testservletfilters;
+
+import java.io.IOException;
+
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.api.SlingHttpServletResponse;
+import org.apache.sling.servlets.annotations.SlingServletFilter;
+import org.apache.sling.servlets.annotations.SlingServletFilterScope;
+import org.osgi.service.component.annotations.Component;
+
+@Component
+@SlingServletFilter(scope=SlingServletFilterScope.REQUEST)
+public class SimpleServletFilter implements Filter {
+
+    @Override
+    public void init(FilterConfig filterConfig) throws ServletException {
+    }
+
+    @Override
+    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
+       chain.doFilter(request, response);
+       if ((request instanceof SlingHttpServletRequest) && (response instanceof SlingHttpServletResponse)) {
+            afterDoFilter((SlingHttpServletRequest) request, (SlingHttpServletResponse) response, chain);
+       } else {
+           throw new ServletException("Not a Sling HTTP request/response");
+       }
+    }
+
+    private void afterDoFilter(SlingHttpServletRequest request, SlingHttpServletResponse response, FilterChain chain) {
+        if (request.getRequestURI().endsWith("simplefilter")) {
+            // increase status by 1
+            response.setStatus(response.getStatus()+1);
+        }
+    }
+    
+    @Override
+    public void destroy() {
+    }
+
+}
diff --git a/src/main/java/org/apache/sling/servlets/annotations/testservlets/PathBoundServlet.java b/src/main/java/org/apache/sling/servlets/annotations/testservlets/PathBoundServlet.java
index 09f9cca..34fd242 100644
--- a/src/main/java/org/apache/sling/servlets/annotations/testservlets/PathBoundServlet.java
+++ b/src/main/java/org/apache/sling/servlets/annotations/testservlets/PathBoundServlet.java
@@ -23,13 +23,13 @@ import javax.servlet.ServletException;
 
 import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.SlingHttpServletResponse;
-import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
-import org.apache.sling.servlets.annotations.SlingServletByPath;
+import org.apache.sling.api.servlets.SlingAllMethodsServlet;
+import org.apache.sling.servlets.annotations.SlingServletPaths;
 import org.osgi.service.component.annotations.Component;
 
 @Component(service=Servlet.class)
-@SlingServletByPath(paths="/bin/PathBoundServlet")
-public class PathBoundServlet extends SlingSafeMethodsServlet {
+@SlingServletPaths("/bin/PathBoundServlet")
+public class PathBoundServlet extends SlingAllMethodsServlet {
 
     /**
      * 
@@ -40,4 +40,14 @@ public class PathBoundServlet extends SlingSafeMethodsServlet {
     protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
         response.setStatus(555);
     }
+
+    @Override
+    protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
+        response.setStatus(555);
+    }
+
+    @Override
+    protected void doPut(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
+        response.setStatus(555);
+    }
 }
diff --git a/src/main/java/org/apache/sling/servlets/annotations/testservlets/PathBoundServletWithPrefix.java b/src/main/java/org/apache/sling/servlets/annotations/testservlets/PathBoundServletWithPrefix.java
index 357db2d..0f32e1c 100644
--- a/src/main/java/org/apache/sling/servlets/annotations/testservlets/PathBoundServletWithPrefix.java
+++ b/src/main/java/org/apache/sling/servlets/annotations/testservlets/PathBoundServletWithPrefix.java
@@ -24,11 +24,13 @@ import javax.servlet.ServletException;
 import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.SlingHttpServletResponse;
 import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
-import org.apache.sling.servlets.annotations.SlingServletByPath;
+import org.apache.sling.servlets.annotations.SlingServletPaths;
+import org.apache.sling.servlets.annotations.SlingServletPrefix;
 import org.osgi.service.component.annotations.Component;
 
 @Component(service=Servlet.class)
-@SlingServletByPath(paths="PathBoundServletWithPrefix", prefix="/bin")
+@SlingServletPrefix("/bin/")
+@SlingServletPaths("PathBoundServletWithPrefix")
 public class PathBoundServletWithPrefix extends SlingSafeMethodsServlet {
 
     /**
diff --git a/src/main/java/org/apache/sling/servlets/annotations/testservlets/ResourceTypeBoundServlet.java b/src/main/java/org/apache/sling/servlets/annotations/testservlets/ResourceTypeBoundServlet.java
index a991ae4..412ff1f 100644
--- a/src/main/java/org/apache/sling/servlets/annotations/testservlets/ResourceTypeBoundServlet.java
+++ b/src/main/java/org/apache/sling/servlets/annotations/testservlets/ResourceTypeBoundServlet.java
@@ -24,11 +24,11 @@ import javax.servlet.ServletException;
 import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.SlingHttpServletResponse;
 import org.apache.sling.api.servlets.SlingAllMethodsServlet;
-import org.apache.sling.servlets.annotations.SlingServletByResourceType;
+import org.apache.sling.servlets.annotations.SlingServletResourceTypes;
 import org.osgi.service.component.annotations.Component;
 
 @Component(service=Servlet.class)
-@SlingServletByResourceType(resourceTypes="/apps/sling/testservlets/ResourceTypeBoundServlet")
+@SlingServletResourceTypes(resourceTypes="/apps/sling/testservlets/ResourceTypeBoundServlet")
 public class ResourceTypeBoundServlet extends SlingAllMethodsServlet {
 
     /**
diff --git a/src/main/java/org/apache/sling/servlets/annotations/testservlets/ResourceTypeBoundServletWithExtension.java b/src/main/java/org/apache/sling/servlets/annotations/testservlets/ResourceTypeBoundServletWithExtension.java
index eefdf76..3e02bc5 100644
--- a/src/main/java/org/apache/sling/servlets/annotations/testservlets/ResourceTypeBoundServletWithExtension.java
+++ b/src/main/java/org/apache/sling/servlets/annotations/testservlets/ResourceTypeBoundServletWithExtension.java
@@ -24,11 +24,11 @@ import javax.servlet.ServletException;
 import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.SlingHttpServletResponse;
 import org.apache.sling.api.servlets.SlingAllMethodsServlet;
-import org.apache.sling.servlets.annotations.SlingServletByResourceType;
+import org.apache.sling.servlets.annotations.SlingServletResourceTypes;
 import org.osgi.service.component.annotations.Component;
 
 @Component(service=Servlet.class)
-@SlingServletByResourceType(resourceTypes="/apps/sling/testservlets/ResourceTypeBoundServletWithExtension", extensions= {"ext1", "ext2"})
+@SlingServletResourceTypes(resourceTypes="/apps/sling/testservlets/ResourceTypeBoundServletWithExtension", extensions= {"ext1", "ext2"})
 public class ResourceTypeBoundServletWithExtension extends SlingAllMethodsServlet {
 
     /**
diff --git a/src/main/java/org/apache/sling/servlets/annotations/testservlets/ResourceTypeBoundServletWithMethods.java b/src/main/java/org/apache/sling/servlets/annotations/testservlets/ResourceTypeBoundServletWithMethods.java
index 874c4cd..6a37056 100644
--- a/src/main/java/org/apache/sling/servlets/annotations/testservlets/ResourceTypeBoundServletWithMethods.java
+++ b/src/main/java/org/apache/sling/servlets/annotations/testservlets/ResourceTypeBoundServletWithMethods.java
@@ -24,11 +24,11 @@ import javax.servlet.ServletException;
 import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.SlingHttpServletResponse;
 import org.apache.sling.api.servlets.SlingAllMethodsServlet;
-import org.apache.sling.servlets.annotations.SlingServletByResourceType;
+import org.apache.sling.servlets.annotations.SlingServletResourceTypes;
 import org.osgi.service.component.annotations.Component;
 
 @Component(service=Servlet.class)
-@SlingServletByResourceType(resourceTypes="/apps/sling/testservlets/ResourceTypeBoundServletWithMethods", methods= {"PUT", "POST"})
+@SlingServletResourceTypes(resourceTypes="/apps/sling/testservlets/ResourceTypeBoundServletWithMethods", methods= {"PUT", "POST"})
 public class ResourceTypeBoundServletWithMethods extends SlingAllMethodsServlet {
 
     /**
diff --git a/src/main/java/org/apache/sling/servlets/annotations/testservlets/ResourceTypeBoundServletWithPrefix.java b/src/main/java/org/apache/sling/servlets/annotations/testservlets/ResourceTypeBoundServletWithPrefix.java
index 519c576..454b61b 100644
--- a/src/main/java/org/apache/sling/servlets/annotations/testservlets/ResourceTypeBoundServletWithPrefix.java
+++ b/src/main/java/org/apache/sling/servlets/annotations/testservlets/ResourceTypeBoundServletWithPrefix.java
@@ -24,11 +24,13 @@ import javax.servlet.ServletException;
 import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.SlingHttpServletResponse;
 import org.apache.sling.api.servlets.SlingAllMethodsServlet;
-import org.apache.sling.servlets.annotations.SlingServletByResourceType;
+import org.apache.sling.servlets.annotations.SlingServletPrefix;
+import org.apache.sling.servlets.annotations.SlingServletResourceTypes;
 import org.osgi.service.component.annotations.Component;
 
 @Component(service=Servlet.class)
-@SlingServletByResourceType(resourceTypes="ResourceTypeBoundServletWithPrefix", prefix="/apps/sling/testservlets")
+@SlingServletPrefix("/apps/sling/testservlets/")
+@SlingServletResourceTypes(resourceTypes="ResourceTypeBoundServletWithPrefix")
 public class ResourceTypeBoundServletWithPrefix extends SlingAllMethodsServlet {
 
     /**
diff --git a/src/main/java/org/apache/sling/servlets/annotations/testservlets/ResourceTypeBoundServletWithSelectors.java b/src/main/java/org/apache/sling/servlets/annotations/testservlets/ResourceTypeBoundServletWithSelectors.java
index 9cc3bbd..7a3b02a 100644
--- a/src/main/java/org/apache/sling/servlets/annotations/testservlets/ResourceTypeBoundServletWithSelectors.java
+++ b/src/main/java/org/apache/sling/servlets/annotations/testservlets/ResourceTypeBoundServletWithSelectors.java
@@ -24,11 +24,11 @@ import javax.servlet.ServletException;
 import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.SlingHttpServletResponse;
 import org.apache.sling.api.servlets.SlingAllMethodsServlet;
-import org.apache.sling.servlets.annotations.SlingServletByResourceType;
+import org.apache.sling.servlets.annotations.SlingServletResourceTypes;
 import org.osgi.service.component.annotations.Component;
 
 @Component(service=Servlet.class)
-@SlingServletByResourceType(resourceTypes="/apps/sling/testservlets/ResourceTypeBoundServletWithSelectors", selectors= {"selector1.selector2", "selector3"})
+@SlingServletResourceTypes(resourceTypes="/apps/sling/testservlets/ResourceTypeBoundServletWithSelectors", selectors= {"selector1.selector2", "selector3"})
 public class ResourceTypeBoundServletWithSelectors extends SlingAllMethodsServlet {
 
     /**
diff --git a/src/test/java/org/apache/sling/servlets/annotations/ServletRegistrationIT.java b/src/test/java/org/apache/sling/servlets/annotations/ServletRegistrationIT.java
index 7f1b32a..6db10ba 100644
--- a/src/test/java/org/apache/sling/servlets/annotations/ServletRegistrationIT.java
+++ b/src/test/java/org/apache/sling/servlets/annotations/ServletRegistrationIT.java
@@ -68,6 +68,10 @@ public class ServletRegistrationIT {
         CLIENT.waitExists("/index.html", SERVICE_START_TIMEOUT, 500);
         
         CLIENT.waitServiceRegistered("javax.servlet.Servlet", BUNDLE_SYMBOLICNAME, SERVICE_START_TIMEOUT, 500);
+        CLIENT.waitComponentRegistered("org.apache.sling.servlets.annotations.testservlets.PathBoundServlet", SERVICE_START_TIMEOUT, 500);
+        CLIENT.waitComponentRegistered("org.apache.sling.servlets.annotations.testservletfilters.SimpleServletFilter", SERVICE_START_TIMEOUT, 500);
+        // wait a bit longer to make sure really all servlets and filters are active
+        //Thread.sleep(500);
     }
     
     @AfterClass
@@ -76,13 +80,21 @@ public class ServletRegistrationIT {
     }
 
     @Test
-    public void testPathBoundServlet() throws ClientException {
+    public void testPathBoundServlet() throws ClientException, UnsupportedEncodingException {
         CLIENT.doGet("/bin/PathBoundServlet", 555);
         CLIENT.doGet("/bin/PathBoundServlet.with.some.selector.and.extension", 555);
+        CLIENT.doGet("/bin/PathBoundServlet.with.some.selector.and.extension/suffix", 555);
+        // other methods should work as well
+        CLIENT.doPut("/bin/PathBoundServlet", new StringEntity("some text"), Collections.emptyList(), 555);
+    }
+    
+    @Test
+    public void testPathBoundServletWithFilter() throws ClientException {
+        CLIENT.doGet("/bin/PathBoundServlet.html/simplefilter", 556);
+        CLIENT.doGet("/bin/PathBoundServlet.with.some.selector.and.extension/simplefilter", 556);
     }
 
     @Test
-    @Ignore("Prefix is ignored!")
     public void testPathBoundServletWithPrefix() throws ClientException {
         CLIENT.doGet("/bin/PathBoundServletWithPrefix", 555);
         CLIENT.doGet("/bin/PathBoundServletWithPrefix.with.some.selector.and.extension", 555);
@@ -98,7 +110,6 @@ public class ServletRegistrationIT {
     }
 
     @Test
-    @Ignore("Prefix is not working somehow")
     public void testResourceTypeBoundServletWithPrefix() throws ClientException, UnsupportedEncodingException {
         CLIENT.doGet("/content/servlettest/resourceTypeBoundServletWithPrefix", 555);
         CLIENT.doGet("/content/servlettest/resourceTypeBoundServletWithPrefix.html", 555);
diff --git a/src/test/provisioning/model.txt b/src/test/provisioning/model.txt
deleted file mode 100644
index d2ea981..0000000
--- a/src/test/provisioning/model.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-#  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.
-#
-# This model is not actually used, it is only necessary due to https://issues.apache.org/jira/browse/SLING-7662
-
-[feature name=models.validation-impl.it]
-# Dependencies
-[artifacts]
-  org.apache.sling/org.apache.sling.launchpad/9/slingstart
-  # this is necessary to execute the tests
-  org.apache.sling/org.apache.sling.junit.core/1.0.26
-
-[settings]
-  org.apache.sling.commons.log.julenabled=true

-- 
To stop receiving notification emails like this one, please contact
kwin@apache.org.