You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by en...@apache.org on 2022/08/18 16:09:14 UTC

[sling-org-apache-sling-jcr-jackrabbit-usermanager] branch master updated: SLING-11531 use RequestParameter factory from Builders (#16)

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-jcr-jackrabbit-usermanager.git


The following commit(s) were added to refs/heads/master by this push:
     new eaddcb6  SLING-11531 use RequestParameter factory from Builders (#16)
eaddcb6 is described below

commit eaddcb642695cbdce11f14a37b44ced84ee66199
Author: Eric Norman <en...@apache.org>
AuthorDate: Thu Aug 18 09:09:10 2022 -0700

    SLING-11531 use RequestParameter factory from Builders (#16)
    
    also remove local impl of RequestParameter interface
---
 bnd.bnd                                            |   3 -
 pom.xml                                            |   2 +-
 .../impl/post/AbstractAuthorizablePostServlet.java | 126 +--------------------
 .../impl/post/PrincipalNameGeneratorImplTest.java  |  92 ++++++---------
 .../usermanager/it/UserManagerTestSupport.java     |   8 +-
 5 files changed, 42 insertions(+), 189 deletions(-)

diff --git a/bnd.bnd b/bnd.bnd
index 15f34d2..c4e7541 100644
--- a/bnd.bnd
+++ b/bnd.bnd
@@ -1,6 +1,3 @@
-# Temporary fix for SLING-11525 - remove when SLING-11531 is resolved and released
-Import-Package: org.apache.sling.api.request;version="[2.6,2.8)", \
-  *
 
 -includeresource:\
   @org.apache.sling.servlets.post-*.jar!/org/apache/sling/servlets/post/impl/helper/(RequestProperty*|DateParser*),\
diff --git a/pom.xml b/pom.xml
index e9b62b8..58df051 100644
--- a/pom.xml
+++ b/pom.xml
@@ -126,7 +126,7 @@
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.api</artifactId>
-            <version>2.25.0</version>
+            <version>2.26.1-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
diff --git a/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/AbstractAuthorizablePostServlet.java b/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/AbstractAuthorizablePostServlet.java
index 20f8058..b85ff5a 100644
--- a/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/AbstractAuthorizablePostServlet.java
+++ b/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/AbstractAuthorizablePostServlet.java
@@ -16,9 +16,6 @@
  */
 package org.apache.sling.jackrabbit.usermanager.impl.post;
 
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
 import java.lang.reflect.Array;
 import java.nio.file.Path;
 import java.nio.file.Paths;
@@ -47,8 +44,8 @@ import org.apache.jackrabbit.JcrConstants;
 import org.apache.jackrabbit.api.security.user.Authorizable;
 import org.apache.jackrabbit.api.security.user.UserManager;
 import org.apache.jackrabbit.oak.spi.security.user.AuthorizableType;
-import org.apache.sling.api.SlingIOException;
 import org.apache.sling.api.request.RequestParameter;
+import org.apache.sling.api.request.builder.Builders;
 import org.apache.sling.commons.osgi.OsgiUtil;
 import org.apache.sling.jackrabbit.usermanager.PrincipalNameFilter;
 import org.apache.sling.jackrabbit.usermanager.PrincipalNameGenerator;
@@ -852,13 +849,13 @@ public abstract class AbstractAuthorizablePostServlet extends
         RequestParameter [] paramArray = null;
         if (obj instanceof String) {
             paramArray = new RequestParameter[] {
-                new RequestParameterImpl((String)obj, null)
+                    Builders.newRequestParameter(null, (String)obj)
             };
         } else if (obj instanceof String[]) {
             String [] strValues = (String[])obj;
             paramArray = new RequestParameter[strValues.length];
             for (int i=0; i < strValues.length; i++) {
-                paramArray[i] = new RequestParameterImpl(strValues[i], null);
+                paramArray[i] = Builders.newRequestParameter(null, strValues[i]);
             }
         } else if (obj instanceof RequestParameter) {
             paramArray = new RequestParameter[] {(RequestParameter)obj};
@@ -869,121 +866,4 @@ public abstract class AbstractAuthorizablePostServlet extends
         return paramArray == null ? new RequestParameter[0] : paramArray;
     }
 
-    static class RequestParameterImpl implements RequestParameter {
-
-        private String value;
-        private String encoding;
-
-        private byte[] content;
-
-        RequestParameterImpl(String value, String encoding) {
-            this.encoding = encoding;
-            this.value = value;
-            this.content = null;
-        }
-
-        String getEncoding() {
-            return this.encoding;
-        }
-
-        void setEncoding(String encoding) {
-            // recode this parameter by encoding the string with the current
-            // encoding and decode the bytes with the encoding
-            try {
-                this.value = getString(encoding);
-            } catch (UnsupportedEncodingException uee) {
-                throw new SlingUnsupportedEncodingException(uee);
-            }
-            this.encoding = encoding;
-        }
-
-        /**
-         * @see org.apache.sling.api.request.RequestParameter#get()
-         */
-        public byte[] get() {
-            if (content == null) {
-                try {
-                    content = getString().getBytes(getEncoding());
-                } catch (Exception e) {
-                    // UnsupportedEncodingException, IllegalArgumentException
-                    content = getString().getBytes();
-                }
-            }
-            return content;
-        }
-
-        /**
-         * @see org.apache.sling.api.request.RequestParameter#getContentType()
-         */
-        public String getContentType() {
-            // none known for www-form-encoded parameters
-            return null;
-        }
-
-        /**
-         * @see org.apache.sling.api.request.RequestParameter#getInputStream()
-         */
-        public InputStream getInputStream() {
-            return new ByteArrayInputStream(this.get());
-        }
-
-        /**
-         * @see org.apache.sling.api.request.RequestParameter#getFileName()
-         */
-        public String getFileName() {
-            // no original file name
-            return null;
-        }
-
-        /**
-         * @see org.apache.sling.api.request.RequestParameter#getSize()
-         */
-        public long getSize() {
-            return this.get().length;
-        }
-
-        /**
-         * @see org.apache.sling.api.request.RequestParameter#getString()
-         */
-        public String getString() {
-            return value;
-        }
-
-        /**
-         * @see org.apache.sling.api.request.RequestParameter#getString(java.lang.String)
-         */
-        public String getString(String encoding)
-                throws UnsupportedEncodingException {
-            return new String(this.get(), encoding);
-        }
-
-        /**
-         * @see org.apache.sling.api.request.RequestParameter#isFormField()
-         */
-        public boolean isFormField() {
-            // www-form-encoded are always form fields
-            return true;
-        }
-
-        @Override
-        public String getName() {
-            return null;
-        }
-
-        @Override
-        public String toString() {
-            return this.getString();
-        }
-    }
-
-    static class SlingUnsupportedEncodingException extends SlingIOException {
-
-        private static final long serialVersionUID = -4482276105859280247L;
-
-        SlingUnsupportedEncodingException(UnsupportedEncodingException uee) {
-            super(uee);
-        }
-
-    }
-
 }
diff --git a/src/test/java/org/apache/sling/jackrabbit/usermanager/impl/post/PrincipalNameGeneratorImplTest.java b/src/test/java/org/apache/sling/jackrabbit/usermanager/impl/post/PrincipalNameGeneratorImplTest.java
index 267a282..91cf59c 100644
--- a/src/test/java/org/apache/sling/jackrabbit/usermanager/impl/post/PrincipalNameGeneratorImplTest.java
+++ b/src/test/java/org/apache/sling/jackrabbit/usermanager/impl/post/PrincipalNameGeneratorImplTest.java
@@ -28,10 +28,10 @@ import java.util.Map;
 
 import org.apache.jackrabbit.oak.spi.security.user.AuthorizableType;
 import org.apache.sling.api.request.RequestParameter;
+import org.apache.sling.api.request.builder.Builders;
 import org.apache.sling.jackrabbit.usermanager.PrincipalNameFilter;
 import org.apache.sling.jackrabbit.usermanager.PrincipalNameGenerator;
 import org.apache.sling.jackrabbit.usermanager.PrincipalNameGenerator.NameInfo;
-import org.apache.sling.jackrabbit.usermanager.impl.post.AbstractAuthorizablePostServlet.RequestParameterImpl;
 import org.apache.sling.jcr.jackrabbit.usermanager.it.post.CustomPrincipalNameFilterImpl;
 import org.apache.sling.servlets.post.SlingPostConstants;
 import org.junit.Test;
@@ -54,14 +54,26 @@ public class PrincipalNameGeneratorImplTest {
         this.type = type;
     }
 
+    /**
+     * Helper to reduce code duplication
+     * 
+     * @param map the map to add to
+     * @param paramName the parameter name
+     * @param paramValue the parameter value
+     * @return
+     */
+    private static RequestParameter[] addParam(Map<String, RequestParameter[]> map, String paramName, String paramValue) {
+        return map.put(paramName, new RequestParameter[] {
+                Builders.newRequestParameter(paramName, paramValue)
+        });
+    }
+
     @Test
     public void testPrincipalNameFromName() {
         PrincipalNameGenerator generator = new PrincipalNameGeneratorImpl();
         PrincipalNameFilter filter = null;
         Map<String, RequestParameter[]> parameters = new HashMap<>();
-        parameters.put(SlingPostConstants.RP_NODE_NAME, new RequestParameter[] {
-                new RequestParameterImpl("name1", "UTF-8")
-        });
+        addParam(parameters, SlingPostConstants.RP_NODE_NAME, "name1");
         NameInfo nameInfo = generator.getPrincipalName(parameters, type, filter, defaultGenerator);
         assertNotNull(nameInfo);
         assertEquals("name1", nameInfo.getPrincipalName());
@@ -73,9 +85,7 @@ public class PrincipalNameGeneratorImplTest {
         PrincipalNameGenerator generator = new PrincipalNameGeneratorImpl();
         PrincipalNameFilter filter = null;
         Map<String, RequestParameter[]> parameters = new HashMap<>();
-        parameters.put(SlingPostConstants.RP_NODE_NAME_HINT, new RequestParameter[] {
-                new RequestParameterImpl("name1", "UTF-8")
-        });
+        addParam(parameters, SlingPostConstants.RP_NODE_NAME_HINT, "name1");
         NameInfo nameInfo = generator.getPrincipalName(parameters, type, filter, defaultGenerator);
         assertNotNull(nameInfo);
         assertEquals("name1", nameInfo.getPrincipalName());
@@ -87,9 +97,7 @@ public class PrincipalNameGeneratorImplTest {
         PrincipalNameGenerator generator = new PrincipalNameGeneratorImpl();
         PrincipalNameFilter filter = new CustomPrincipalNameFilterImpl();
         Map<String, RequestParameter[]> parameters = new HashMap<>();
-        parameters.put(SlingPostConstants.RP_NODE_NAME_HINT, new RequestParameter[] {
-                new RequestParameterImpl("Na me1", "UTF-8")
-        });
+        addParam(parameters, SlingPostConstants.RP_NODE_NAME_HINT, "Na me1");
         NameInfo nameInfo = generator.getPrincipalName(parameters, type, filter, defaultGenerator);
         assertNotNull(nameInfo);
         assertEquals("na_me1", nameInfo.getPrincipalName());
@@ -101,9 +109,7 @@ public class PrincipalNameGeneratorImplTest {
         PrincipalNameGenerator generator = new PrincipalNameGeneratorImpl();
         PrincipalNameFilter filter = null;
         Map<String, RequestParameter[]> parameters = new HashMap<>();
-        parameters.put(SlingPostConstants.RP_NODE_NAME_HINT, new RequestParameter[] {
-                new RequestParameterImpl("namethatistoolong123456789", "UTF-8")
-        });
+        addParam(parameters, SlingPostConstants.RP_NODE_NAME_HINT, "namethatistoolong123456789");
         NameInfo nameInfo = generator.getPrincipalName(parameters, type, filter, defaultGenerator);
         assertNotNull(nameInfo);
         assertEquals("namethatistoolong123", nameInfo.getPrincipalName());
@@ -115,12 +121,8 @@ public class PrincipalNameGeneratorImplTest {
         PrincipalNameGenerator generator = new PrincipalNameGeneratorImpl();
         PrincipalNameFilter filter = null;
         Map<String, RequestParameter[]> parameters = new HashMap<>();
-        parameters.put("displayName", new RequestParameter[] {
-                new RequestParameterImpl("name1", "UTF-8")
-        });
-        parameters.put(String.format("%s%s", SlingPostConstants.RP_NODE_NAME, SlingPostConstants.VALUE_FROM_SUFFIX), new RequestParameter[] {
-                new RequestParameterImpl("displayName", "UTF-8")
-        });
+        addParam(parameters, "displayName", "name1");
+        addParam(parameters, String.format("%s%s", SlingPostConstants.RP_NODE_NAME, SlingPostConstants.VALUE_FROM_SUFFIX), "displayName");
         NameInfo nameInfo = generator.getPrincipalName(parameters, type, filter, defaultGenerator);
         assertNotNull(nameInfo);
         assertEquals("name1", nameInfo.getPrincipalName());
@@ -132,12 +134,8 @@ public class PrincipalNameGeneratorImplTest {
         PrincipalNameGenerator generator = new PrincipalNameGeneratorImpl();
         PrincipalNameFilter filter = null;
         Map<String, RequestParameter[]> parameters = new HashMap<>();
-        parameters.put("displayName", new RequestParameter[] {
-                new RequestParameterImpl("namethatistoolong123456789", "UTF-8")
-        });
-        parameters.put(String.format("%s%s", SlingPostConstants.RP_NODE_NAME, SlingPostConstants.VALUE_FROM_SUFFIX), new RequestParameter[] {
-                new RequestParameterImpl("displayName", "UTF-8")
-        });
+        addParam(parameters, "displayName", "namethatistoolong123456789");
+        addParam(parameters, String.format("%s%s", SlingPostConstants.RP_NODE_NAME, SlingPostConstants.VALUE_FROM_SUFFIX), "displayName");
         NameInfo nameInfo = generator.getPrincipalName(parameters, type, filter, defaultGenerator);
         assertNotNull(nameInfo);
         assertEquals("namethatistoolong123456789", nameInfo.getPrincipalName());
@@ -149,12 +147,8 @@ public class PrincipalNameGeneratorImplTest {
         PrincipalNameGenerator generator = new PrincipalNameGeneratorImpl();
         PrincipalNameFilter filter = new CustomPrincipalNameFilterImpl();
         Map<String, RequestParameter[]> parameters = new HashMap<>();
-        parameters.put("displayName", new RequestParameter[] {
-                new RequestParameterImpl("Na me1", "UTF-8")
-        });
-        parameters.put(String.format("%s%s", SlingPostConstants.RP_NODE_NAME, SlingPostConstants.VALUE_FROM_SUFFIX), new RequestParameter[] {
-                new RequestParameterImpl("displayName", "UTF-8")
-        });
+        addParam(parameters, "displayName", "Na me1");
+        addParam(parameters, String.format("%s%s", SlingPostConstants.RP_NODE_NAME, SlingPostConstants.VALUE_FROM_SUFFIX), "displayName");
         NameInfo nameInfo = generator.getPrincipalName(parameters, type, filter, defaultGenerator);
         assertNotNull(nameInfo);
         assertEquals("Na me1", nameInfo.getPrincipalName());
@@ -166,12 +160,8 @@ public class PrincipalNameGeneratorImplTest {
         PrincipalNameGenerator generator = new PrincipalNameGeneratorImpl();
         PrincipalNameFilter filter = null;
         Map<String, RequestParameter[]> parameters = new HashMap<>();
-        parameters.put("displayName", new RequestParameter[] {
-                new RequestParameterImpl("name1", "UTF-8")
-        });
-        parameters.put(String.format("%s%s", SlingPostConstants.RP_NODE_NAME_HINT, SlingPostConstants.VALUE_FROM_SUFFIX), new RequestParameter[] {
-                new RequestParameterImpl("displayName", "UTF-8")
-        });
+        addParam(parameters, "displayName", "name1");
+        addParam(parameters, String.format("%s%s", SlingPostConstants.RP_NODE_NAME_HINT, SlingPostConstants.VALUE_FROM_SUFFIX), "displayName");
         NameInfo nameInfo = generator.getPrincipalName(parameters, type, filter, defaultGenerator);
         assertNotNull(nameInfo);
         assertEquals("name1", nameInfo.getPrincipalName());
@@ -183,12 +173,8 @@ public class PrincipalNameGeneratorImplTest {
         PrincipalNameGenerator generator = new PrincipalNameGeneratorImpl();
         PrincipalNameFilter filter = null;
         Map<String, RequestParameter[]> parameters = new HashMap<>();
-        parameters.put("displayName", new RequestParameter[] {
-                new RequestParameterImpl("namethatistoolong123456789", "UTF-8")
-        });
-        parameters.put(String.format("%s%s", SlingPostConstants.RP_NODE_NAME_HINT, SlingPostConstants.VALUE_FROM_SUFFIX), new RequestParameter[] {
-                new RequestParameterImpl("displayName", "UTF-8")
-        });
+        addParam(parameters, "displayName", "namethatistoolong123456789");
+        addParam(parameters, String.format("%s%s", SlingPostConstants.RP_NODE_NAME_HINT, SlingPostConstants.VALUE_FROM_SUFFIX), "displayName");
         NameInfo nameInfo = generator.getPrincipalName(parameters, type, filter, defaultGenerator);
         assertNotNull(nameInfo);
         assertEquals("namethatistoolong123", nameInfo.getPrincipalName());
@@ -200,12 +186,8 @@ public class PrincipalNameGeneratorImplTest {
         PrincipalNameGenerator generator = new PrincipalNameGeneratorImpl();
         PrincipalNameFilter filter = new CustomPrincipalNameFilterImpl();
         Map<String, RequestParameter[]> parameters = new HashMap<>();
-        parameters.put("displayName", new RequestParameter[] {
-                new RequestParameterImpl("Na me1", "UTF-8")
-        });
-        parameters.put(String.format("%s%s", SlingPostConstants.RP_NODE_NAME_HINT, SlingPostConstants.VALUE_FROM_SUFFIX), new RequestParameter[] {
-                new RequestParameterImpl("displayName", "UTF-8")
-        });
+        addParam(parameters, "displayName", "Na me1");
+        addParam(parameters, String.format("%s%s", SlingPostConstants.RP_NODE_NAME_HINT, SlingPostConstants.VALUE_FROM_SUFFIX), "displayName");
         NameInfo nameInfo = generator.getPrincipalName(parameters, type, filter, defaultGenerator);
         assertNotNull(nameInfo);
         assertEquals("na_me1", nameInfo.getPrincipalName());
@@ -220,9 +202,7 @@ public class PrincipalNameGeneratorImplTest {
             10);
         PrincipalNameFilter filter = null;
         Map<String, RequestParameter[]> parameters = new HashMap<>();
-        parameters.put("displayName2", new RequestParameter[] {
-                new RequestParameterImpl("name1", "UTF-8")
-        });
+        addParam(parameters, "displayName2", "name1");
         NameInfo nameInfo = generator.getPrincipalName(parameters, type, filter, defaultGenerator);
         assertNotNull(nameInfo);
         assertEquals("name1", nameInfo.getPrincipalName());
@@ -237,9 +217,7 @@ public class PrincipalNameGeneratorImplTest {
             10);
         PrincipalNameFilter filter = new CustomPrincipalNameFilterImpl();
         Map<String, RequestParameter[]> parameters = new HashMap<>();
-        parameters.put("displayName2", new RequestParameter[] {
-                new RequestParameterImpl("Na me1", "UTF-8")
-        });
+        addParam(parameters, "displayName2", "Na me1");
         NameInfo nameInfo = generator.getPrincipalName(parameters, type, filter, defaultGenerator);
         assertNotNull(nameInfo);
         assertEquals("na_me1", nameInfo.getPrincipalName());
@@ -254,9 +232,7 @@ public class PrincipalNameGeneratorImplTest {
             10);
         PrincipalNameFilter filter = null;
         Map<String, RequestParameter[]> parameters = new HashMap<>();
-        parameters.put("displayName2", new RequestParameter[] {
-                new RequestParameterImpl("namethatistoolong", "UTF-8")
-        });
+        addParam(parameters, "displayName2", "namethatistoolong");
         NameInfo nameInfo = generator.getPrincipalName(parameters, type, filter, defaultGenerator);
         assertNotNull(nameInfo);
         assertEquals("namethatis", nameInfo.getPrincipalName());
diff --git a/src/test/java/org/apache/sling/jcr/jackrabbit/usermanager/it/UserManagerTestSupport.java b/src/test/java/org/apache/sling/jcr/jackrabbit/usermanager/it/UserManagerTestSupport.java
index 9537e80..59ab560 100644
--- a/src/test/java/org/apache/sling/jcr/jackrabbit/usermanager/it/UserManagerTestSupport.java
+++ b/src/test/java/org/apache/sling/jcr/jackrabbit/usermanager/it/UserManagerTestSupport.java
@@ -127,14 +127,14 @@ public abstract class UserManagerTestSupport extends TestSupport {
             jacocoCommand = new VMOption(jacocoOpt);
         }
 
-        // newer version of sling.api and dependencies for SLING-10034
+        // newer version of sling.api and dependencies for SLING-10034 and SLING-11531
         //   may remove at a later date if the superclass includes these versions or later
         versionResolver.setVersionFromProject("org.apache.sling", "org.apache.sling.api");
-        versionResolver.setVersion("org.apache.sling", "org.apache.sling.engine", "2.9.0"); // to be compatible with current o.a.sling.api
-        versionResolver.setVersion("org.apache.sling", "org.apache.sling.resourceresolver", "1.8.0"); // to be compatible with current o.a.sling.api
+        versionResolver.setVersion("org.apache.sling", "org.apache.sling.engine", "2.10.2"); // to be compatible with current o.a.sling.api
+        versionResolver.setVersion("org.apache.sling", "org.apache.sling.resourceresolver", "1.10.0"); // to be compatible with current o.a.sling.api
         versionResolver.setVersion("org.apache.sling", "org.apache.sling.scripting.core", "2.4.0"); // to be compatible with current o.a.sling.api
         versionResolver.setVersion("org.apache.sling", "org.apache.sling.scripting.api", "2.2.0"); // to be compatible with current o.a.sling.api
-        versionResolver.setVersion("org.apache.sling", "org.apache.sling.servlets.resolver", "2.9.4"); // to be compatible with current o.a.sling.api
+        versionResolver.setVersion("org.apache.sling", "org.apache.sling.servlets.resolver", "2.9.8"); // to be compatible with current o.a.sling.api
         versionResolver.setVersion("org.apache.sling", "org.apache.sling.commons.compiler", "2.4.0"); // to be compatible with current o.a.sling.scripting.core
         versionResolver.setVersion("org.apache.sling", "org.apache.sling.auth.core", "1.5.4"); // to be compatible with current o.a.sling.engine
         versionResolver.setVersion("commons-codec", "commons-codec", "1.13"); // to be compatible with current o.a.sling.auth.core