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

jsedding pushed a commit to branch resolver-2.x-backports
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-servlets-resolver.git

commit 64397ffacf0debcd7a608825b12d1305563d73d2
Author: Carsten Ziegeler <[email protected]>
AuthorDate: Fri Mar 28 06:37:12 2025 +0100

    SLING-12608 : Implement Jakarta Servlet based Sling API (#52)
    
    * backport: retain only changes *not* related to Jakarta Servlet
    
    * Update dependency to latest API with jakarta support
    
    * Implement SlingServletResolver, fix test cases
    
    * Fix test cases
    
    * Use Sling api to wrap request/response
    
    * Use servlet wrapper from api
    
    * Support jakarta servlet registration
    
    * Try to use latest pax exam for java 17 support
    
    * Adjust pom
    
    * Fix some pax exam tests
    
    * Fix pax exam tests
    
    * Clean up pom
    
    * Remove dependency to outdated commons testing
    
    * Use Testing Paxexam 4.1.0
    
    * Remove temporary optional import
    
    (cherry picked from commit e76580daf56902318fc147b9928de0c6dbf5fe97)
---
 pom.xml                                            |  71 +++----
 .../resolver/internal/SlingServletResolver.java    |   2 +-
 .../defaults/DefaultErrorHandlerServlet.java       |  22 +--
 .../internal/SecureRequestsOptingServletTest.java  |  49 +++--
 .../defaults/DefaultErrorHandlerServletTest.java   |  56 ++++--
 .../resolver/internal/helper/HelperTestBase.java   |  41 ++--
 .../internal/helper/LocationCollectorTest.java     |  51 +++--
 .../internal/helper/ResourceCollectorTest.java     |  69 ++++---
 .../internal/helper/ScriptSelectionTest.java       |   4 +-
 .../internal/resourcehiding/ServletHidingTest.java |  15 +-
 .../sling/servlets/resolver/it/SLING10478IT.java   |  30 ++-
 .../resolver/it/ScriptEngineManagerMock.java       |  29 +++
 .../resolver/it/ServletResolverTestSupport.java    | 206 ++++++++++++---------
 .../servlets/resolver/it/ServletResourceIT.java    |  22 +--
 .../servlets/resolver/it/TestResourceProvider.java |  18 --
 15 files changed, 405 insertions(+), 280 deletions(-)

diff --git a/pom.xml b/pom.xml
index d1529d2..f20b388 100644
--- a/pom.xml
+++ b/pom.xml
@@ -36,14 +36,15 @@
     <scm>
         
<connection>scm:git:https://gitbox.apache.org/repos/asf/sling-org-apache-sling-servlets-resolver.git</connection>
         
<developerConnection>scm:git:https://gitbox.apache.org/repos/asf/sling-org-apache-sling-servlets-resolver.git</developerConnection>
-        <tag>org.apache.sling.servlets.resolver-2.11.10</tag>
+        <tag>resolver-2.x</tag>
         
<url>https://github.com/apache/sling-org-apache-sling-servlets-resolver.git</url>
     </scm>
 
     <properties>
         
<project.build.outputTimestamp>2025-07-11T14:46:48Z</project.build.outputTimestamp>
         <site.jira.version.id>12314292</site.jira.version.id>
-        <org.ops4j.pax.exam.version>4.13.3</org.ops4j.pax.exam.version>
+        <sling.java.version>17</sling.java.version>
+        <org.ops4j.pax.exam.version>4.14.0</org.ops4j.pax.exam.version>
         <!-- To debug the pax process, override this with -D -->
         <pax.vm.options>-Xmx512M</pax.vm.options>
     </properties>
@@ -55,11 +56,10 @@
             <version>1.0.4</version>
             <scope>provided</scope>
         </dependency>
-
         <dependency>
             <groupId>commons-io</groupId>
             <artifactId>commons-io</artifactId>
-            <version>2.14.0</version>
+            <version>2.18.0</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
@@ -80,12 +80,13 @@
         <dependency>
             <groupId>javax.servlet</groupId>
             <artifactId>javax.servlet-api</artifactId>
+            <version>4.0.1</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>jakarta.json</groupId>
-            <artifactId>jakarta.json-api</artifactId>
-            <version>2.0.2</version>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.commons.johnzon</artifactId>
+            <version>2.0.0</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
@@ -98,7 +99,7 @@
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.serviceusermapper</artifactId>
-            <version>1.2.0</version>
+            <version>1.5.8</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
@@ -132,7 +133,7 @@
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-lang3</artifactId>
-            <version>3.4</version>
+            <version>3.17.0</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
@@ -186,13 +187,13 @@
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.testing.paxexam</artifactId>
-            <version>3.1.0</version>
+            <version>4.1.0</version>
             <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.sling</groupId>
-            <artifactId>org.apache.sling.commons.testing</artifactId>
-            <version>2.1.2</version>
+            <artifactId>org.apache.sling.auth.core</artifactId>
+            <version>1.7.0</version>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -201,6 +202,12 @@
             <version>2.9.2</version>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.resourceresolver</artifactId>
+            <version>1.10.0</version>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.testing.osgi-mock.core</artifactId>
@@ -238,7 +245,7 @@
         <dependency>
             <groupId>org.mockito</groupId>
             <artifactId>mockito-core</artifactId>
-            <version>3.9.0</version>
+            <version>5.15.2</version>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -283,30 +290,6 @@
             <version>7.0.5</version>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>org.apache.sling</groupId>
-            <artifactId>org.apache.sling.servlet-helpers</artifactId>
-            <version>1.4.2</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.sling</groupId>
-            <artifactId>org.apache.sling.resourceresolver</artifactId>
-            <version>1.10.0</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.sling</groupId>
-            <artifactId>org.apache.sling.scripting.core</artifactId>
-            <version>2.2.0</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.glassfish</groupId>
-            <artifactId>jakarta.json</artifactId>
-            <version>2.0.1</version>
-            <scope>test</scope>
-        </dependency>
         <dependency>
             <groupId>org.apache.geronimo.specs</groupId>
             <artifactId>geronimo-atinject_1.0_spec</artifactId>
@@ -405,16 +388,10 @@
                 <artifactId>maven-failsafe-plugin</artifactId>
                 <configuration>
                     <redirectTestOutputToFile>true</redirectTestOutputToFile>
-                    <systemProperties>
-                        <property>
-                            <name>bundle.filename</name>
-                            
<value>${basedir}/target/${project.build.finalName}.jar</value>
-                        </property>
-                        <property>
-                            <name>pax.vm.options</name>
-                            <value>${pax.vm.options}</value>
-                        </property>
-                    </systemProperties>
+                    <systemPropertyVariables>
+                        
<bundle.filename>${basedir}/target/${project.build.finalName}.jar</bundle.filename>
+                        <pax.vm.options>${pax.vm.options}</pax.vm.options>
+                    </systemPropertyVariables>
                 </configuration>
                 <executions>
                     <execution>
diff --git 
a/src/main/java/org/apache/sling/servlets/resolver/internal/SlingServletResolver.java
 
b/src/main/java/org/apache/sling/servlets/resolver/internal/SlingServletResolver.java
index a860cb0..f3f9c63 100644
--- 
a/src/main/java/org/apache/sling/servlets/resolver/internal/SlingServletResolver.java
+++ 
b/src/main/java/org/apache/sling/servlets/resolver/internal/SlingServletResolver.java
@@ -184,7 +184,7 @@ public class SlingServletResolver implements 
ServletResolver, SlingRequestListen
             servlet = resolveServletInternal(request, null, resourceType, 
scriptResolver);
         }
 
-        // last resort, use the core bundle default servlet
+        // last resort, use the default servlet
         if (servlet == null) {
             if (LOGGER.isDebugEnabled()) {
                 LOGGER.debug("No specific servlet found, trying default");
diff --git 
a/src/main/java/org/apache/sling/servlets/resolver/internal/defaults/DefaultErrorHandlerServlet.java
 
b/src/main/java/org/apache/sling/servlets/resolver/internal/defaults/DefaultErrorHandlerServlet.java
index af1fddf..e4bcfca 100644
--- 
a/src/main/java/org/apache/sling/servlets/resolver/internal/defaults/DefaultErrorHandlerServlet.java
+++ 
b/src/main/java/org/apache/sling/servlets/resolver/internal/defaults/DefaultErrorHandlerServlet.java
@@ -19,6 +19,7 @@
 package org.apache.sling.servlets.resolver.internal.defaults;
 
 import javax.servlet.GenericServlet;
+import javax.servlet.RequestDispatcher;
 import javax.servlet.Servlet;
 import javax.servlet.ServletException;
 import javax.servlet.ServletRequest;
@@ -32,7 +33,6 @@ import java.io.StringWriter;
 
 import jakarta.json.Json;
 import jakarta.json.stream.JsonGenerator;
-import org.apache.sling.api.SlingConstants;
 import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.request.RequestProgressTracker;
 import org.apache.sling.api.request.ResponseUtil;
@@ -67,10 +67,10 @@ public class DefaultErrorHandlerServlet extends 
GenericServlet {
     public void service(ServletRequest req, ServletResponse res) throws 
IOException {
 
         // get settings
-        Integer scObject = (Integer) 
req.getAttribute(SlingConstants.ERROR_STATUS);
-        String statusMessage = (String) 
req.getAttribute(SlingConstants.ERROR_MESSAGE);
-        String requestUri = (String) 
req.getAttribute(SlingConstants.ERROR_REQUEST_URI);
-        String servletName = (String) 
req.getAttribute(SlingConstants.ERROR_SERVLET_NAME);
+        Integer scObject = (Integer) 
req.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);
+        String statusMessage = (String) 
req.getAttribute(RequestDispatcher.ERROR_MESSAGE);
+        String requestUri = (String) 
req.getAttribute(RequestDispatcher.ERROR_REQUEST_URI);
+        String servletName = (String) 
req.getAttribute(RequestDispatcher.ERROR_SERVLET_NAME);
 
         // ensure values
         int statusCode = (scObject != null) ? scObject.intValue() : 
HttpServletResponse.SC_INTERNAL_SERVER_ERROR;
@@ -107,8 +107,8 @@ public class DefaultErrorHandlerServlet extends 
GenericServlet {
         final PrintWriter escapingWriter = new 
PrintWriter(ResponseUtil.getXmlEscapingWriter(pw));
 
         // dump the stack trace
-        if (req.getAttribute(SlingConstants.ERROR_EXCEPTION) instanceof 
Throwable) {
-            final Throwable throwable = (Throwable) 
req.getAttribute(SlingConstants.ERROR_EXCEPTION);
+        if (req.getAttribute(RequestDispatcher.ERROR_EXCEPTION) instanceof 
Throwable) {
+            final Throwable throwable = (Throwable) 
req.getAttribute(RequestDispatcher.ERROR_EXCEPTION);
             pw.println("<h3>Exception:</h3>");
             pw.println("<pre>");
             pw.flush();
@@ -153,7 +153,7 @@ public class DefaultErrorHandlerServlet extends 
GenericServlet {
             jsonGenerator.writeStartObject();
             jsonGenerator.write("status", statusCode);
 
-            String msg = (String) 
req.getAttribute(SlingConstants.ERROR_MESSAGE);
+            String msg = (String) 
req.getAttribute(RequestDispatcher.ERROR_MESSAGE);
             if (msg != null && !msg.isEmpty()) {
                 jsonGenerator.write("message", statusMessage);
             }
@@ -168,7 +168,7 @@ public class DefaultErrorHandlerServlet extends 
GenericServlet {
 
             // SLING-10615 - for backward compatibility check for either a
             // String or Class value
-            Object exceptionTypeObj = 
req.getAttribute(SlingConstants.ERROR_EXCEPTION_TYPE);
+            Object exceptionTypeObj = 
req.getAttribute(RequestDispatcher.ERROR_EXCEPTION_TYPE);
             String exceptionType = null;
             if (exceptionTypeObj instanceof String) {
                 exceptionType = (String) exceptionTypeObj;
@@ -180,8 +180,8 @@ public class DefaultErrorHandlerServlet extends 
GenericServlet {
             }
 
             // dump the stack trace
-            if (req.getAttribute(SlingConstants.ERROR_EXCEPTION) instanceof 
Throwable) {
-                final Throwable throwable = (Throwable) 
req.getAttribute(SlingConstants.ERROR_EXCEPTION);
+            if (req.getAttribute(RequestDispatcher.ERROR_EXCEPTION) instanceof 
Throwable) {
+                final Throwable throwable = (Throwable) 
req.getAttribute(RequestDispatcher.ERROR_EXCEPTION);
                 try (StringWriter sw = new StringWriter();
                         PrintWriter pw = new PrintWriter(sw)) {
                     printStackTrace(pw, throwable);
diff --git 
a/src/test/java/org/apache/sling/servlets/resolver/internal/SecureRequestsOptingServletTest.java
 
b/src/test/java/org/apache/sling/servlets/resolver/internal/SecureRequestsOptingServletTest.java
index 1572ef4..257d0e1 100644
--- 
a/src/test/java/org/apache/sling/servlets/resolver/internal/SecureRequestsOptingServletTest.java
+++ 
b/src/test/java/org/apache/sling/servlets/resolver/internal/SecureRequestsOptingServletTest.java
@@ -25,36 +25,38 @@ import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.api.request.builder.Builders;
 import org.apache.sling.api.resource.PersistenceException;
+import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.resource.ResourceUtil;
 import org.apache.sling.api.servlets.OptingServlet;
-import org.apache.sling.commons.testing.sling.MockSlingHttpServletRequest;
+import org.apache.sling.api.wrappers.SlingHttpServletRequestWrapper;
 import org.apache.sling.servlets.resolver.internal.helper.HelperTestBase;
 import 
org.apache.sling.servlets.resolver.internal.resource.MockServletResource;
 import org.apache.sling.servlets.resolver.internal.resource.ServletResource;
 import org.junit.Test;
+import org.mockito.Mockito;
 import org.osgi.framework.Bundle;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotSame;
 import static org.junit.Assert.fail;
 
+@SuppressWarnings("deprecation")
 public class SecureRequestsOptingServletTest extends 
SlingServletResolverTestBase {
 
     protected static final String SERVLET_PATH = "/mock";
     protected static final String SERVLET_NAME = "TestServlet";
     protected static final String SERVLET_EXTENSION = "html";
+    protected static final String RESOURCE_TYPE = "foo/bar";
+
     private Servlet testServlet;
 
     protected void defineTestServlets(Bundle bundle) {
         testServlet = new SecureRequestsOptingServlet();
 
-        String path = "/"
-                + MockSlingHttpServletRequest.RESOURCE_TYPE
-                + "/"
-                + 
ResourceUtil.getName(MockSlingHttpServletRequest.RESOURCE_TYPE)
-                + ".servlet";
+        String path = "/" + RESOURCE_TYPE + "/" + 
ResourceUtil.getName(RESOURCE_TYPE) + ".servlet";
         Map<String, Object> props = new HashMap<>();
         props.put(ResourceResolver.PROPERTY_RESOURCE_TYPE, path);
         props.put("sling:resourceSuperType", 
ServletResource.DEFAULT_RESOURCE_SUPER_TYPE);
@@ -72,26 +74,43 @@ public class SecureRequestsOptingServletTest extends 
SlingServletResolverTestBas
 
     @Test
     public void testAcceptsSecureRequest() {
-        MockSlingHttpServletRequest secureRequest =
-                new MockSlingHttpServletRequest(SERVLET_PATH, null, 
SERVLET_EXTENSION, null, null);
-        secureRequest.setResourceResolver(mockResourceResolver);
-        secureRequest.setSecure(true);
+        final Resource resource = Mockito.mock(Resource.class);
+        Mockito.when(resource.getResourceType()).thenReturn(RESOURCE_TYPE);
+        Mockito.when(resource.getPath()).thenReturn("/" + RESOURCE_TYPE);
+
+        SlingHttpServletRequest secureRequest = new 
SecureRequest(Builders.newRequestBuilder(resource)
+                .withExtension(SERVLET_EXTENSION)
+                .build());
         Servlet result = servletResolver.resolveServlet(secureRequest);
         assertEquals("Expecting our test servlet", testServlet, result);
     }
 
     @Test
     public void testIgnoreInsecureRequest() {
-        MockSlingHttpServletRequest insecureRequest =
-                new MockSlingHttpServletRequest(SERVLET_PATH, null, 
SERVLET_EXTENSION, null, null);
-        insecureRequest.setResourceResolver(mockResourceResolver);
-        insecureRequest.setSecure(false);
+        final Resource resource = Mockito.mock(Resource.class);
+        Mockito.when(resource.getResourceType()).thenReturn(RESOURCE_TYPE);
+        Mockito.when(resource.getPath()).thenReturn("/" + RESOURCE_TYPE);
+
+        SlingHttpServletRequest insecureRequest = 
Builders.newRequestBuilder(resource)
+                .withExtension(SERVLET_EXTENSION)
+                .build();
         Servlet result = servletResolver.resolveServlet(insecureRequest);
         assertNotSame(
                 "Expecting a different servlet than our own", 
result.getClass(), SecureRequestsOptingServlet.class);
     }
 
-    @SuppressWarnings("serial")
+    public static class SecureRequest extends SlingHttpServletRequestWrapper {
+
+        public SecureRequest(final SlingHttpServletRequest request) {
+            super(request);
+        }
+
+        @Override
+        public boolean isSecure() {
+            return true;
+        }
+    }
+
     private static class SecureRequestsOptingServlet extends HttpServlet 
implements OptingServlet {
 
         @Override
diff --git 
a/src/test/java/org/apache/sling/servlets/resolver/internal/defaults/DefaultErrorHandlerServletTest.java
 
b/src/test/java/org/apache/sling/servlets/resolver/internal/defaults/DefaultErrorHandlerServletTest.java
index e6d11c7..8201a7e 100644
--- 
a/src/test/java/org/apache/sling/servlets/resolver/internal/defaults/DefaultErrorHandlerServletTest.java
+++ 
b/src/test/java/org/apache/sling/servlets/resolver/internal/defaults/DefaultErrorHandlerServletTest.java
@@ -34,9 +34,14 @@ import jakarta.json.Json;
 import jakarta.json.JsonObject;
 import jakarta.json.JsonReader;
 import org.apache.sling.api.SlingConstants;
-import org.apache.sling.commons.testing.sling.MockSlingHttpServletRequest;
-import org.apache.sling.commons.testing.sling.MockSlingHttpServletResponse;
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.api.SlingHttpServletResponse;
+import org.apache.sling.api.request.builder.Builders;
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.wrappers.SlingHttpServletRequestWrapper;
+import org.apache.sling.api.wrappers.SlingHttpServletResponseWrapper;
 import org.junit.Test;
+import org.mockito.Mockito;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
@@ -44,17 +49,19 @@ import static org.junit.Assert.assertTrue;
 /**
  * SLING-10021 test 'Accept' content-type handling in the default error 
handler servlet
  */
+@SuppressWarnings("deprecation")
 public class DefaultErrorHandlerServletTest {
 
-    protected void assertJsonErrorResponse(MockSlingHttpServletRequest req) 
throws ServletException, IOException {
-        MockSlingHttpServletResponse res = new 
MockErrorSlingHttpServletResponse(false);
+    protected void assertJsonErrorResponse(SlingHttpServletRequest req) throws 
ServletException, IOException {
+        MockErrorSlingHttpServletResponse res = new 
MockErrorSlingHttpServletResponse(
+                Builders.newResponseBuilder().build(), false);
 
         DefaultErrorHandlerServlet errorServlet = new 
DefaultErrorHandlerServlet();
         errorServlet.init(new MockServletConfig());
         errorServlet.service(req, res);
 
         // verify we got json back
-        assertEquals("application/json", res.getContentType());
+        assertEquals("application/json;charset=UTF-8", res.getContentType());
         String responseOutput = res.getOutput().toString();
 
         // check the json content matches what would be sent from the 
DefaultErrorHandlingServlet
@@ -72,8 +79,13 @@ public class DefaultErrorHandlerServletTest {
 
     @Test
     public void testJsonErrorResponse() throws IOException, ServletException {
+        final Resource resource = Mockito.mock(Resource.class);
+        final SlingHttpServletRequest request =
+                Builders.newRequestBuilder(resource).build();
+
         // mock a request that accepts a json response
-        MockSlingHttpServletRequest req = new 
MockErrorSlingHttpServletRequest("application/json,*/*;q=0.9");
+        MockErrorSlingHttpServletRequest req =
+                new MockErrorSlingHttpServletRequest(request, 
"application/json,*/*;q=0.9");
         assertJsonErrorResponse(req);
     }
 
@@ -83,8 +95,12 @@ public class DefaultErrorHandlerServletTest {
      */
     @Test
     public void testJsonErrorResponseWithClassExceptionTypeAttributeValue() 
throws IOException, ServletException {
+        final Resource resource = Mockito.mock(Resource.class);
+        final SlingHttpServletRequest request =
+                Builders.newRequestBuilder(resource).build();
+
         // mock a request that accepts a json response
-        MockSlingHttpServletRequest req = new 
MockErrorSlingHttpServletRequest("application/json,*/*;q=0.9") {
+        SlingHttpServletRequest req = new 
MockErrorSlingHttpServletRequest(request, "application/json,*/*;q=0.9") {
 
             @Override
             public Object getAttribute(String name) {
@@ -99,17 +115,22 @@ public class DefaultErrorHandlerServletTest {
 
     @Test
     public void testHtmlErrorResponse() throws IOException, ServletException {
+        final Resource resource = Mockito.mock(Resource.class);
+        final SlingHttpServletRequest request =
+                Builders.newRequestBuilder(resource).build();
+
         // mock a request that accepts an html response
-        MockSlingHttpServletRequest req =
-                new 
MockErrorSlingHttpServletRequest("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
-        MockSlingHttpServletResponse res = new 
MockErrorSlingHttpServletResponse(false);
+        SlingHttpServletRequest req = new MockErrorSlingHttpServletRequest(
+                request, 
"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
+        MockErrorSlingHttpServletResponse res = new 
MockErrorSlingHttpServletResponse(
+                Builders.newResponseBuilder().build(), false);
 
         DefaultErrorHandlerServlet errorServlet = new 
DefaultErrorHandlerServlet();
         errorServlet.init(new MockServletConfig());
         errorServlet.service(req, res);
 
         // verify we got html back
-        assertEquals("text/html", res.getContentType());
+        assertEquals("text/html;charset=UTF-8", res.getContentType());
         String responseOutput = res.getOutput().toString();
 
         // check the html content matches what would be sent from the 
DefaultErrorHandlingServlet
@@ -155,14 +176,14 @@ public class DefaultErrorHandlerServletTest {
     /**
      * Mock impl to simulate an error response
      */
-    private static final class MockErrorSlingHttpServletResponse extends 
MockSlingHttpServletResponse {
+    private static final class MockErrorSlingHttpServletResponse extends 
SlingHttpServletResponseWrapper {
 
         private PrintWriter writer;
         private StringWriter strWriter;
         private boolean committed;
 
-        public MockErrorSlingHttpServletResponse(boolean committed) {
-            super();
+        public MockErrorSlingHttpServletResponse(final 
SlingHttpServletResponse response, final boolean committed) {
+            super(response);
             this.committed = committed;
         }
 
@@ -189,7 +210,6 @@ public class DefaultErrorHandlerServletTest {
             return this.writer;
         }
 
-        @Override
         public StringBuffer getOutput() {
             return strWriter.getBuffer();
         }
@@ -198,11 +218,11 @@ public class DefaultErrorHandlerServletTest {
     /**
      * Mock impl to simulate an error request
      */
-    private static class MockErrorSlingHttpServletRequest extends 
MockSlingHttpServletRequest {
+    private static class MockErrorSlingHttpServletRequest extends 
SlingHttpServletRequestWrapper {
         private String accept;
 
-        private MockErrorSlingHttpServletRequest(String accept) {
-            super(null, null, null, null, null);
+        private MockErrorSlingHttpServletRequest(final SlingHttpServletRequest 
request, final String accept) {
+            super(request);
             this.accept = accept;
         }
 
diff --git 
a/src/test/java/org/apache/sling/servlets/resolver/internal/helper/HelperTestBase.java
 
b/src/test/java/org/apache/sling/servlets/resolver/internal/helper/HelperTestBase.java
index 2bd3980..097a4d5 100644
--- 
a/src/test/java/org/apache/sling/servlets/resolver/internal/helper/HelperTestBase.java
+++ 
b/src/test/java/org/apache/sling/servlets/resolver/internal/helper/HelperTestBase.java
@@ -22,22 +22,24 @@ import java.util.Collections;
 import java.util.Map;
 
 import junit.framework.TestCase;
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.api.request.builder.Builders;
+import org.apache.sling.api.request.builder.SlingHttpServletRequestBuilder;
 import org.apache.sling.api.resource.PersistenceException;
 import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.resource.ResourceMetadata;
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.resource.ResourceUtil;
-import org.apache.sling.commons.testing.sling.MockSlingHttpServletRequest;
 import org.apache.sling.testing.resourceresolver.MockResourceResolverFactory;
 import 
org.apache.sling.testing.resourceresolver.MockResourceResolverFactoryOptions;
 import org.jetbrains.annotations.Nullable;
+import org.mockito.Mockito;
 
 public abstract class HelperTestBase extends TestCase {
 
     protected MockResourceResolverFactoryOptions resourceResolverOptions;
     protected ResourceResolver resourceResolver;
 
-    protected MockSlingHttpServletRequest request;
-
     protected Resource resource;
 
     protected String resourcePath;
@@ -65,8 +67,6 @@ public abstract class HelperTestBase extends TestCase {
         Resource parent = getOrCreateParentResource(resourceResolver, 
resourcePath);
         resource = resourceResolver.create(
                 parent, "page", 
Collections.singletonMap(ResourceResolver.PROPERTY_RESOURCE_TYPE, 
resourceType));
-
-        request = makeRequest("GET", "print.a4", "html");
     }
 
     public static Resource addOrReplaceResource(ResourceResolver resolver, 
String path, String resourceType) {
@@ -113,13 +113,29 @@ public abstract class HelperTestBase extends TestCase {
         return parent;
     }
 
-    protected MockSlingHttpServletRequest makeRequest(String method, String 
selectors, String extension) {
-        final MockSlingHttpServletRequest result =
-                new MockSlingHttpServletRequest(resourcePath, selectors, 
extension, null, null);
-        result.setMethod(method);
-        result.setResourceResolver(resourceResolver);
-        result.setResource(resource);
-        return result;
+    protected SlingHttpServletRequest makeRequest(String method, String 
selectors, String extension) {
+        final Resource rsrc = Mockito.mock(Resource.class);
+        final ResourceMetadata md = new ResourceMetadata();
+        Mockito.when(rsrc.getResourceResolver()).thenReturn(resourceResolver);
+        Mockito.when(rsrc.getPath()).thenReturn(this.resource.getPath());
+        Mockito.when(rsrc.getName()).thenReturn(this.resource.getName());
+        
Mockito.when(rsrc.getResourceType()).thenReturn(this.resource.getResourceType());
+        md.setResolutionPath(rsrc.getPath());
+        StringBuilder sb = new StringBuilder();
+        sb.append(".");
+        if (selectors != null) {
+            sb.append(selectors);
+            sb.append(".");
+        }
+        sb.append(extension);
+        md.setResolutionPathInfo(sb.toString());
+        SlingHttpServletRequestBuilder builder = 
Builders.newRequestBuilder(rsrc);
+        builder.withExtension(extension);
+        if (selectors != null) {
+            builder.withSelectors(selectors.split("\\."));
+        }
+        builder.withRequestMethod(method);
+        return builder.build();
     }
 
     @Override
@@ -127,7 +143,6 @@ public abstract class HelperTestBase extends TestCase {
         super.tearDown();
 
         resourceResolver = null;
-        request = null;
         resource = null;
     }
 }
diff --git 
a/src/test/java/org/apache/sling/servlets/resolver/internal/helper/LocationCollectorTest.java
 
b/src/test/java/org/apache/sling/servlets/resolver/internal/helper/LocationCollectorTest.java
index c186708..11631ed 100644
--- 
a/src/test/java/org/apache/sling/servlets/resolver/internal/helper/LocationCollectorTest.java
+++ 
b/src/test/java/org/apache/sling/servlets/resolver/internal/helper/LocationCollectorTest.java
@@ -24,12 +24,13 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.api.request.builder.Builders;
 import org.apache.sling.api.resource.PersistenceException;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.resource.ResourceUtil;
 import org.apache.sling.api.resource.SyntheticResource;
-import org.apache.sling.commons.testing.sling.MockSlingHttpServletRequest;
 import org.apache.sling.testing.mock.sling.junit.SlingContext;
 import org.junit.Before;
 import org.junit.Rule;
@@ -64,6 +65,7 @@ public class LocationCollectorTest {
     public final SlingContext context = new SlingContext();
 
     SearchPathOptions searchPathOptions = new SearchPathOptions();
+
     protected String resourcePath;
     protected String resourceType;
     protected String resourceTypePath;
@@ -71,7 +73,6 @@ public class LocationCollectorTest {
     protected String resourceSuperTypePath;
 
     protected Resource resource;
-    protected MockSlingHttpServletRequest request;
 
     protected ResourceResolver resolver; // required because of the spy
 
@@ -92,15 +93,19 @@ public class LocationCollectorTest {
         Resource parent = resolver.getResource("/content");
         resource = resolver.create(
                 parent, "page", 
Collections.singletonMap(ResourceResolver.PROPERTY_RESOURCE_TYPE, 
resourceType));
+    }
 
-        request = new MockSlingHttpServletRequest(resourcePath, "print.A4", 
"html", null, null);
-        request.setMethod("GET");
-        request.setResourceResolver(resolver);
-        request.setResource(resource);
+    protected SlingHttpServletRequest createRequest(final Resource r) {
+        return Builders.newRequestBuilder(r)
+                .withExtension("html")
+                .withSelectors("print", "A4")
+                .withRequestMethod("GET")
+                .build();
     }
 
     @Test
     public void testSearchPathEmpty() {
+        final SlingHttpServletRequest request = 
this.createRequest(this.resource);
         // expect path gets { "/" }
         searchPathOptions.setSearchPaths(null);
 
@@ -115,6 +120,7 @@ public class LocationCollectorTest {
 
     @Test
     public void testSearchPath1Element() {
+        final SlingHttpServletRequest request = 
this.createRequest(this.resource);
         String root0 = "/apps/";
         searchPathOptions.setSearchPaths(new String[] {root0});
 
@@ -129,6 +135,7 @@ public class LocationCollectorTest {
 
     @Test
     public void testSearchPath2Elements() {
+        final SlingHttpServletRequest request = 
this.createRequest(this.resource);
         String root0 = "/apps/";
         String root1 = "/libs/";
         searchPathOptions.setSearchPaths(new String[] {root0, root1});
@@ -152,7 +159,7 @@ public class LocationCollectorTest {
      * @param newResourceSuperType the new resource super type, or null to not 
change it
      * @return the new resource
      */
-    protected void replaceResource(String newResourceType, String 
newResourceSuperType) {
+    protected Resource replaceResource(String newResourceType, String 
newResourceSuperType) {
         @SuppressWarnings("unchecked")
         Map<String, Object> props = new HashMap<>(resource.adaptTo(Map.class));
         if (newResourceType != null) {
@@ -162,11 +169,12 @@ public class LocationCollectorTest {
             props.put("sling:resourceSuperType", newResourceSuperType);
         }
         Resource r = addOrReplaceResource(resolver, resource.getPath(), props);
-        request.setResource(r);
+        return r;
     }
 
     @Test
     public void testSearchPathEmptyAbsoluteType() {
+        final SlingHttpServletRequest request = 
this.createRequest(this.resource);
         // expect path gets { "/" }
         searchPathOptions.setSearchPaths(null);
 
@@ -186,13 +194,14 @@ public class LocationCollectorTest {
 
     @Test
     public void testSearchPath1ElementAbsoluteType() {
+        SlingHttpServletRequest request = this.createRequest(this.resource);
         String root0 = "/apps/";
         searchPathOptions.setSearchPaths(new String[] {root0});
 
         // absolute resource type
         resourceType = "/foo/bar";
         resourceTypePath = ResourceUtil.resourceTypeToPath(resourceType);
-        replaceResource(resourceType, null);
+        request = this.createRequest(replaceResource(resourceType, null));
 
         final Resource r = request.getResource();
         List<Resource> loc = getLocations(r.getResourceType(), 
r.getResourceSuperType());
@@ -205,6 +214,7 @@ public class LocationCollectorTest {
 
     @Test
     public void testSearchPath2ElementsAbsoluteType() {
+        SlingHttpServletRequest request = this.createRequest(this.resource);
         String root0 = "/apps/";
         String root1 = "/libs/";
         searchPathOptions.setSearchPaths(new String[] {root0, root1});
@@ -212,7 +222,7 @@ public class LocationCollectorTest {
         // absolute resource type
         resourceType = "/foo/bar";
         resourceTypePath = ResourceUtil.resourceTypeToPath(resourceType);
-        replaceResource(resourceType, null);
+        request = this.createRequest(replaceResource(resourceType, null));
 
         final Resource r = request.getResource();
         List<Resource> loc = getLocations(r.getResourceType(), 
r.getResourceSuperType());
@@ -226,13 +236,14 @@ public class LocationCollectorTest {
 
     @Test
     public void testSearchPathEmptyWithSuper() {
+        SlingHttpServletRequest request = this.createRequest(this.resource);
         // expect path gets { "/" }
         searchPathOptions.setSearchPaths(null);
 
         // set resource super type
         resourceSuperType = "foo:superBar";
         resourceSuperTypePath = 
ResourceUtil.resourceTypeToPath(resourceSuperType);
-        replaceResource(null, resourceSuperType);
+        request = this.createRequest(replaceResource(null, resourceSuperType));
 
         final Resource r = request.getResource();
         List<Resource> loc = getLocations(r.getResourceType(), 
r.getResourceSuperType());
@@ -246,13 +257,14 @@ public class LocationCollectorTest {
 
     @Test
     public void testSearchPath1ElementWithSuper() {
+        SlingHttpServletRequest request = this.createRequest(this.resource);
         String root0 = "/apps/";
         searchPathOptions.setSearchPaths(new String[] {root0});
 
         // set resource super type
         resourceSuperType = "foo:superBar";
         resourceSuperTypePath = 
ResourceUtil.resourceTypeToPath(resourceSuperType);
-        replaceResource(null, resourceSuperType);
+        request = this.createRequest(replaceResource(null, resourceSuperType));
 
         final Resource r = request.getResource();
         List<Resource> loc = getLocations(r.getResourceType(), 
r.getResourceSuperType());
@@ -266,6 +278,7 @@ public class LocationCollectorTest {
 
     @Test
     public void testSearchPath2ElementsWithSuper() {
+        SlingHttpServletRequest request = this.createRequest(this.resource);
         String root0 = "/apps/";
         String root1 = "/libs/";
         searchPathOptions.setSearchPaths(new String[] {root0, root1});
@@ -273,7 +286,7 @@ public class LocationCollectorTest {
         // set resource super type
         resourceSuperType = "foo:superBar";
         resourceSuperTypePath = 
ResourceUtil.resourceTypeToPath(resourceSuperType);
-        replaceResource(null, resourceSuperType);
+        request = this.createRequest(replaceResource(null, resourceSuperType));
 
         final Resource r = request.getResource();
         List<Resource> loc = getLocations(r.getResourceType(), 
r.getResourceSuperType());
@@ -290,6 +303,7 @@ public class LocationCollectorTest {
 
     @Test
     public void testSearchPathEmptyAbsoluteTypeWithSuper() {
+        SlingHttpServletRequest request = this.createRequest(this.resource);
         // expect path gets { "/" }
         searchPathOptions.setSearchPaths(null);
 
@@ -300,7 +314,7 @@ public class LocationCollectorTest {
         // set resource super type
         resourceSuperType = "foo:superBar";
         resourceSuperTypePath = 
ResourceUtil.resourceTypeToPath(resourceSuperType);
-        replaceResource(resourceType, resourceSuperType);
+        request = this.createRequest(replaceResource(resourceType, 
resourceSuperType));
 
         final Resource r = request.getResource();
         List<Resource> loc = getLocations(r.getResourceType(), 
r.getResourceSuperType());
@@ -314,6 +328,7 @@ public class LocationCollectorTest {
 
     @Test
     public void testSearchPath1ElementAbsoluteTypeWithSuper() {
+        SlingHttpServletRequest request = this.createRequest(this.resource);
         String root0 = "/apps/";
         searchPathOptions.setSearchPaths(new String[] {root0});
 
@@ -324,7 +339,7 @@ public class LocationCollectorTest {
         // set resource super type
         resourceSuperType = "foo:superBar";
         resourceSuperTypePath = 
ResourceUtil.resourceTypeToPath(resourceSuperType);
-        replaceResource(resourceType, resourceSuperType);
+        request = this.createRequest(replaceResource(resourceType, 
resourceSuperType));
 
         final Resource r = request.getResource();
         List<Resource> loc = getLocations(r.getResourceType(), 
r.getResourceSuperType());
@@ -338,6 +353,7 @@ public class LocationCollectorTest {
 
     @Test
     public void testSearchPath2ElementsAbsoluteTypeWithSuper() {
+        SlingHttpServletRequest request = this.createRequest(this.resource);
         String root0 = "/apps/";
         String root1 = "/libs/";
         searchPathOptions.setSearchPaths(new String[] {root0, root1});
@@ -349,7 +365,7 @@ public class LocationCollectorTest {
         // set resource super type
         resourceSuperType = "foo:superBar";
         resourceSuperTypePath = 
ResourceUtil.resourceTypeToPath(resourceSuperType);
-        replaceResource(resourceType, resourceSuperType);
+        request = this.createRequest(replaceResource(resourceType, 
resourceSuperType));
 
         final Resource r = request.getResource();
         List<Resource> loc = getLocations(r.getResourceType(), 
r.getResourceSuperType());
@@ -365,6 +381,7 @@ public class LocationCollectorTest {
 
     @Test
     public void testScriptNameWithoutResourceType() {
+        final SlingHttpServletRequest request = 
this.createRequest(this.resource);
         String root0 = "/apps/";
         String root1 = "/libs/";
         searchPathOptions.setSearchPaths(new String[] {root0, root1});
@@ -518,6 +535,7 @@ public class LocationCollectorTest {
 
     @Test
     public void checkThatTheCacheIsUsed() {
+        final SlingHttpServletRequest request = 
this.createRequest(this.resource);
 
         // skip if the test runs without caching
         if (!useResourceCaching) {
@@ -552,6 +570,7 @@ public class LocationCollectorTest {
 
     @Test
     public void testWithCacheMapKeyAlreadyUsed() {
+        final SlingHttpServletRequest request = 
this.createRequest(this.resource);
         // if the cacheKey in the ResourceResolverMap is already used, make 
sure that it's not overwritten
         // this is an adapted copy of the testSearchPath1Element testcase
 
diff --git 
a/src/test/java/org/apache/sling/servlets/resolver/internal/helper/ResourceCollectorTest.java
 
b/src/test/java/org/apache/sling/servlets/resolver/internal/helper/ResourceCollectorTest.java
index 0383f61..3ee4105 100644
--- 
a/src/test/java/org/apache/sling/servlets/resolver/internal/helper/ResourceCollectorTest.java
+++ 
b/src/test/java/org/apache/sling/servlets/resolver/internal/helper/ResourceCollectorTest.java
@@ -26,6 +26,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceUtil;
 
@@ -41,6 +42,7 @@ public class ResourceCollectorTest extends HelperTestBase {
     }
 
     public void testGetServlets0() {
+        SlingHttpServletRequest req = makeRequest("GET", "print.a4", "html");
         String[] names = {
             "/" + label + ".esp", // 0
             "/GET.esp", // 1
@@ -55,10 +57,11 @@ public class ResourceCollectorTest extends HelperTestBase {
         int[] baseIdxs = {0, 1, 1, 0, 0, 1, 0, 1, 0, 1};
         int[] indices = {7, 5, 6, 4, 2, 3, 0, 1};
 
-        effectiveTest(names, baseIdxs, indices);
+        effectiveTest(req, names, baseIdxs, indices);
     }
 
     public void testGetServlets1() {
+        SlingHttpServletRequest req = makeRequest("GET", "print.a4", "html");
         String[] names = {
             "/" + label + ".esp", // 0
             "/GET.esp", // 1
@@ -73,10 +76,11 @@ public class ResourceCollectorTest extends HelperTestBase {
         int[] baseIdxs = {0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1};
         int[] indices = {7, 6, 3, 2, 0, 1};
 
-        effectiveTest(names, baseIdxs, indices);
+        effectiveTest(req, names, baseIdxs, indices);
     }
 
     public void testGetServlets2() {
+        SlingHttpServletRequest req = makeRequest("GET", "print.a4", "html");
         String[] names = {
             "/" + label + ".esp", // 0
             "/GET.esp", // 1
@@ -92,10 +96,11 @@ public class ResourceCollectorTest extends HelperTestBase {
         int[] baseIdxs = {0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1};
         int[] indices = {8, 7, 2, 3, 0, 1};
 
-        effectiveTest(names, baseIdxs, indices);
+        effectiveTest(req, names, baseIdxs, indices);
     }
 
     public void testGetServlets3() {
+        SlingHttpServletRequest req = makeRequest("GET", "print.a4", "html");
         String[] names = {
             ".servlet", // 0
             "/" + label + ".esp", // 1
@@ -112,10 +117,11 @@ public class ResourceCollectorTest extends HelperTestBase 
{
         int[] baseIdxs = {0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1};
         int[] indices = {9, 8, 3, 4, 1, 2, 0};
 
-        effectiveTest(names, baseIdxs, indices);
+        effectiveTest(req, names, baseIdxs, indices);
     }
 
     public void testGetServlets4() {
+        SlingHttpServletRequest req = makeRequest("GET", "print.a4", "html");
         String[] names = {
             ".servlet", // 0
             "/" + label + ".esp", // 1
@@ -133,10 +139,11 @@ public class ResourceCollectorTest extends HelperTestBase 
{
         int[] baseIdxs = {0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1};
         int[] indices = {10, 9, 3, 4, 1, 2, 0};
 
-        effectiveTest(names, baseIdxs, indices);
+        effectiveTest(req, names, baseIdxs, indices);
     }
 
     public void testGetServletsWithMethod() {
+        SlingHttpServletRequest req = makeRequest("GET", "print.a4", "html");
         String[] names = {
             "/html.servlet", // 7
             "/html.GET.servlet"
@@ -145,10 +152,11 @@ public class ResourceCollectorTest extends HelperTestBase 
{
         int[] baseIdxs = {1, 1};
         int[] indices = {1, 0};
 
-        effectiveTest(names, baseIdxs, indices);
+        effectiveTest(req, names, baseIdxs, indices);
     }
 
     public void testGetServletsScriptExtensionsPriority() {
+        SlingHttpServletRequest req = makeRequest("GET", "print.a4", "html");
         String[] names = {
             ".servlet", // 0
             "/" + label + ".esp", // 1
@@ -169,7 +177,7 @@ public class ResourceCollectorTest extends HelperTestBase {
         int[] baseIdxs = {0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0};
         int[] indices = {12, 13, 11, 10, 9, 3, 4, 1, 2, 0};
 
-        effectiveTest(names, baseIdxs, indices, new ArrayList<String>() {
+        effectiveTest(req, names, baseIdxs, indices, new ArrayList<String>() {
             private static final long serialVersionUID = -2278401285444759128L;
 
             {
@@ -182,6 +190,7 @@ public class ResourceCollectorTest extends HelperTestBase {
     }
 
     public void testGetServletsScriptExtensionsPriority2() {
+        SlingHttpServletRequest req = makeRequest("GET", "print.a4", "html");
         // scripts with extensions not registered by script engine factories
         String[] names = {
             ".servlet", // 0
@@ -204,7 +213,7 @@ public class ResourceCollectorTest extends HelperTestBase {
         int[] baseIdxs = {0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0};
         int[] indices = {12, 13, 11, 10, 9, 3, 4, 1, 2, 0};
 
-        effectiveTest(names, baseIdxs, indices, new ArrayList<String>() {
+        effectiveTest(req, names, baseIdxs, indices, new ArrayList<String>() {
             private static final long serialVersionUID = 4918721764309621104L;
 
             {
@@ -215,6 +224,7 @@ public class ResourceCollectorTest extends HelperTestBase {
     }
 
     public void testGetServletsScriptExtensionsPriority3() {
+        SlingHttpServletRequest req = makeRequest("GET", "print.a4", "html");
         // scripts with extensions not registered by script engine factories
         String[] names = {
             ".servlet", // 0
@@ -237,7 +247,7 @@ public class ResourceCollectorTest extends HelperTestBase {
         int[] baseIdxs = {0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0};
         int[] indices = {12, 13, 11, 10, 9, 3, 4, 1, 2, 0};
 
-        effectiveTest(names, baseIdxs, indices, new ArrayList<String>() {
+        effectiveTest(req, names, baseIdxs, indices, new ArrayList<String>() {
             private static final long serialVersionUID = 1527098044127506711L;
 
             {
@@ -249,7 +259,7 @@ public class ResourceCollectorTest extends HelperTestBase {
 
     public void testAnyServlets0() {
         // use a request with another request method "ANY"
-        request.setMethod("ANY");
+        SlingHttpServletRequest req = makeRequest("ANY", "print.a4", "html");
 
         String[] names = {
             "/" + label + ".ANY.esp", // 0
@@ -265,12 +275,12 @@ public class ResourceCollectorTest extends HelperTestBase 
{
         int[] baseIdxs = {0, 1, 1, 0, 0, 1, 0, 1, 0, 1};
         int[] indices = {7, 5, 6, 4, 2, 3, 0, 1};
 
-        effectiveTest(names, baseIdxs, indices);
+        effectiveTest(req, names, baseIdxs, indices);
     }
 
     public void testAnyServlets1() {
         // use a request with another request method "ANY"
-        request.setMethod("ANY");
+        SlingHttpServletRequest req = makeRequest("ANY", "print.a4", "html");
 
         String[] names = {
             "/" + label + ".ANY.esp", // 0
@@ -286,12 +296,12 @@ public class ResourceCollectorTest extends HelperTestBase 
{
         int[] baseIdxs = {0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1};
         int[] indices = {7, 6, 3, 2, 0, 1};
 
-        effectiveTest(names, baseIdxs, indices);
+        effectiveTest(req, names, baseIdxs, indices);
     }
 
     public void testAnyServlets2() {
         // use a request with another request method "ANY"
-        request.setMethod("ANY");
+        SlingHttpServletRequest req = makeRequest("ANY", "print.a4", "html");
 
         String[] names = {
             "/" + label + ".ANY.esp", // 0
@@ -308,12 +318,12 @@ public class ResourceCollectorTest extends HelperTestBase 
{
         int[] baseIdxs = {0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1};
         int[] indices = {8, 7, 2, 3, 0, 1};
 
-        effectiveTest(names, baseIdxs, indices);
+        effectiveTest(req, names, baseIdxs, indices);
     }
 
     public void testAnyServlets3() {
         // use a request with another request method "ANY"
-        request.setMethod("ANY");
+        SlingHttpServletRequest req = makeRequest("ANY", "print.a4", "html");
 
         String[] names = {
             ".servlet", // 0
@@ -331,12 +341,12 @@ public class ResourceCollectorTest extends HelperTestBase 
{
         int[] baseIdxs = {0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1};
         int[] indices = {9, 8, 3, 4, 1, 2, 0};
 
-        effectiveTest(names, baseIdxs, indices);
+        effectiveTest(req, names, baseIdxs, indices);
     }
 
     public void testAnyServlets4() {
         // use a request with another request method "ANY"
-        request.setMethod("ANY");
+        SlingHttpServletRequest req = makeRequest("ANY", "print.a4", "html");
 
         String[] names = {
             ".servlet", // 0
@@ -355,12 +365,12 @@ public class ResourceCollectorTest extends HelperTestBase 
{
         int[] baseIdxs = {0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1};
         int[] indices = {10, 9, 3, 4, 1, 2, 0};
 
-        effectiveTest(names, baseIdxs, indices);
+        effectiveTest(req, names, baseIdxs, indices);
     }
 
     public void testAnyServletsScriptExtensionsPriority() {
         // use a request with another request method "ANY"
-        request.setMethod("ANY");
+        SlingHttpServletRequest req = makeRequest("ANY", "print.a4", "html");
 
         String[] names = {
             ".servlet", // 0
@@ -382,7 +392,7 @@ public class ResourceCollectorTest extends HelperTestBase {
         int[] baseIdxs = {0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0};
         int[] indices = {12, 13, 11, 10, 9, 3, 4, 1, 2, 0};
 
-        effectiveTest(names, baseIdxs, indices, new ArrayList<String>() {
+        effectiveTest(req, names, baseIdxs, indices, new ArrayList<String>() {
             private static final long serialVersionUID = 3909592432283252117L;
 
             {
@@ -394,11 +404,16 @@ public class ResourceCollectorTest extends HelperTestBase 
{
         });
     }
 
-    protected void effectiveTest(String[] names, int[] baseIdxs, int[] 
indices) {
-        effectiveTest(names, baseIdxs, indices, null);
+    protected void effectiveTest(SlingHttpServletRequest r, String[] names, 
int[] baseIdxs, int[] indices) {
+        effectiveTest(r, names, baseIdxs, indices, null);
     }
 
-    protected void effectiveTest(String[] names, int[] baseIdxs, int[] 
indices, List<String> scriptEngineExtensions) {
+    protected void effectiveTest(
+            SlingHttpServletRequest r,
+            String[] names,
+            int[] baseIdxs,
+            int[] indices,
+            List<String> scriptEngineExtensions) {
 
         String[] base = {"/apps/" + resourceTypePath, "/libs/" + 
resourceTypePath};
 
@@ -412,12 +427,12 @@ public class ResourceCollectorTest extends HelperTestBase 
{
             pathMap.put(name, path);
         }
 
-        ResourceCollector lu = ResourceCollector.create(request, null, new 
String[] {"html"}, true);
+        ResourceCollector lu = ResourceCollector.create(r, null, new String[] 
{"html"}, true);
         Collection<Resource> res;
         if (scriptEngineExtensions != null) {
-            res = lu.getServlets(request.getResourceResolver(), 
scriptEngineExtensions);
+            res = lu.getServlets(r.getResourceResolver(), 
scriptEngineExtensions);
         } else {
-            res = lu.getServlets(request.getResourceResolver(), 
Collections.emptyList());
+            res = lu.getServlets(r.getResourceResolver(), 
Collections.emptyList());
         }
         Iterator<Resource> rIter = res.iterator();
 
diff --git 
a/src/test/java/org/apache/sling/servlets/resolver/internal/helper/ScriptSelectionTest.java
 
b/src/test/java/org/apache/sling/servlets/resolver/internal/helper/ScriptSelectionTest.java
index 105e70e..9069a62 100644
--- 
a/src/test/java/org/apache/sling/servlets/resolver/internal/helper/ScriptSelectionTest.java
+++ 
b/src/test/java/org/apache/sling/servlets/resolver/internal/helper/ScriptSelectionTest.java
@@ -21,8 +21,8 @@ package org.apache.sling.servlets.resolver.internal.helper;
 import java.util.Collection;
 import java.util.Collections;
 
+import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.resource.Resource;
-import org.apache.sling.commons.testing.sling.MockSlingHttpServletRequest;
 
 /** Various tests that explain and demonstrate how scripts are
  *  selected. See the assertScript methods for how to interpret
@@ -64,7 +64,7 @@ public class ScriptSelectionTest extends HelperTestBase {
         }
 
         // Create mock request and get scripts from ResourceCollector
-        final MockSlingHttpServletRequest req = makeRequest(method, selectors, 
extension);
+        final SlingHttpServletRequest req = makeRequest(method, selectors, 
extension);
         final ResourceCollector u = ResourceCollector.create(req, null, new 
String[] {"html"}, true);
         final Collection<Resource> s = 
u.getServlets(req.getResourceResolver(), Collections.emptyList());
 
diff --git 
a/src/test/java/org/apache/sling/servlets/resolver/internal/resourcehiding/ServletHidingTest.java
 
b/src/test/java/org/apache/sling/servlets/resolver/internal/resourcehiding/ServletHidingTest.java
index e7d366b..7a7cb54 100644
--- 
a/src/test/java/org/apache/sling/servlets/resolver/internal/resourcehiding/ServletHidingTest.java
+++ 
b/src/test/java/org/apache/sling/servlets/resolver/internal/resourcehiding/ServletHidingTest.java
@@ -26,10 +26,13 @@ import java.util.Map;
 import java.util.UUID;
 import java.util.concurrent.atomic.AtomicBoolean;
 
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.api.request.builder.Builders;
 import org.apache.sling.api.resource.PersistenceException;
+import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceUtil;
+import org.apache.sling.api.resource.SyntheticResource;
 import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
-import org.apache.sling.commons.testing.sling.MockSlingHttpServletRequest;
 import org.apache.sling.servlets.resolver.api.IgnoredServletResourcePredicate;
 import 
org.apache.sling.servlets.resolver.internal.SlingServletResolverTestBase;
 import org.apache.sling.servlets.resolver.internal.helper.HelperTestBase;
@@ -46,6 +49,8 @@ public class ServletHidingTest extends 
SlingServletResolverTestBase {
 
     private static final String TEST_ID = UUID.randomUUID().toString();
 
+    private static final String TEST_RESOURCE_TYPE = "foo/bar";
+
     protected static class TestServlet extends SlingSafeMethodsServlet {
         private final String id;
 
@@ -77,15 +82,15 @@ public class ServletHidingTest extends 
SlingServletResolverTestBase {
     }
 
     private Servlet resolveServlet() {
-        MockSlingHttpServletRequest req =
-                new 
MockSlingHttpServletRequest(MockSlingHttpServletRequest.RESOURCE_TYPE, null, 
"html", null, null);
-        req.setResourceResolver(mockResourceResolver);
+        final Resource resource = new SyntheticResource(mockResourceResolver, 
"/content/foobar", TEST_RESOURCE_TYPE);
+        SlingHttpServletRequest req =
+                
Builders.newRequestBuilder(resource).withExtension("html").build();
         return servletResolver.resolveServlet(req);
     }
 
     @Override
     protected void defineTestServlets(Bundle bundle) {
-        registerServlet(TEST_ID, MockSlingHttpServletRequest.RESOURCE_TYPE);
+        registerServlet(TEST_ID, TEST_RESOURCE_TYPE);
     }
 
     private void assertResolvesToTestServletId(String info, boolean 
expectMatch) {
diff --git 
a/src/test/java/org/apache/sling/servlets/resolver/it/SLING10478IT.java 
b/src/test/java/org/apache/sling/servlets/resolver/it/SLING10478IT.java
index 30dfd68..f63b07d 100644
--- a/src/test/java/org/apache/sling/servlets/resolver/it/SLING10478IT.java
+++ b/src/test/java/org/apache/sling/servlets/resolver/it/SLING10478IT.java
@@ -28,7 +28,10 @@ import java.lang.reflect.InvocationTargetException;
 
 import jakarta.json.Json;
 import jakarta.json.stream.JsonGenerator;
-import org.apache.sling.servlethelpers.MockSlingHttpServletResponse;
+import org.apache.sling.api.SlingHttpServletResponse;
+import org.apache.sling.api.request.builder.Builders;
+import org.apache.sling.api.request.builder.SlingHttpServletResponseResult;
+import org.apache.sling.api.wrappers.SlingHttpServletResponseWrapper;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -92,11 +95,6 @@ public class SLING10478IT extends ServletResolverTestSupport 
{
                 .register(bundleContext);
     }
 
-    @Override
-    protected MockSlingHttpServletResponse 
createMockSlingHttpServletResponse() {
-        return new HandleErrorMockSlingHttpServletResponse();
-    }
-
     /**
      * Test an error handling servlet that closes the response writer
      */
@@ -113,9 +111,16 @@ public class SLING10478IT extends 
ServletResolverTestSupport {
         checkErrorHandlerServlet("/not_real_path.noclose");
     }
 
+    protected SlingHttpServletResponse createMockSlingHttpServletResponse() {
+        final SlingHttpServletResponse response = 
Builders.newResponseBuilder().build();
+        return new HandleErrorMockSlingHttpServletResponse(response);
+    }
+
     void checkErrorHandlerServlet(String path) throws Exception, 
InvocationTargetException {
         try {
-            final String output = executeRequest(M_GET, path, 
HttpServletResponse.SC_NOT_FOUND)
+            final SlingHttpServletResponse response = executeRequest(M_GET, 
path, HttpServletResponse.SC_NOT_FOUND);
+            final String output = ((SlingHttpServletResponseResult)
+                            ((HandleErrorMockSlingHttpServletResponse) 
response).getResponse())
                     .getOutputAsString();
             assertNotNull(output);
             assertTrue(output, output.contains("hello"));
@@ -132,11 +137,16 @@ public class SLING10478IT extends 
ServletResolverTestSupport {
     /**
      * Subclass to simulate what the SlingHttpServletResponseImpl writer does
      */
-    private static final class HandleErrorMockSlingHttpServletResponse extends 
MockSlingHttpServletResponse {
+    private static final class HandleErrorMockSlingHttpServletResponse extends 
SlingHttpServletResponseWrapper {
+
         private HandleErrorResponseWriter writer = null;
 
+        public HandleErrorMockSlingHttpServletResponse(final 
SlingHttpServletResponse r) {
+            super(r);
+        }
+
         @Override
-        public PrintWriter getWriter() {
+        public PrintWriter getWriter() throws IOException {
             if (writer == null) {
                 writer = new HandleErrorResponseWriter(super.getWriter());
             }
@@ -144,7 +154,7 @@ public class SLING10478IT extends 
ServletResolverTestSupport {
         }
 
         @Override
-        public void flushBuffer() {
+        public void flushBuffer() throws IOException {
             if (!writer.isOpen()) {
                 throw new IllegalStateException("Writer Already Closed");
             }
diff --git 
a/src/test/java/org/apache/sling/servlets/resolver/it/ScriptEngineManagerMock.java
 
b/src/test/java/org/apache/sling/servlets/resolver/it/ScriptEngineManagerMock.java
new file mode 100644
index 0000000..a1cb7cc
--- /dev/null
+++ 
b/src/test/java/org/apache/sling/servlets/resolver/it/ScriptEngineManagerMock.java
@@ -0,0 +1,29 @@
+/*
+ * 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.servlets.resolver.it;
+
+import javax.script.ScriptEngineManager;
+
+import org.osgi.service.component.annotations.Component;
+
+@Component(service = ScriptEngineManager.class)
+public class ScriptEngineManagerMock extends ScriptEngineManager {
+
+    // nothing to do
+}
diff --git 
a/src/test/java/org/apache/sling/servlets/resolver/it/ServletResolverTestSupport.java
 
b/src/test/java/org/apache/sling/servlets/resolver/it/ServletResolverTestSupport.java
index 6c42a9f..22303f3 100644
--- 
a/src/test/java/org/apache/sling/servlets/resolver/it/ServletResolverTestSupport.java
+++ 
b/src/test/java/org/apache/sling/servlets/resolver/it/ServletResolverTestSupport.java
@@ -19,33 +19,32 @@
 package org.apache.sling.servlets.resolver.it;
 
 import javax.inject.Inject;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import java.lang.reflect.Method;
 
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.api.SlingHttpServletResponse;
+import org.apache.sling.api.request.builder.Builders;
+import org.apache.sling.api.request.builder.SlingHttpServletResponseResult;
+import org.apache.sling.api.resource.AbstractResource;
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.resource.ResourceMetadata;
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.resource.ResourceResolverFactory;
 import org.apache.sling.engine.SlingRequestProcessor;
-import org.apache.sling.servlethelpers.MockSlingHttpServletRequest;
-import org.apache.sling.servlethelpers.MockSlingHttpServletResponse;
 import org.apache.sling.testing.paxexam.TestSupport;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 import org.ops4j.pax.exam.Configuration;
 import org.ops4j.pax.exam.Option;
 import org.ops4j.pax.exam.options.extra.VMOption;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
 
-import static org.apache.sling.testing.paxexam.SlingOptions.sling;
-import static org.apache.sling.testing.paxexam.SlingOptions.slingScripting;
-import static org.apache.sling.testing.paxexam.SlingOptions.slingXss;
-import static org.apache.sling.testing.paxexam.SlingOptions.versionResolver;
-import static 
org.apache.sling.testing.paxexam.SlingVersionResolver.SLING_GROUP_ID;
+import static org.apache.sling.testing.paxexam.SlingOptions.eventadmin;
+import static org.apache.sling.testing.paxexam.SlingOptions.scr;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 import static org.ops4j.pax.exam.CoreOptions.composite;
-import static org.ops4j.pax.exam.CoreOptions.junitBundles;
 import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
 import static org.ops4j.pax.exam.CoreOptions.options;
 import static org.ops4j.pax.exam.CoreOptions.vmOption;
@@ -56,15 +55,11 @@ import static 
org.ops4j.pax.exam.cm.ConfigurationAdminOptions.newConfiguration;
 public class ServletResolverTestSupport extends TestSupport {
 
     @Inject
-    private ResourceResolverFactory resourceResolverFactory;
+    protected ResourceResolverFactory resourceResolverFactory;
 
     @Inject
     protected BundleContext bundleContext;
 
-    @SuppressWarnings("unused")
-    @Inject
-    private SlingRequestProcessor slingRequestProcessor;
-
     public static final String P_PATHS = "sling.servlet.paths";
     public static final String P_RESOURCE_TYPES = 
"sling.servlet.resourceTypes";
     public static final String P_METHODS = "sling.servlet.methods";
@@ -97,63 +92,101 @@ public class ServletResolverTestSupport extends 
TestSupport {
         }
 
         final int httpPort = findFreePort();
-        versionResolver.setVersionFromProject(SLING_GROUP_ID, 
"org.apache.sling.api");
-        versionResolver.setVersionFromProject(SLING_GROUP_ID, 
"org.apache.sling.resourceresolver");
-        versionResolver.setVersionFromProject(SLING_GROUP_ID, 
"org.apache.sling.scripting.core");
-        versionResolver.setVersionFromProject(SLING_GROUP_ID, 
"org.apache.sling.commons.johnzon");
-        versionResolver.setVersionFromProject(SLING_GROUP_ID, 
"org.apache.sling.engine");
-        versionResolver.setVersion(SLING_GROUP_ID, 
"org.apache.sling.auth.core", "1.6.0");
-        versionResolver.setVersion("commons-fileupload", "commons-fileupload", 
"1.5");
         return options(composite(
                 when(debugOption != null).useOptions(debugOption),
                 when(vmOption != null).useOptions(vmOption),
                 when(jacocoCommand != null).useOptions(jacocoCommand),
                 baseConfiguration(),
-                sling(),
-                slingScripting(),
-                slingXss(),
-                
factoryConfiguration("org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended")
-                        .put("user.mapping", new String[] {
-                            
"org.apache.sling.servlets.resolver:console=sling-readall",
-                            
"org.apache.sling.servlets.resolver:scripts=sling-scripting"
-                        })
-                        .asOption(),
+                mavenBundle()
+                        .groupId("org.apache.felix")
+                        .artifactId("org.apache.felix.http.servlet-api")
+                        .version("3.0.0"),
+                mavenBundle()
+                        .groupId("org.apache.felix")
+                        .artifactId("org.apache.felix.http.jetty12")
+                        .version("1.0.26"),
+                scr(),
+                eventadmin(),
                 mavenBundle()
                         .groupId("org.osgi")
                         .artifactId("org.osgi.util.converter")
-                        .version("1.0.9"), // new Sling API dependency
-                testBundle(),
+                        .version("1.0.9"),
                 mavenBundle()
                         .groupId("org.apache.sling")
-                        .artifactId("org.apache.sling.scripting.spi")
+                        .artifactId("org.apache.sling.commons.johnzon")
                         .versionAsInProject(),
+                
mavenBundle().groupId("commons-io").artifactId("commons-io").versionAsInProject(),
+                mavenBundle()
+                        .groupId("commons-codec")
+                        .artifactId("commons-codec")
+                        .version("1.15"),
+                mavenBundle()
+                        .groupId("org.apache.commons")
+                        .artifactId("commons-lang3")
+                        .versionAsInProject(),
+                mavenBundle()
+                        .groupId("org.apache.commons")
+                        .artifactId("commons-collections4")
+                        .version("4.4"),
                 mavenBundle()
                         .groupId("org.apache.sling")
-                        .artifactId("org.apache.sling.servlet-helpers")
+                        .artifactId("org.apache.sling.commons.mime")
                         .versionAsInProject(),
                 mavenBundle()
-                        .groupId("org.glassfish")
-                        .artifactId("jakarta.json")
+                        .groupId("org.apache.sling")
+                        .artifactId("org.apache.sling.commons.osgi")
+                        .version("2.4.2"),
+                mavenBundle()
+                        .groupId("org.apache.sling")
+                        .artifactId("org.apache.sling.api")
                         .versionAsInProject(),
-                //
                 mavenBundle()
-                        .groupId("commons-codec")
-                        .artifactId("commons-codec")
-                        .version("1.15"),
-                //
+                        .groupId("org.apache.sling")
+                        .artifactId("org.apache.sling.scripting.spi")
+                        .versionAsInProject(),
+                mavenBundle()
+                        .groupId("org.apache.sling")
+                        .artifactId("org.apache.sling.serviceusermapper")
+                        .versionAsInProject(),
                 mavenBundle()
                         .groupId("org.apache.felix")
                         .artifactId("org.apache.felix.healthcheck.api")
                         .versionAsInProject(),
-                //
-                junitBundles(),
+                mavenBundle()
+                        .groupId("org.apache.sling")
+                        .artifactId("org.apache.sling.auth.core")
+                        .versionAsInProject(),
+                mavenBundle()
+                        .groupId("org.apache.sling")
+                        .artifactId("org.apache.sling.resourceresolver")
+                        .versionAsInProject(),
+                mavenBundle()
+                        .groupId("org.apache.sling")
+                        .artifactId("org.apache.sling.settings")
+                        .version("1.4.2"),
+                mavenBundle()
+                        .groupId("commons-fileupload")
+                        .artifactId("commons-fileupload")
+                        .version("1.5"),
+                mavenBundle()
+                        .groupId("org.apache.sling")
+                        .artifactId("org.apache.sling.engine")
+                        .versionAsInProject(),
+                
factoryConfiguration("org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended")
+                        .put("user.mapping", new String[] {
+                            
"org.apache.sling.servlets.resolver:console=sling-readall",
+                            
"org.apache.sling.servlets.resolver:scripts=sling-scripting"
+                        })
+                        .asOption(),
                 newConfiguration("org.apache.felix.http")
                         .put("org.osgi.service.http.port", httpPort)
                         .asOption(),
                 
newConfiguration("org.apache.sling.jcr.resource.internal.JcrResourceResolverFactoryImpl")
                         .put("resource.resolver.required.providernames", "")
                         .asOption(),
-                buildBundleWithBnd(TestResourceProvider.class, 
TestServiceUserValidator.class),
+                buildBundleWithBnd(
+                        TestResourceProvider.class, 
TestServiceUserValidator.class, ScriptEngineManagerMock.class),
+                testBundle(),
                 
newConfiguration("org.apache.sling.jcr.base.internal.LoginAdminWhitelist")
                         .put("whitelist.bundles.regexp", "^PAXEXAM.*$")
                         .asOption(),
@@ -166,45 +199,56 @@ public class ServletResolverTestSupport extends 
TestSupport {
         return testBundle("bundle.filename");
     }
 
-    protected MockSlingHttpServletResponse executeRequest(final String path, 
final int expectedStatus)
-            throws Exception {
+    protected SlingHttpServletResponse createMockSlingHttpServletResponse() {
+        return Builders.newResponseBuilder().build();
+    }
+
+    protected SlingHttpServletResponse executeRequest(final String path, final 
int expectedStatus) throws Exception {
         return executeRequest("GET", path, expectedStatus);
     }
 
-    protected MockSlingHttpServletResponse executeRequest(
-            final String method, final String path, final int expectedStatus) 
throws Exception {
+    protected SlingHttpServletResponse executeRequest(final String method, 
final String path, final int expectedStatus)
+            throws Exception {
         final ResourceResolver resourceResolver = 
resourceResolverFactory.getAdministrativeResourceResolver(null);
         assertNotNull("Expecting ResourceResolver", resourceResolver);
-        final MockSlingHttpServletRequest request = new 
MockSlingHttpServletRequest(resourceResolver) {
+        final Resource resource = new AbstractResource() {
+            @Override
+            public String getPath() {
+                return path;
+            }
+
+            @Override
+            public @NotNull String getResourceType() {
+                return "foo/bar";
+            }
+
+            @Override
+            public @Nullable String getResourceSuperType() {
+                return null;
+            }
+
             @Override
-            public String getMethod() {
-                return method;
+            public @NotNull ResourceMetadata getResourceMetadata() {
+                return new ResourceMetadata();
+            }
+
+            @Override
+            public @NotNull ResourceResolver getResourceResolver() {
+                return resourceResolver;
             }
         };
-        request.setPathInfo(path);
-        final MockSlingHttpServletResponse response = 
createMockSlingHttpServletResponse();
-
-        // Get SlingRequestProcessor.processRequest method and execute request
-        // This module depends on an older version of the sling.engine module 
and I don't want
-        // to change it just for these tests, so using reflection to get the 
processor, as we're
-        // running with a more recent version of sling.engine in the pax exam 
environment
-        final String slingRequestProcessorClassName = 
"org.apache.sling.engine.SlingRequestProcessor";
-        final ServiceReference<?> ref = 
bundleContext.getServiceReference(slingRequestProcessorClassName);
-        assertNotNull("Expecting service:" + slingRequestProcessorClassName, 
ref);
-
-        final Object processor = bundleContext.getService(ref);
+
+        final SlingHttpServletRequest request =
+                
Builders.newRequestBuilder(resource).withRequestMethod(method).build();
+        final SlingHttpServletResponse response = 
createMockSlingHttpServletResponse();
+
+        final ServiceReference<SlingRequestProcessor> ref =
+                bundleContext.getServiceReference(SlingRequestProcessor.class);
+        assertNotNull("Expecting service:" + SlingRequestProcessor.class, ref);
+
+        final SlingRequestProcessor processor = bundleContext.getService(ref);
         try {
-            // void processRequest(javax.servlet.http.HttpServletRequest 
request, javax.servlet.http.HttpServletResponse
-            // resource, ResourceResolver resourceResolver)
-            final Method processMethod = processor
-                    .getClass()
-                    .getMethod(
-                            "processRequest",
-                            HttpServletRequest.class,
-                            HttpServletResponse.class,
-                            ResourceResolver.class);
-            assertNotNull("Expecting processRequest method", processMethod);
-            processMethod.invoke(processor, request, response, 
resourceResolver);
+            processor.processRequest(request, response, resourceResolver);
         } finally {
             bundleContext.ungetService(ref);
         }
@@ -219,10 +263,6 @@ public class ServletResolverTestSupport extends 
TestSupport {
         return response;
     }
 
-    protected MockSlingHttpServletResponse 
createMockSlingHttpServletResponse() {
-        return new MockSlingHttpServletResponse();
-    }
-
     protected void assertTestServlet(final String path, int expectedStatus) 
throws Exception {
         assertTestServlet(M_GET, path, expectedStatus);
     }
@@ -237,8 +277,8 @@ public class ServletResolverTestSupport extends TestSupport 
{
 
     protected void assertTestServlet(final String method, final String path, 
final String servletName)
             throws Exception {
-        final String output =
-                executeRequest(method, path, 
TestServlet.IM_A_TEAPOT).getOutputAsString();
+        final SlingHttpServletResponse response = executeRequest(method, path, 
TestServlet.IM_A_TEAPOT);
+        final String output = ((SlingHttpServletResponseResult) 
response).getOutputAsString();
         final String expected = TestServlet.SERVED_BY_PREFIX + servletName;
         assertTrue("Expecting output to contain " + expected + ", got " + 
output, output.contains(expected));
     }
diff --git 
a/src/test/java/org/apache/sling/servlets/resolver/it/ServletResourceIT.java 
b/src/test/java/org/apache/sling/servlets/resolver/it/ServletResourceIT.java
index 73d56ad..e7994c7 100644
--- a/src/test/java/org/apache/sling/servlets/resolver/it/ServletResourceIT.java
+++ b/src/test/java/org/apache/sling/servlets/resolver/it/ServletResourceIT.java
@@ -18,23 +18,22 @@
  */
 package org.apache.sling.servlets.resolver.it;
 
-import javax.inject.Inject;
 import javax.script.ScriptException;
 import javax.servlet.Servlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import java.io.FileInputStream;
-import java.io.FileNotFoundException;
+import java.io.IOException;
 import java.util.Dictionary;
 import java.util.Hashtable;
 import java.util.LinkedHashSet;
 import java.util.Set;
+import java.util.jar.JarInputStream;
 
 import org.apache.sling.api.resource.LoginException;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceResolver;
-import org.apache.sling.api.resource.ResourceResolverFactory;
 import org.apache.sling.api.servlets.ServletResolverConstants;
 import org.apache.sling.scripting.spi.bundle.BundledRenderUnit;
 import org.apache.sling.scripting.spi.bundle.TypeProvider;
@@ -48,8 +47,8 @@ import org.ops4j.pax.exam.Option;
 import org.ops4j.pax.exam.junit.PaxExam;
 import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
 import org.ops4j.pax.exam.spi.reactors.PerClass;
-import org.ops4j.pax.tinybundles.core.TinyBundle;
-import org.ops4j.pax.tinybundles.core.TinyBundles;
+import org.ops4j.pax.tinybundles.TinyBundle;
+import org.ops4j.pax.tinybundles.TinyBundles;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 
@@ -63,19 +62,14 @@ public class ServletResourceIT extends 
ServletResolverTestSupport {
 
     private BundledRenderUnit bundledRenderUnit;
 
-    @Inject
-    private ResourceResolverFactory resourceResolverFactory;
-
-    @Inject
-    private BundleContext bundleContext;
-
     protected Option testBundle() {
         try {
-            TinyBundle bundle = TinyBundles.bundle().read(new 
FileInputStream(System.getProperty("bundle.filename")));
+            TinyBundle bundle = TinyBundles.bundle()
+                    .readIn(new JarInputStream(new 
FileInputStream(System.getProperty("bundle.filename"))));
             String header = bundle.getHeader("Export-Package");
-            bundle.set("Export-Package", header + 
",org.apache.sling.servlets.resolver.internal.bundle");
+            bundle.setHeader("Export-Package", header + 
",org.apache.sling.servlets.resolver.internal.bundle");
             return streamBundle(bundle.build()).start();
-        } catch (FileNotFoundException e) {
+        } catch (IOException e) {
             throw new RuntimeException(e);
         }
     }
diff --git 
a/src/test/java/org/apache/sling/servlets/resolver/it/TestResourceProvider.java 
b/src/test/java/org/apache/sling/servlets/resolver/it/TestResourceProvider.java
index 65f6b6c..7c00e2c 100644
--- 
a/src/test/java/org/apache/sling/servlets/resolver/it/TestResourceProvider.java
+++ 
b/src/test/java/org/apache/sling/servlets/resolver/it/TestResourceProvider.java
@@ -21,7 +21,6 @@ package org.apache.sling.servlets.resolver.it;
 import java.util.Iterator;
 
 import org.apache.sling.api.resource.Resource;
-import org.apache.sling.spi.resource.provider.ProviderContext;
 import org.apache.sling.spi.resource.provider.ResolveContext;
 import org.apache.sling.spi.resource.provider.ResourceContext;
 import org.apache.sling.spi.resource.provider.ResourceProvider;
@@ -34,8 +33,6 @@ import org.osgi.service.component.annotations.Component;
         property = {"provider.root=/"})
 public class TestResourceProvider extends ResourceProvider<Void> {
 
-    public TestResourceProvider() {}
-
     @Override
     public @Nullable Resource getResource(
             @NotNull ResolveContext<Void> ctx,
@@ -49,19 +46,4 @@ public class TestResourceProvider extends 
ResourceProvider<Void> {
     public @Nullable Iterator<Resource> listChildren(@NotNull 
ResolveContext<Void> ctx, @NotNull Resource parent) {
         return null;
     }
-
-    @Override
-    public void start(@NotNull ProviderContext ctx) {
-        super.start(ctx);
-    }
-
-    @Override
-    public void stop() {
-        super.stop();
-    }
-
-    @Override
-    public void update(long changeSet) {
-        super.update(changeSet);
-    }
 }

Reply via email to