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

enorman pushed a commit to branch master
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-resourceresolver-mock.git


The following commit(s) were added to refs/heads/master by this push:
     new f88867e  SLING-12867 Update to Sling API 3 (#22)
f88867e is described below

commit f88867ef43788cbe0b7b0e85ed6151b9b2c8d00c
Author: Eric Norman <[email protected]>
AuthorDate: Thu Aug 21 13:22:31 2025 -0700

    SLING-12867 Update to Sling API 3 (#22)
---
 pom.xml                                            | 20 ++++-
 .../resourceresolver/MockResourceResolver.java     | 72 ++++++++++++-----
 .../testing/resourceresolver/package-info.java     |  2 +-
 .../resourceresolver/FindQueryResourcesTest.java   | 10 +--
 .../resourceresolver/MockResourceResolverTest.java | 90 ++++++++++++++++++++++
 5 files changed, 163 insertions(+), 31 deletions(-)

diff --git a/pom.xml b/pom.xml
index 2d4076a..ea0c0fa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,7 +28,7 @@
     </parent>
 
     <artifactId>org.apache.sling.testing.resourceresolver-mock</artifactId>
-    <version>1.5.1-SNAPSHOT</version>
+    <version>2.0.0-SNAPSHOT</version>
 
     <name>Apache Sling Testing Resource Resolver Mock</name>
     <description>Mock for the resource resolver / factory for easier 
testing.</description>
@@ -42,7 +42,7 @@
 
     <properties>
         
<project.build.outputTimestamp>2024-08-21T07:40:06Z</project.build.outputTimestamp>
-        <sling.java.version>11</sling.java.version>
+        <sling.java.version>17</sling.java.version>
     </properties>
 
     <dependencyManagement>
@@ -50,7 +50,7 @@
             <dependency>
                 <groupId>org.apache.sling</groupId>
                 <artifactId>org.apache.sling.api</artifactId>
-                <version>2.25.4</version>
+                <version>3.0.0</version>
             </dependency>
             <dependency>
                 <groupId>org.osgi</groupId>
@@ -100,6 +100,18 @@
             <artifactId>javax.servlet-api</artifactId>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>jakarta.servlet</groupId>
+            <artifactId>jakarta.servlet-api</artifactId>
+            <version>6.0.0</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.apache.felix.http.wrappers</artifactId>
+            <version>1.1.10</version>
+            <scope>provided</scope>
+        </dependency>
 
         <dependency>
             <groupId>org.apache.sling</groupId>
@@ -163,7 +175,7 @@
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-lang3</artifactId>
-            <version>3.13.0</version>
+            <version>3.18.0</version>
             <scope>test</scope>
         </dependency>
     </dependencies>
diff --git 
a/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolver.java
 
b/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolver.java
index f0f15fe..4af6797 100644
--- 
a/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolver.java
+++ 
b/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolver.java
@@ -18,8 +18,6 @@
  */
 package org.apache.sling.testing.resourceresolver;
 
-import javax.servlet.http.HttpServletRequest;
-
 import java.io.Closeable;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -36,6 +34,7 @@ import java.util.Objects;
 import java.util.Set;
 import java.util.regex.Pattern;
 
+import jakarta.servlet.http.HttpServletRequest;
 import org.apache.sling.api.SlingConstants;
 import org.apache.sling.api.SlingException;
 import org.apache.sling.api.adapter.SlingAdaptable;
@@ -46,6 +45,7 @@ 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.ValueMap;
+import org.apache.sling.api.wrappers.JavaxToJakartaRequestWrapper;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 import org.osgi.service.event.Event;
@@ -55,10 +55,9 @@ public class MockResourceResolver extends SlingAdaptable 
implements ResourceReso
 
     private final Map<String, Map<String, Object>> resources;
 
-    private final Map<String, Map<String, Object>> temporaryResources =
-            new LinkedHashMap<String, Map<String, Object>>();
+    private final Map<String, Map<String, Object>> temporaryResources = new 
LinkedHashMap<>();
 
-    private final Set<String> deletedResources = new HashSet<String>();
+    private final Set<String> deletedResources = new HashSet<>();
 
     private final MockResourceResolverFactoryOptions options;
 
@@ -86,17 +85,30 @@ public class MockResourceResolver extends SlingAdaptable 
implements ResourceReso
         this.attributes = attributes;
     }
 
+    /**
+     * @deprecated use {@link 
#resolve(jakarta.servlet.http.HttpServletRequest, String)} instead
+     */
+    @Deprecated(since = "2.5.0")
+    @Override
+    public @NotNull Resource resolve(
+            final @NotNull javax.servlet.http.HttpServletRequest request, 
final @NotNull String absPath) {
+        HttpServletRequest jakartaRequest = 
JavaxToJakartaRequestWrapper.toJakartaRequest(request);
+        return resolve(jakartaRequest, absPath);
+    }
+
     @Override
-    @SuppressWarnings("unused")
-    public @NotNull Resource resolve(final @NotNull HttpServletRequest 
request, final @NotNull String absPath) {
+    public @NotNull Resource resolve(@NotNull HttpServletRequest request, 
@NotNull String absPath) {
         String path = absPath;
-        if (path == null) {
+        if (path == null) { // NOSONAR - ResourceResolver javadocs and 
annotation are in conflict so allow this
             path = "/";
         }
 
-        // split off query string or fragment that may be appendend to the URL
+        // split off query string or fragment that may be appended to the URL
         String urlRemainder = null;
-        int urlRemainderPos = Math.min(path.indexOf('?'), path.indexOf('#'));
+        int urlRemainderPos = path.indexOf('#');
+        if (urlRemainderPos < 0) {
+            urlRemainderPos = path.indexOf('?');
+        }
         if (urlRemainderPos >= 0) {
             urlRemainder = path.substring(urlRemainderPos);
             path = path.substring(0, urlRemainderPos);
@@ -118,24 +130,38 @@ public class MockResourceResolver extends SlingAdaptable 
implements ResourceReso
     }
 
     @Override
-    @SuppressWarnings("null")
+    @SuppressWarnings("java:S2637")
     public @NotNull Resource resolve(final @NotNull String absPath) {
-        return resolve(null, absPath);
+        return resolve((HttpServletRequest) null, absPath);
     }
 
     @Override
-    @SuppressWarnings("null")
+    @SuppressWarnings("java:S2637")
     public @NotNull String map(final @NotNull String resourcePath) {
-        return map(null, resourcePath);
+        return map((HttpServletRequest) null, resourcePath);
+    }
+
+    /**
+     * @deprecated use {@link #map(jakarta.servlet.http.HttpServletRequest, 
String)} instead
+     */
+    @Deprecated(since = "2.5.0")
+    @Override
+    public String map(
+            final @NotNull javax.servlet.http.HttpServletRequest request, 
final @NotNull String resourcePath) {
+        HttpServletRequest jakartaRequest = 
JavaxToJakartaRequestWrapper.toJakartaRequest(request);
+        return map(jakartaRequest, resourcePath);
     }
 
     @Override
-    public String map(final @NotNull HttpServletRequest request, final 
@NotNull String resourcePath) {
+    public @NotNull String map(@NotNull HttpServletRequest request, @NotNull 
String resourcePath) {
         String path = resourcePath;
 
-        // split off query string or fragment that may be appendend to the URL
+        // split off query string or fragment that may be appended to the URL
         String urlRemainder = null;
-        int urlRemainderPos = Math.min(path.indexOf('?'), path.indexOf('#'));
+        int urlRemainderPos = path.indexOf('#');
+        if (urlRemainderPos < 0) {
+            urlRemainderPos = path.indexOf('?');
+        }
         if (urlRemainderPos >= 0) {
             urlRemainder = path.substring(urlRemainderPos);
             path = path.substring(0, urlRemainderPos);
@@ -281,9 +307,9 @@ public class MockResourceResolver extends SlingAdaptable 
implements ResourceReso
     private void clearPropertyMap() {
         if (propertyMap != null) {
             for (Entry<String, Object> entry : propertyMap.entrySet()) {
-                if (entry.getValue() instanceof Closeable) {
+                if (entry.getValue() instanceof Closeable c) {
                     try {
-                        ((Closeable) entry.getValue()).close();
+                        c.close();
                     } catch (Exception e) {
                         // ignore
                     }
@@ -590,9 +616,13 @@ public class MockResourceResolver extends SlingAdaptable 
implements ResourceReso
 
     // --- unsupported operations ---
 
+    /**
+     * @deprecated as of ResourceResolver 2.0.4, use {@link 
#resolve(HttpServletRequest, String)}
+     *             instead.
+     */
     @Override
-    @Deprecated
-    public @NotNull Resource resolve(final @NotNull HttpServletRequest 
request) {
+    @Deprecated(since = "1.1")
+    public @NotNull Resource resolve(final @NotNull 
javax.servlet.http.HttpServletRequest request) {
         throw new UnsupportedOperationException();
     }
 
diff --git 
a/src/main/java/org/apache/sling/testing/resourceresolver/package-info.java 
b/src/main/java/org/apache/sling/testing/resourceresolver/package-info.java
index cc055ba..db60ed0 100644
--- a/src/main/java/org/apache/sling/testing/resourceresolver/package-info.java
+++ b/src/main/java/org/apache/sling/testing/resourceresolver/package-info.java
@@ -19,5 +19,5 @@
 /**
  * Apache Sling Testing Resource Resolver Mock
  */
[email protected]("2.4.0")
[email protected]("2.5.0")
 package org.apache.sling.testing.resourceresolver;
diff --git 
a/src/test/java/org/apache/sling/testing/resourceresolver/FindQueryResourcesTest.java
 
b/src/test/java/org/apache/sling/testing/resourceresolver/FindQueryResourcesTest.java
index 30f6b0d..506ebcc 100644
--- 
a/src/test/java/org/apache/sling/testing/resourceresolver/FindQueryResourcesTest.java
+++ 
b/src/test/java/org/apache/sling/testing/resourceresolver/FindQueryResourcesTest.java
@@ -28,7 +28,7 @@ import java.util.stream.Collectors;
 import java.util.stream.StreamSupport;
 
 import org.apache.commons.collections.IteratorUtils;
-import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Strings;
 import org.apache.sling.api.resource.LoginException;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceResolver;
@@ -111,8 +111,8 @@ public class FindQueryResourcesTest {
         List<Resource> expected2 = List.of(resource2);
 
         ResourceResolver resourceResolver = 
createResourceResolver_addFindResourceHandlers(
-                (query, language) -> StringUtils.equals(query, "q1") ? 
expected1.iterator() : null,
-                (query, language) -> StringUtils.equals(query, "q2") ? 
expected2.iterator() : null);
+                (query, language) -> Strings.CS.equals(query, "q1") ? 
expected1.iterator() : null,
+                (query, language) -> Strings.CS.equals(query, "q2") ? 
expected2.iterator() : null);
 
         assertResources(expected1, resourceResolver.findResources("q1", 
JCR_SQL2));
         assertResources(expected2, resourceResolver.findResources("q2", 
JCR_SQL2));
@@ -140,8 +140,8 @@ public class FindQueryResourcesTest {
 
         List<Map<String, Object>> expected2 = List.of(resource2.getValueMap());
         ResourceResolver resourceResolver = 
createResourceResolver_addQueryResourceHandlers(
-                (query, language) -> StringUtils.equals(query, "q1") ? 
expected1.iterator() : null,
-                (query, language) -> StringUtils.equals(query, "q2") ? 
expected2.iterator() : null);
+                (query, language) -> Strings.CS.equals(query, "q1") ? 
expected1.iterator() : null,
+                (query, language) -> Strings.CS.equals(query, "q2") ? 
expected2.iterator() : null);
 
         assertEquals(expected1, 
IteratorUtils.toList(resourceResolver.queryResources("q1", JCR_SQL2)));
         assertEquals(expected2, 
IteratorUtils.toList(resourceResolver.queryResources("q2", JCR_SQL2)));
diff --git 
a/src/test/java/org/apache/sling/testing/resourceresolver/MockResourceResolverTest.java
 
b/src/test/java/org/apache/sling/testing/resourceresolver/MockResourceResolverTest.java
new file mode 100644
index 0000000..1e15e31
--- /dev/null
+++ 
b/src/test/java/org/apache/sling/testing/resourceresolver/MockResourceResolverTest.java
@@ -0,0 +1,90 @@
+/*
+ * 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.testing.resourceresolver;
+
+import jakarta.servlet.http.HttpServletRequest;
+import org.apache.sling.api.resource.LoginException;
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.resource.ResourceResolver;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+/**
+ *
+ */
+public class MockResourceResolverTest {
+
+    private ResourceResolver resourceResolver;
+
+    @Before
+    public void setUp() throws LoginException {
+        MockResourceResolverFactory factory = new 
MockResourceResolverFactory();
+        resourceResolver = factory.getResourceResolver(null);
+    }
+
+    /**
+     * Test method for {@link 
org.apache.sling.testing.resourceresolver.MockResourceResolver#resolve(javax.servlet.http.HttpServletRequest,
 java.lang.String)}.
+     * @deprecated Use {@link #testResolveJakartaHttpServletRequestString1()} 
instead.
+     */
+    @Deprecated(since = "2.0.0")
+    @Test
+    public void testResolveJavaxHttpServletRequestString() {
+        javax.servlet.http.HttpServletRequest javaxRequest = 
Mockito.mock(javax.servlet.http.HttpServletRequest.class);
+        Resource r = resourceResolver.resolve(javaxRequest, "/path?k1=v1");
+        assertNotNull(r);
+        assertEquals("/path?k1=v1", r.getPath());
+    }
+
+    /**
+     * Test method for {@link 
org.apache.sling.testing.resourceresolver.MockResourceResolver#resolve(jakarta.servlet.http.HttpServletRequest,
 java.lang.String)}.
+     */
+    @Test
+    public void testResolveJakartaHttpServletRequestString() {
+        HttpServletRequest jakartaRequest = 
Mockito.mock(HttpServletRequest.class);
+        Resource r = resourceResolver.resolve(jakartaRequest, "/path#k1=v1");
+        assertNotNull(r);
+        assertEquals("/path#k1=v1", r.getPath());
+    }
+
+    /**
+     * Test method for {@link 
org.apache.sling.testing.resourceresolver.MockResourceResolver#map(javax.servlet.http.HttpServletRequest,
 java.lang.String)}.
+     * @deprecated Use {@link #testMapJakartaHttpServletRequestString()} 
instead.
+     */
+    @Deprecated(since = "2.0.0")
+    @Test
+    public void testMapJavaxHttpServletRequestString() {
+        javax.servlet.http.HttpServletRequest javaxRequest = 
Mockito.mock(javax.servlet.http.HttpServletRequest.class);
+        String map = resourceResolver.map(javaxRequest, "/path#k1=v1");
+        assertEquals("/path#k1=v1", map);
+    }
+
+    /**
+     * Test method for {@link 
org.apache.sling.testing.resourceresolver.MockResourceResolver#map(jakarta.servlet.http.HttpServletRequest,
 java.lang.String)}.
+     */
+    @Test
+    public void testMapJakartaHttpServletRequestString() {
+        HttpServletRequest jakartaRequest = 
Mockito.mock(HttpServletRequest.class);
+        String map = resourceResolver.map(jakartaRequest, "/path?k1=v1");
+        assertEquals("/path?k1=v1", map);
+    }
+}

Reply via email to