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