Author: fmeschbe
Date: Tue Feb 18 08:42:45 2014
New Revision: 1569230
URL: http://svn.apache.org/r1569230
Log:
Implement alternative proposal as discussed on the list:
* Add Sling API:
- RequestParameter.getName()
- SlingHttpServletRequest.getRequestParameterList()
* Merge parameter support back into the engine bundle
* Remove parameters bundle
* Add reactor POM
Added:
sling/whiteboard/fmeschbe/parameters/api/
- copied from r1569227, sling/trunk/bundles/api/
sling/whiteboard/fmeschbe/parameters/engine/src/main/java-servlet3/org/apache/sling/engine/impl/parameters/
sling/whiteboard/fmeschbe/parameters/engine/src/main/java-servlet3/org/apache/sling/engine/impl/parameters/ParameterSupportHttpServletRequestWrapper3.java
(with props)
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/
- copied from r1568914,
sling/whiteboard/fmeschbe/parameters/parameters/src/main/java/org/apache/sling/parameters/impl/
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/ParameterSupport.java
- copied, changed from r1568916,
sling/whiteboard/fmeschbe/parameters/parameters/src/main/java/org/apache/sling/parameters/impl/ParameterSupportImpl.java
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/ParameterSupportHttpServletRequestWrapper2x.java
- copied, changed from r1568916,
sling/whiteboard/fmeschbe/parameters/parameters/src/main/java/org/apache/sling/parameters/impl/ParameterSupportHttpServletRequestWrapper2x.java
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/SlingUnsupportedEncodingException.java
- copied, changed from r1569228,
sling/whiteboard/fmeschbe/parameters/parameters/src/main/java/org/apache/sling/parameters/SlingUnsupportedEncodingException.java
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/Util.java
- copied, changed from r1568916,
sling/whiteboard/fmeschbe/parameters/parameters/src/main/java/org/apache/sling/parameters/impl/Util.java
sling/whiteboard/fmeschbe/parameters/engine/src/test/java/org/apache/sling/engine/impl/parameters/
- copied from r1568914,
sling/whiteboard/fmeschbe/parameters/parameters/src/test/java/org/apache/sling/parameters/impl/
sling/whiteboard/fmeschbe/parameters/engine/src/test/java/org/apache/sling/engine/impl/parameters/UtilTest.java
- copied, changed from r1568916,
sling/whiteboard/fmeschbe/parameters/parameters/src/test/java/org/apache/sling/parameters/impl/UtilTest.java
sling/whiteboard/fmeschbe/parameters/pom.xml (with props)
Removed:
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/ParameterSupportImpl.java
sling/whiteboard/fmeschbe/parameters/parameters/
Modified:
sling/whiteboard/fmeschbe/parameters/ (props changed)
sling/whiteboard/fmeschbe/parameters/api/src/main/java/org/apache/sling/api/SlingHttpServletRequest.java
sling/whiteboard/fmeschbe/parameters/api/src/main/java/org/apache/sling/api/package-info.java
sling/whiteboard/fmeschbe/parameters/api/src/main/java/org/apache/sling/api/request/RequestParameter.java
sling/whiteboard/fmeschbe/parameters/api/src/main/java/org/apache/sling/api/request/package-info.java
sling/whiteboard/fmeschbe/parameters/api/src/main/java/org/apache/sling/api/wrappers/SlingHttpServletRequestWrapper.java
sling/whiteboard/fmeschbe/parameters/api/src/main/java/org/apache/sling/api/wrappers/package-info.java
sling/whiteboard/fmeschbe/parameters/engine/pom.xml
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpContext.java
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletRequestImpl.java
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/AbstractRequestParameter.java
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/ContainerRequestParameter.java
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/MultipartRequestParameter.java
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/ParameterMap.java
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/ParameterSupportHttpServletRequestWrapper3.java
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/SlingPart.java
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/request/RequestData.java
sling/whiteboard/fmeschbe/parameters/engine/src/test/java/org/apache/sling/engine/impl/parameters/ContainerRequestParameterTest.java
Propchange: sling/whiteboard/fmeschbe/parameters/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Tue Feb 18 08:42:45 2014
@@ -0,0 +1,4 @@
+.classpath
+.settings
+.project
+target
Modified:
sling/whiteboard/fmeschbe/parameters/api/src/main/java/org/apache/sling/api/SlingHttpServletRequest.java
URL:
http://svn.apache.org/viewvc/sling/whiteboard/fmeschbe/parameters/api/src/main/java/org/apache/sling/api/SlingHttpServletRequest.java?rev=1569230&r1=1569227&r2=1569230&view=diff
==============================================================================
---
sling/whiteboard/fmeschbe/parameters/api/src/main/java/org/apache/sling/api/SlingHttpServletRequest.java
(original)
+++
sling/whiteboard/fmeschbe/parameters/api/src/main/java/org/apache/sling/api/SlingHttpServletRequest.java
Tue Feb 18 08:42:45 2014
@@ -19,6 +19,7 @@
package org.apache.sling.api;
import java.util.Enumeration;
+import java.util.List;
import java.util.Locale;
import java.util.ResourceBundle;
@@ -34,7 +35,6 @@ import org.apache.sling.api.request.Requ
import org.apache.sling.api.request.RequestProgressTracker;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
-
import aQute.bnd.annotation.ProviderType;
/**
@@ -145,6 +145,18 @@ public interface SlingHttpServletRequest
RequestParameterMap getRequestParameterMap();
/**
+ * Returns the request parameters as instances of the
+ * {@link RequestParameter} interface in the order or the request where the
+ * query string parameters are first and the POST request parameters are
+ * second.
+ *
+ * @return The list of {@link RequestParameter} in request declaration
+ * order.
+ * @since 2.3 (bundle version 2.6)
+ */
+ List<RequestParameter> getRequestParameterList();
+
+ /**
* Returns a <code>RequestDispatcher</code> object that acts as a wrapper
* for the resource located at the given path. A
* <code>RequestDispatcher</code> object can be used to include the
Modified:
sling/whiteboard/fmeschbe/parameters/api/src/main/java/org/apache/sling/api/package-info.java
URL:
http://svn.apache.org/viewvc/sling/whiteboard/fmeschbe/parameters/api/src/main/java/org/apache/sling/api/package-info.java?rev=1569230&r1=1569227&r2=1569230&view=diff
==============================================================================
---
sling/whiteboard/fmeschbe/parameters/api/src/main/java/org/apache/sling/api/package-info.java
(original)
+++
sling/whiteboard/fmeschbe/parameters/api/src/main/java/org/apache/sling/api/package-info.java
Tue Feb 18 08:42:45 2014
@@ -17,7 +17,7 @@
* under the License.
*/
-@Version("2.2")
+@Version("2.3")
package org.apache.sling.api;
import aQute.bnd.annotation.Version;
Modified:
sling/whiteboard/fmeschbe/parameters/api/src/main/java/org/apache/sling/api/request/RequestParameter.java
URL:
http://svn.apache.org/viewvc/sling/whiteboard/fmeschbe/parameters/api/src/main/java/org/apache/sling/api/request/RequestParameter.java?rev=1569230&r1=1569227&r2=1569230&view=diff
==============================================================================
---
sling/whiteboard/fmeschbe/parameters/api/src/main/java/org/apache/sling/api/request/RequestParameter.java
(original)
+++
sling/whiteboard/fmeschbe/parameters/api/src/main/java/org/apache/sling/api/request/RequestParameter.java
Tue Feb 18 08:42:45 2014
@@ -39,6 +39,12 @@ import aQute.bnd.annotation.ProviderType
public interface RequestParameter {
/**
+ * @return the name of this {@code RequestParameter}
+ * @since 2.4 (bundle version 2.6)
+ */
+ String getName();
+
+ /**
* Determines whether or not this instance represents a simple form field
or
* an uploaded file.
*
Modified:
sling/whiteboard/fmeschbe/parameters/api/src/main/java/org/apache/sling/api/request/package-info.java
URL:
http://svn.apache.org/viewvc/sling/whiteboard/fmeschbe/parameters/api/src/main/java/org/apache/sling/api/request/package-info.java?rev=1569230&r1=1569227&r2=1569230&view=diff
==============================================================================
---
sling/whiteboard/fmeschbe/parameters/api/src/main/java/org/apache/sling/api/request/package-info.java
(original)
+++
sling/whiteboard/fmeschbe/parameters/api/src/main/java/org/apache/sling/api/request/package-info.java
Tue Feb 18 08:42:45 2014
@@ -17,7 +17,7 @@
* under the License.
*/
-@Version("2.3")
+@Version("2.4")
package org.apache.sling.api.request;
import aQute.bnd.annotation.Version;
Modified:
sling/whiteboard/fmeschbe/parameters/api/src/main/java/org/apache/sling/api/wrappers/SlingHttpServletRequestWrapper.java
URL:
http://svn.apache.org/viewvc/sling/whiteboard/fmeschbe/parameters/api/src/main/java/org/apache/sling/api/wrappers/SlingHttpServletRequestWrapper.java?rev=1569230&r1=1569227&r2=1569230&view=diff
==============================================================================
---
sling/whiteboard/fmeschbe/parameters/api/src/main/java/org/apache/sling/api/wrappers/SlingHttpServletRequestWrapper.java
(original)
+++
sling/whiteboard/fmeschbe/parameters/api/src/main/java/org/apache/sling/api/wrappers/SlingHttpServletRequestWrapper.java
Tue Feb 18 08:42:45 2014
@@ -19,6 +19,7 @@
package org.apache.sling.api.wrappers;
import java.util.Enumeration;
+import java.util.List;
import java.util.Locale;
import java.util.ResourceBundle;
@@ -86,6 +87,10 @@ public class SlingHttpServletRequestWrap
return getSlingRequest().getRequestParameterMap();
}
+ public List<RequestParameter> getRequestParameterList() {
+ return getSlingRequest().getRequestParameterList();
+ }
+
public RequestParameter[] getRequestParameters(String name) {
return getSlingRequest().getRequestParameters(name);
}
@@ -109,7 +114,7 @@ public class SlingHttpServletRequestWrap
public ResourceBundle getResourceBundle(String baseName, Locale locale) {
return getSlingRequest().getResourceBundle(baseName, locale);
}
-
+
public String getResponseContentType() {
return getSlingRequest().getResponseContentType();
}
@@ -117,7 +122,7 @@ public class SlingHttpServletRequestWrap
public Enumeration<String> getResponseContentTypes() {
return getSlingRequest().getResponseContentTypes();
}
-
+
public <AdapterType> AdapterType adaptTo(Class<AdapterType> type) {
return getSlingRequest().adaptTo(type);
}
Modified:
sling/whiteboard/fmeschbe/parameters/api/src/main/java/org/apache/sling/api/wrappers/package-info.java
URL:
http://svn.apache.org/viewvc/sling/whiteboard/fmeschbe/parameters/api/src/main/java/org/apache/sling/api/wrappers/package-info.java?rev=1569230&r1=1569227&r2=1569230&view=diff
==============================================================================
---
sling/whiteboard/fmeschbe/parameters/api/src/main/java/org/apache/sling/api/wrappers/package-info.java
(original)
+++
sling/whiteboard/fmeschbe/parameters/api/src/main/java/org/apache/sling/api/wrappers/package-info.java
Tue Feb 18 08:42:45 2014
@@ -17,7 +17,7 @@
* under the License.
*/
-@Version("2.3")
+@Version("2.4")
package org.apache.sling.api.wrappers;
import aQute.bnd.annotation.Version;
Modified: sling/whiteboard/fmeschbe/parameters/engine/pom.xml
URL:
http://svn.apache.org/viewvc/sling/whiteboard/fmeschbe/parameters/engine/pom.xml?rev=1569230&r1=1569229&r2=1569230&view=diff
==============================================================================
--- sling/whiteboard/fmeschbe/parameters/engine/pom.xml (original)
+++ sling/whiteboard/fmeschbe/parameters/engine/pom.xml Tue Feb 18 08:42:45 2014
@@ -67,6 +67,8 @@
file="${project.build.outputDirectory}/org/apache/sling/engine/impl/helper/ExternalServletContextWrapper3.class"
/>
<delete
file="${project.build.outputDirectory}/org/apache/sling/engine/impl/helper/SlingServletContext3.class"
/>
+ <delete
+
file="${project.build.outputDirectory}/org/apache/sling/engine/impl/parameters/ParameterSupportHttpServletRequestWrapper3.class"
/>
<javac
srcdir="${basedir}/src/main/java-servlet3"
@@ -145,13 +147,7 @@
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.api</artifactId>
- <version>2.1.0</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.sling</groupId>
- <artifactId>org.apache.sling.parameters</artifactId>
- <version>0.0.1-SNAPSHOT</version>
+ <version>2.5.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
@@ -175,7 +171,13 @@
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.commons.osgi</artifactId>
- <version>2.0.2-incubator</version>
+ <version>2.1.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>commons-fileupload</groupId>
+ <artifactId>commons-fileupload</artifactId>
+ <version>1.3</version>
<scope>provided</scope>
</dependency>
<dependency>
Added:
sling/whiteboard/fmeschbe/parameters/engine/src/main/java-servlet3/org/apache/sling/engine/impl/parameters/ParameterSupportHttpServletRequestWrapper3.java
URL:
http://svn.apache.org/viewvc/sling/whiteboard/fmeschbe/parameters/engine/src/main/java-servlet3/org/apache/sling/engine/impl/parameters/ParameterSupportHttpServletRequestWrapper3.java?rev=1569230&view=auto
==============================================================================
---
sling/whiteboard/fmeschbe/parameters/engine/src/main/java-servlet3/org/apache/sling/engine/impl/parameters/ParameterSupportHttpServletRequestWrapper3.java
(added)
+++
sling/whiteboard/fmeschbe/parameters/engine/src/main/java-servlet3/org/apache/sling/engine/impl/parameters/ParameterSupportHttpServletRequestWrapper3.java
Tue Feb 18 08:42:45 2014
@@ -0,0 +1,41 @@
+/*
+ * 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.engine.impl.parameters;
+
+import java.util.Collection;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.Part;
+
+public class ParameterSupportHttpServletRequestWrapper3 extends
ParameterSupportHttpServletRequestWrapper2x {
+ public ParameterSupportHttpServletRequestWrapper3(HttpServletRequest
request) {
+ super(request);
+ }
+
+ @Override
+ public Part getPart(String name) {
+ return (Part) getParameterSupport().getPart(name);
+ }
+
+ @Override
+ @SuppressWarnings("unchecked")
+ public Collection<Part> getParts() {
+ return (Collection<Part>) getParameterSupport().getParts();
+ }
+}
\ No newline at end of file
Propchange:
sling/whiteboard/fmeschbe/parameters/engine/src/main/java-servlet3/org/apache/sling/engine/impl/parameters/ParameterSupportHttpServletRequestWrapper3.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified:
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpContext.java
URL:
http://svn.apache.org/viewvc/sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpContext.java?rev=1569230&r1=1569229&r2=1569230&view=diff
==============================================================================
---
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpContext.java
(original)
+++
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpContext.java
Tue Feb 18 08:42:45 2014
@@ -26,7 +26,7 @@ import javax.servlet.http.HttpServletRes
import org.apache.sling.auth.core.AuthenticationSupport;
import org.apache.sling.commons.mime.MimeTypeService;
-import org.apache.sling.parameters.ParameterSupport;
+import org.apache.sling.engine.impl.parameters.ParameterSupport;
import org.osgi.service.http.HttpContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -115,7 +115,7 @@ class SlingHttpContext implements HttpCo
if (authenticator != null) {
// SLING-559: ensure correct parameter handling according to
- // ParameterSupportImpl
+ // ParameterSupport
request =
ParameterSupport.getParameterSupportRequestWrapper(request);
return authenticator.handleSecurity(request, response);
Modified:
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletRequestImpl.java
URL:
http://svn.apache.org/viewvc/sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletRequestImpl.java?rev=1569230&r1=1569229&r2=1569230&view=diff
==============================================================================
---
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletRequestImpl.java
(original)
+++
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletRequestImpl.java
Tue Feb 18 08:42:45 2014
@@ -36,6 +36,7 @@ import javax.servlet.ServletInputStream;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
+
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.request.RequestDispatcherOptions;
import org.apache.sling.api.request.RequestParameter;
@@ -45,10 +46,10 @@ import org.apache.sling.api.request.Requ
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.engine.impl.helper.NullResourceBundle;
+import org.apache.sling.engine.impl.parameters.ParameterSupport;
import org.apache.sling.engine.impl.request.ContentData;
import org.apache.sling.engine.impl.request.RequestData;
import org.apache.sling.engine.impl.request.SlingRequestDispatcher;
-import org.apache.sling.parameters.ParameterSupport;
import org.osgi.service.http.HttpContext;
import org.osgi.service.useradmin.Authorization;
@@ -184,6 +185,13 @@ public class SlingHttpServletRequestImpl
}
/**
+ * @see
org.apache.sling.api.SlingHttpServletRequest#getRequestParameterList()
+ */
+ public List<RequestParameter> getRequestParameterList() {
+ return this.getParameterSupport().getRequestParameterList();
+ }
+
+ /**
* @see
org.apache.sling.api.SlingHttpServletRequest#getCookie(java.lang.String)
*/
public Cookie getCookie(String name) {
Modified:
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/AbstractRequestParameter.java
URL:
http://svn.apache.org/viewvc/sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/AbstractRequestParameter.java?rev=1569230&r1=1568914&r2=1569230&view=diff
==============================================================================
---
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/AbstractRequestParameter.java
(original)
+++
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/AbstractRequestParameter.java
Tue Feb 18 08:42:45 2014
@@ -16,11 +16,11 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.sling.parameters.impl;
+package org.apache.sling.engine.impl.parameters;
-import org.apache.sling.parameters.NamedRequestParameter;
+import org.apache.sling.api.request.RequestParameter;
-abstract class AbstractRequestParameter implements NamedRequestParameter {
+abstract class AbstractRequestParameter implements RequestParameter {
private String name;
Modified:
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/ContainerRequestParameter.java
URL:
http://svn.apache.org/viewvc/sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/ContainerRequestParameter.java?rev=1569230&r1=1568914&r2=1569230&view=diff
==============================================================================
---
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/ContainerRequestParameter.java
(original)
+++
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/ContainerRequestParameter.java
Tue Feb 18 08:42:45 2014
@@ -16,14 +16,12 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.sling.parameters.impl;
+package org.apache.sling.engine.impl.parameters;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
-import org.apache.sling.parameters.SlingUnsupportedEncodingException;
-
/**
* The <code>ContainerRequestParameter</code> TODO
*/
Modified:
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/MultipartRequestParameter.java
URL:
http://svn.apache.org/viewvc/sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/MultipartRequestParameter.java?rev=1569230&r1=1568914&r2=1569230&view=diff
==============================================================================
---
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/MultipartRequestParameter.java
(original)
+++
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/MultipartRequestParameter.java
Tue Feb 18 08:42:45 2014
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.sling.parameters.impl;
+package org.apache.sling.engine.impl.parameters;
import java.io.IOException;
import java.io.InputStream;
Modified:
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/ParameterMap.java
URL:
http://svn.apache.org/viewvc/sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/ParameterMap.java?rev=1569230&r1=1568914&r2=1569230&view=diff
==============================================================================
---
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/ParameterMap.java
(original)
+++
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/ParameterMap.java
Tue Feb 18 08:42:45 2014
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.sling.parameters.impl;
+package org.apache.sling.engine.impl.parameters;
import java.util.ArrayList;
import java.util.Collection;
@@ -29,7 +29,6 @@ import javax.servlet.http.Part;
import org.apache.sling.api.request.RequestParameter;
import org.apache.sling.api.request.RequestParameterMap;
-import org.apache.sling.parameters.NamedRequestParameter;
import org.slf4j.LoggerFactory;
/**
@@ -46,7 +45,7 @@ public class ParameterMap extends Linked
private Map<String, String[]> stringParameterMap;
- private List<NamedRequestParameter> requestParameters = new
ArrayList<NamedRequestParameter>();
+ private List<RequestParameter> requestParameters = new
ArrayList<RequestParameter>();
static void setMaxParameters(final int maxParameters) {
ParameterMap.maxParameters = (maxParameters > 0) ? maxParameters : -1;
@@ -71,7 +70,7 @@ public class ParameterMap extends Linked
super.put(newName, params);
}
- void addParameter(NamedRequestParameter parameter, boolean prependNew) {
+ void addParameter(RequestParameter parameter, boolean prependNew) {
// check number of parameters
if (this.requestParameters.size() == maxParameters) {
@@ -147,7 +146,7 @@ public class ParameterMap extends Linked
// ---------- Order Request Parameter access
- public List<NamedRequestParameter> getRequestParameterList() {
+ public List<RequestParameter> getRequestParameterList() {
return Collections.unmodifiableList(requestParameters);
}
Copied:
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/ParameterSupport.java
(from r1568916,
sling/whiteboard/fmeschbe/parameters/parameters/src/main/java/org/apache/sling/parameters/impl/ParameterSupportImpl.java)
URL:
http://svn.apache.org/viewvc/sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/ParameterSupport.java?p2=sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/ParameterSupport.java&p1=sling/whiteboard/fmeschbe/parameters/parameters/src/main/java/org/apache/sling/parameters/impl/ParameterSupportImpl.java&r1=1568916&r2=1569230&rev=1569230&view=diff
==============================================================================
---
sling/whiteboard/fmeschbe/parameters/parameters/src/main/java/org/apache/sling/parameters/impl/ParameterSupportImpl.java
(original)
+++
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/ParameterSupport.java
Tue Feb 18 08:42:45 2014
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.sling.parameters.impl;
+package org.apache.sling.engine.impl.parameters;
import java.io.File;
import java.io.IOException;
@@ -29,6 +29,7 @@ import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
@@ -38,12 +39,22 @@ import org.apache.commons.fileupload.ser
import org.apache.commons.fileupload.servlet.ServletRequestContext;
import org.apache.sling.api.request.RequestParameter;
import org.apache.sling.api.request.RequestParameterMap;
-import org.apache.sling.parameters.NamedRequestParameter;
-import org.apache.sling.parameters.ParameterSupport;
-import org.apache.sling.parameters.SlingUnsupportedEncodingException;
import org.slf4j.LoggerFactory;
-public class ParameterSupportImpl extends ParameterSupport {
+public class ParameterSupport {
+
+ /**
+ * The name of the form encoding request parameter indicating the character
+ * encoding of submitted request parameters. This request parameter
+ * overwrites any value of the {@code
ServletRequest.getCharacterEncoding()}
+ * method (which unfortunately happens to be returning {@code null} most of
+ * the time.
+ */
+ public final static String PARAMETER_FORMENCODING = "_charset_";
+
+ // name of the request attribute caching the ParameterSupport instance
+ // used during the request
+ private static final String ATTR_NAME = ParameterSupport.class.getName();
/**
* The name of the request attribute to set to get the Jetty servlet
@@ -86,15 +97,60 @@ public class ParameterSupportImpl extend
private boolean requestDataUsed;
+ /**
+ * Returns the {@code ParameterSupport} instance supporting request
+ * parameter for the give {@code request}. For a single request only a
+ * single instance is actually used. This single instance is cached as a
+ * request attribute. If such an attribute already exists which is not an
+ * instance of this class, the request parameter is replaced.
+ *
+ * @param request The {@code HttpServletRequest} for which to return
request
+ * parameter support.
+ * @return The {@code ParameterSupport} for the given request.
+ */
+ public static ParameterSupport getInstance(HttpServletRequest request) {
+ Object instance = request.getAttribute(ATTR_NAME);
+ if (!(instance instanceof ParameterSupport)) {
+ instance = new ParameterSupport(request);
+ request.setAttribute(ATTR_NAME, instance);
+ }
+ return (ParameterSupport) instance;
+ }
+
+ /**
+ * Returns a {@code HttpServletRequestWrapper} which implements request
+ * parameter access backed by an instance of the {@code ParameterSupport}
+ * class.
+ * <p>
+ * If used in a Servlet API 3 context, this method supports the additional
+ * {@code Part} API introduced with Servlet API 3.
+ *
+ * @param request The {@code HttpServletRequest} to wrap
+ * @return The wrapped {@code request}
+ */
+ public static HttpServletRequestWrapper
getParameterSupportRequestWrapper(final HttpServletRequest request) {
+
+ try {
+ if (request.getClass().getMethod("getServletContext") != null) {
+ return new ParameterSupportHttpServletRequestWrapper3(request);
+ }
+ } catch (Exception e) {
+ // If the getServletContext method does not exist or
+ // is not visible, fall back to a Servlet API 2.x wrapper
+ }
+
+ return new ParameterSupportHttpServletRequestWrapper2x(request);
+ }
+
static void configure(final long maxRequestSize, final String location,
final long maxFileSize,
final int fileSizeThreshold) {
- ParameterSupportImpl.maxRequestSize = (maxRequestSize > 0) ?
maxRequestSize : -1;
- ParameterSupportImpl.location = (location != null) ? new
File(location) : null;
- ParameterSupportImpl.maxFileSize = (maxFileSize > 0) ? maxFileSize :
-1;
- ParameterSupportImpl.fileSizeThreshold = (fileSizeThreshold > 0) ?
fileSizeThreshold : 256000;
+ ParameterSupport.maxRequestSize = (maxRequestSize > 0) ?
maxRequestSize : -1;
+ ParameterSupport.location = (location != null) ? new File(location) :
null;
+ ParameterSupport.maxFileSize = (maxFileSize > 0) ? maxFileSize : -1;
+ ParameterSupport.fileSizeThreshold = (fileSizeThreshold > 0) ?
fileSizeThreshold : 256000;
}
- public ParameterSupportImpl(HttpServletRequest servletRequest) {
+ private ParameterSupport(HttpServletRequest servletRequest) {
this.servletRequest = servletRequest;
// SLING-559: Hack to get Jetty into decoding the request
@@ -126,7 +182,7 @@ public class ParameterSupportImpl extend
public Enumeration<String> getParameterNames() {
return new Enumeration<String>() {
- private final Iterator<String> base =
ParameterSupportImpl.this.getRequestParameterMapInternal().keySet().iterator();
+ private final Iterator<String> base =
ParameterSupport.this.getRequestParameterMapInternal().keySet().iterator();
public boolean hasMoreElements() {
return this.base.hasNext();
@@ -158,7 +214,7 @@ public class ParameterSupportImpl extend
return getRequestParameterMapInternal();
}
- public List<NamedRequestParameter> getRequestParameterList() {
+ public List<RequestParameter> getRequestParameterList() {
return getRequestParameterMapInternal().getRequestParameterList();
}
@@ -248,10 +304,10 @@ public class ParameterSupportImpl extend
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload();
- upload.setSizeMax(ParameterSupportImpl.maxRequestSize);
- upload.setFileSizeMax(ParameterSupportImpl.maxFileSize);
- upload.setFileItemFactory(new
DiskFileItemFactory(ParameterSupportImpl.fileSizeThreshold,
- ParameterSupportImpl.location));
+ upload.setSizeMax(ParameterSupport.maxRequestSize);
+ upload.setFileSizeMax(ParameterSupport.maxFileSize);
+ upload.setFileItemFactory(new
DiskFileItemFactory(ParameterSupport.fileSizeThreshold,
+ ParameterSupport.location));
RequestContext rc = new
ServletRequestContext(this.getServletRequest()) {
public String getCharacterEncoding() {
@@ -271,7 +327,7 @@ public class ParameterSupportImpl extend
if (items != null && items.size() > 0) {
for (Iterator<?> ii = items.iterator(); ii.hasNext();) {
FileItem fileItem = (FileItem) ii.next();
- NamedRequestParameter pp = new
MultipartRequestParameter(fileItem);
+ RequestParameter pp = new MultipartRequestParameter(fileItem);
parameters.addParameter(pp, false);
}
}
Copied:
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/ParameterSupportHttpServletRequestWrapper2x.java
(from r1568916,
sling/whiteboard/fmeschbe/parameters/parameters/src/main/java/org/apache/sling/parameters/impl/ParameterSupportHttpServletRequestWrapper2x.java)
URL:
http://svn.apache.org/viewvc/sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/ParameterSupportHttpServletRequestWrapper2x.java?p2=sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/ParameterSupportHttpServletRequestWrapper2x.java&p1=sling/whiteboard/fmeschbe/parameters/parameters/src/main/java/org/apache/sling/parameters/impl/ParameterSupportHttpServletRequestWrapper2x.java&r1=1568916&r2=1569230&rev=1569230&view=diff
==============================================================================
---
sling/whiteboard/fmeschbe/parameters/parameters/src/main/java/org/apache/sling/parameters/impl/ParameterSupportHttpServletRequestWrapper2x.java
(original)
+++
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/ParameterSupportHttpServletRequestWrapper2x.java
Tue Feb 18 08:42:45 2014
@@ -16,14 +16,13 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.sling.parameters.impl;
+package org.apache.sling.engine.impl.parameters;
import java.util.Enumeration;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
-import org.apache.sling.parameters.ParameterSupport;
public class ParameterSupportHttpServletRequestWrapper2x extends
HttpServletRequestWrapper {
public ParameterSupportHttpServletRequestWrapper2x(HttpServletRequest
request) {
Modified:
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/ParameterSupportHttpServletRequestWrapper3.java
URL:
http://svn.apache.org/viewvc/sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/ParameterSupportHttpServletRequestWrapper3.java?rev=1569230&r1=1568914&r2=1569230&view=diff
==============================================================================
---
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/ParameterSupportHttpServletRequestWrapper3.java
(original)
+++
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/ParameterSupportHttpServletRequestWrapper3.java
Tue Feb 18 08:42:45 2014
@@ -16,26 +16,14 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.sling.parameters.impl;
-
-import java.util.Collection;
+package org.apache.sling.engine.impl.parameters;
import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.Part;
public class ParameterSupportHttpServletRequestWrapper3 extends
ParameterSupportHttpServletRequestWrapper2x {
+
public ParameterSupportHttpServletRequestWrapper3(HttpServletRequest
request) {
super(request);
- }
-
- @Override
- public Part getPart(String name) {
- return (Part) getParameterSupport().getPart(name);
- }
-
- @Override
- @SuppressWarnings("unchecked")
- public Collection<Part> getParts() {
- return (Collection<Part>) getParameterSupport().getParts();
+ throw new InternalError("Wrong class in bundle");
}
}
\ No newline at end of file
Modified:
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/SlingPart.java
URL:
http://svn.apache.org/viewvc/sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/SlingPart.java?rev=1569230&r1=1568914&r2=1569230&view=diff
==============================================================================
---
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/SlingPart.java
(original)
+++
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/SlingPart.java
Tue Feb 18 08:42:45 2014
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.sling.parameters.impl;
+package org.apache.sling.engine.impl.parameters;
import java.io.IOException;
import java.io.InputStream;
Copied:
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/SlingUnsupportedEncodingException.java
(from r1569228,
sling/whiteboard/fmeschbe/parameters/parameters/src/main/java/org/apache/sling/parameters/SlingUnsupportedEncodingException.java)
URL:
http://svn.apache.org/viewvc/sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/SlingUnsupportedEncodingException.java?p2=sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/SlingUnsupportedEncodingException.java&p1=sling/whiteboard/fmeschbe/parameters/parameters/src/main/java/org/apache/sling/parameters/SlingUnsupportedEncodingException.java&r1=1569228&r2=1569230&rev=1569230&view=diff
==============================================================================
---
sling/whiteboard/fmeschbe/parameters/parameters/src/main/java/org/apache/sling/parameters/SlingUnsupportedEncodingException.java
(original)
+++
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/SlingUnsupportedEncodingException.java
Tue Feb 18 08:42:45 2014
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.sling.parameters;
+package org.apache.sling.engine.impl.parameters;
import java.io.UnsupportedEncodingException;
Copied:
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/Util.java
(from r1568916,
sling/whiteboard/fmeschbe/parameters/parameters/src/main/java/org/apache/sling/parameters/impl/Util.java)
URL:
http://svn.apache.org/viewvc/sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/Util.java?p2=sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/Util.java&p1=sling/whiteboard/fmeschbe/parameters/parameters/src/main/java/org/apache/sling/parameters/impl/Util.java&r1=1568916&r2=1569230&rev=1569230&view=diff
==============================================================================
---
sling/whiteboard/fmeschbe/parameters/parameters/src/main/java/org/apache/sling/parameters/impl/Util.java
(original)
+++
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/parameters/Util.java
Tue Feb 18 08:42:45 2014
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.sling.parameters.impl;
+package org.apache.sling.engine.impl.parameters;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -32,11 +32,10 @@ import org.apache.felix.scr.annotations.
import org.apache.felix.scr.annotations.Property;
import org.apache.sling.api.request.RequestParameter;
import org.apache.sling.commons.osgi.PropertiesUtil;
-import org.apache.sling.parameters.ParameterSupport;
@Component(
metatype = true,
- name = "org.apache.sling.parameters.config",
+ name = "org.apache.sling.engine.parameters",
label = "Apache Sling Request Parameter Handling",
description = "Configures Sling's request parameter handling.")
public class Util {
@@ -133,7 +132,7 @@ public class Util {
setDefaultFixEncoding(PropertiesUtil.toString(props.get(PROP_FIX_ENCODING),
ENCODING_DIRECT));
ParameterMap.setMaxParameters(PropertiesUtil.toInteger(props.get(PROP_MAX_PARAMS),
ParameterMap.DEFAULT_MAX_PARAMS));
-
ParameterSupportImpl.configure(PropertiesUtil.toLong(props.get(PROP_MAX_REQUEST_SIZE),
-1),
+
ParameterSupport.configure(PropertiesUtil.toLong(props.get(PROP_MAX_REQUEST_SIZE),
-1),
PropertiesUtil.toString(props.get(PROP_FILE_LOCATION), null),
PropertiesUtil.toLong(props.get(PROP_FILE_SIZE_MAX), -1),
PropertiesUtil.toInteger(props.get(PROP_FILE_SIZE_THRESHOLD), -1));
Modified:
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/request/RequestData.java
URL:
http://svn.apache.org/viewvc/sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/request/RequestData.java?rev=1569230&r1=1569229&r2=1569230&view=diff
==============================================================================
---
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/request/RequestData.java
(original)
+++
sling/whiteboard/fmeschbe/parameters/engine/src/main/java/org/apache/sling/engine/impl/request/RequestData.java
Tue Feb 18 08:42:45 2014
@@ -53,7 +53,7 @@ import org.apache.sling.engine.impl.Slin
import org.apache.sling.engine.impl.SlingRequestProcessorImpl;
import org.apache.sling.engine.impl.adapter.SlingServletRequestAdapter;
import org.apache.sling.engine.impl.adapter.SlingServletResponseAdapter;
-import org.apache.sling.parameters.ParameterSupport;
+import org.apache.sling.engine.impl.parameters.ParameterSupport;
/**
* The <code>RequestData</code> class provides access to objects which are set
Modified:
sling/whiteboard/fmeschbe/parameters/engine/src/test/java/org/apache/sling/engine/impl/parameters/ContainerRequestParameterTest.java
URL:
http://svn.apache.org/viewvc/sling/whiteboard/fmeschbe/parameters/engine/src/test/java/org/apache/sling/engine/impl/parameters/ContainerRequestParameterTest.java?rev=1569230&r1=1568914&r2=1569230&view=diff
==============================================================================
---
sling/whiteboard/fmeschbe/parameters/engine/src/test/java/org/apache/sling/engine/impl/parameters/ContainerRequestParameterTest.java
(original)
+++
sling/whiteboard/fmeschbe/parameters/engine/src/test/java/org/apache/sling/engine/impl/parameters/ContainerRequestParameterTest.java
Tue Feb 18 08:42:45 2014
@@ -16,12 +16,10 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.sling.parameters.impl;
+package org.apache.sling.engine.impl.parameters;
import java.io.UnsupportedEncodingException;
-import org.apache.sling.parameters.impl.ContainerRequestParameter;
-
import junit.framework.TestCase;
public class ContainerRequestParameterTest extends TestCase {
Copied:
sling/whiteboard/fmeschbe/parameters/engine/src/test/java/org/apache/sling/engine/impl/parameters/UtilTest.java
(from r1568916,
sling/whiteboard/fmeschbe/parameters/parameters/src/test/java/org/apache/sling/parameters/impl/UtilTest.java)
URL:
http://svn.apache.org/viewvc/sling/whiteboard/fmeschbe/parameters/engine/src/test/java/org/apache/sling/engine/impl/parameters/UtilTest.java?p2=sling/whiteboard/fmeschbe/parameters/engine/src/test/java/org/apache/sling/engine/impl/parameters/UtilTest.java&p1=sling/whiteboard/fmeschbe/parameters/parameters/src/test/java/org/apache/sling/parameters/impl/UtilTest.java&r1=1568916&r2=1569230&rev=1569230&view=diff
==============================================================================
---
sling/whiteboard/fmeschbe/parameters/parameters/src/test/java/org/apache/sling/parameters/impl/UtilTest.java
(original)
+++
sling/whiteboard/fmeschbe/parameters/engine/src/test/java/org/apache/sling/engine/impl/parameters/UtilTest.java
Tue Feb 18 08:42:45 2014
@@ -16,20 +16,17 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.sling.parameters.impl;
+package org.apache.sling.engine.impl.parameters;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.List;
-import org.apache.sling.parameters.NamedRequestParameter;
-import org.apache.sling.parameters.impl.ContainerRequestParameter;
-import org.apache.sling.parameters.impl.ParameterMap;
-import org.apache.sling.parameters.impl.Util;
-
import junit.framework.TestCase;
+import org.apache.sling.api.request.RequestParameter;
+
public class UtilTest extends TestCase {
private static final String utf8 = "UTF-8";
@@ -108,7 +105,7 @@ public class UtilTest extends TestCase {
assertEquals(3, map.size());
- List<NamedRequestParameter> pars = map.getRequestParameterList();
+ List<RequestParameter> pars = map.getRequestParameterList();
assertEquals(3, pars.size());
assertEquals("a", pars.get(0).getName());
assertEquals("1", pars.get(0).getString());
Added: sling/whiteboard/fmeschbe/parameters/pom.xml
URL:
http://svn.apache.org/viewvc/sling/whiteboard/fmeschbe/parameters/pom.xml?rev=1569230&view=auto
==============================================================================
Binary file - no diff available.
Propchange: sling/whiteboard/fmeschbe/parameters/pom.xml
------------------------------------------------------------------------------
svn:mime-type = application/xml