You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by pa...@apache.org on 2017/09/20 21:05:15 UTC
svn commit: r1809082 - in /sling/whiteboard/pauls/engine/src:
main/java/org/apache/sling/engine/impl/
main/java/org/apache/sling/engine/impl/parameters/
main/java/org/apache/sling/engine/impl/request/
test/java/org/apache/sling/engine/impl/ test/java/o...
Author: pauls
Date: Wed Sep 20 21:05:14 2017
New Revision: 1809082
URL: http://svn.apache.org/viewvc?rev=1809082&view=rev
Log:
Support streaming of request body.
Removed:
sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/parameters/RequestParameterSupportConfigurer.java
Modified:
sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpContext.java
sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletRequestImpl.java
sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletRequestImplBase.java
sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/SlingMainServlet.java
sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/SlingRequestProcessorImpl.java
sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/parameters/ParameterSupport.java
sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/parameters/RequestParameterSupportFilter.java
sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/parameters/Util.java
sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/request/RequestData.java
sling/whiteboard/pauls/engine/src/test/java/org/apache/sling/engine/impl/SlingHttpServletRequestImplTest.java
sling/whiteboard/pauls/engine/src/test/java/org/apache/sling/engine/impl/helper/ExternalServletContextWrapperTest.java
sling/whiteboard/pauls/engine/src/test/java/org/apache/sling/engine/impl/request/InitResourceTest.java
sling/whiteboard/pauls/engine/src/test/java/org/apache/sling/engine/impl/request/RequestDataTest.java
Modified: sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpContext.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpContext.java?rev=1809082&r1=1809081&r2=1809082&view=diff
==============================================================================
--- sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpContext.java (original)
+++ sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpContext.java Wed Sep 20 21:05:14 2017
@@ -18,23 +18,19 @@
*/
package org.apache.sling.engine.impl;
-import java.io.IOException;
-import java.net.URL;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.sling.api.request.RequestParameter;
import org.apache.sling.api.request.RequestProgressTracker;
import org.apache.sling.auth.core.AuthenticationSupport;
import org.apache.sling.commons.mime.MimeTypeService;
-import org.apache.sling.engine.impl.parameters.ParameterSupport;
-import org.apache.sling.engine.impl.request.RequestData;
import org.apache.sling.engine.impl.request.SlingRequestProgressTracker;
import org.osgi.service.http.context.ServletContextHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.net.URL;
+
/**
* The <code>SlingHttpContext</code> implements the OSGi HttpContext used to
* register the {@link SlingMainServlet} with the OSGi HttpService.
@@ -126,14 +122,8 @@ class SlingHttpContext extends ServletCo
final AuthenticationSupport authenticator = this.authenticationSupport;
if (authenticator != null) {
- // SLING-559: ensure correct parameter handling according to
- // ParameterSupport if path is configured to match
- if (ParameterSupport.matches(request.getRequestURI())) {
- request = ParameterSupport.getParameterSupportRequestWrapper(request);
- }
- else {
- request = new SlingHttpServletRequestImplBase(request);
- }
+ // ensure correct parameter handling
+ request = SlingHttpServletRequestImplBase.wrap(request);
final boolean result = authenticator.handleSecurity(request, response);
t.logTimer(timerName, "authenticator {0} returns {1}", authenticator, result);
Modified: sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletRequestImpl.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletRequestImpl.java?rev=1809082&r1=1809081&r2=1809082&view=diff
==============================================================================
--- sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletRequestImpl.java (original)
+++ sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletRequestImpl.java Wed Sep 20 21:05:14 2017
@@ -20,51 +20,32 @@ package org.apache.sling.engine.impl;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.request.RequestDispatcherOptions;
-import org.apache.sling.api.request.RequestParameter;
-import org.apache.sling.api.request.RequestParameterMap;
import org.apache.sling.api.request.RequestPathInfo;
import org.apache.sling.api.request.RequestProgressTracker;
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.parameters.Util;
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.osgi.service.http.HttpContext;
import org.osgi.service.useradmin.Authorization;
-import sun.misc.IOUtils;
import javax.servlet.RequestDispatcher;
-import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletRequestWrapper;
-import javax.servlet.http.Part;
import java.io.BufferedReader;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
import java.io.IOException;
-import java.io.InputStream;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.security.Principal;
-import java.util.AbstractMap;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collections;
import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
import java.util.List;
import java.util.Locale;
-import java.util.Map;
import java.util.ResourceBundle;
-import java.util.Set;
public class SlingHttpServletRequestImpl extends SlingHttpServletRequestImplBase implements
SlingHttpServletRequest {
Modified: sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletRequestImplBase.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletRequestImplBase.java?rev=1809082&r1=1809081&r2=1809082&view=diff
==============================================================================
--- sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletRequestImplBase.java (original)
+++ sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletRequestImplBase.java Wed Sep 20 21:05:14 2017
@@ -18,9 +18,11 @@
*/
package org.apache.sling.engine.impl;
-import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.request.RequestParameter;
import org.apache.sling.api.request.RequestParameterMap;
+import org.apache.sling.engine.impl.parameters.ParameterMap;
+import org.apache.sling.engine.impl.parameters.ParameterSupport;
+import org.apache.sling.engine.impl.parameters.ParameterSupportHttpServletRequestWrapper;
import org.apache.sling.engine.impl.parameters.Util;
import javax.servlet.http.HttpServletRequest;
@@ -31,20 +33,75 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
-import java.util.AbstractMap;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
-import java.util.Set;
+
+import static org.apache.sling.engine.impl.parameters.ParameterSupport.SLING_UPLOADMODE_HEADER;
+import static org.apache.sling.engine.impl.parameters.ParameterSupport.STREAM_UPLOAD;
+import static org.apache.sling.engine.impl.parameters.ParameterSupport.UPLOADMODE_PARAM;
public class SlingHttpServletRequestImplBase extends HttpServletRequestWrapper {
+ public static final String MARKER = SlingHttpServletRequestImplBase.class.getName();
+
+ private final Map<String, RequestParameter[]> postQueryMap;
+
+ public static HttpServletRequest wrap(HttpServletRequest request) {
+ if (ParameterSupport.matches(request.getRequestURI()) || STREAM_UPLOAD.equals(request.getHeader(SLING_UPLOADMODE_HEADER))) {
+ request.setAttribute(ParameterSupport.MARKER_IS_SERVICE_PROCESSING, "true");
+ return new ParameterSupportHttpServletRequestWrapper(request);
+ }
+ else {
+ SlingHttpServletRequestImplBase wrapper = new SlingHttpServletRequestImplBase(request);
+ RequestParameter[] rp = wrapper.postQueryMap.get(UPLOADMODE_PARAM);
+ if ( rp != null && rp.length == 1 && STREAM_UPLOAD.equals(rp[0].getString())) {
+ request.setAttribute(ParameterSupport.MARKER_IS_SERVICE_PROCESSING, "true");
+ return new ParameterSupportHttpServletRequestWrapper(request);
+ }
+ else {
+ return wrapper;
+ }
+ }
+ }
public SlingHttpServletRequestImplBase(HttpServletRequest request) {
super(request);
+ Map<String, RequestParameter[]> cached = (Map<String, RequestParameter[]>) request.getAttribute(MARKER);
+ if (cached == null) {
+ if (request.getContentType() != null && request.getContentType().startsWith("multipart/form-data")) {
+ final String query = request.getQueryString();
+ if (query != null && !query.isEmpty()) {
+ String encoding = request.getCharacterEncoding();
+ if (encoding == null) {
+ encoding = Util.ENCODING_DIRECT;
+ }
+ ParameterMap parameters = new ParameterMap();
+ InputStream input = Util.toInputStream(query);
+ try {
+ Util.parseQueryString(input, encoding, parameters, false);
+ } catch (IOException e) {
+ // TODO: log this or something
+ parameters.clear();
+ }
+ cached = new LinkedHashMap<>();
+ for (String name : parameters.keySet()) {
+ cached.put(name, parameters.getValues(name));
+ }
+ } else {
+ cached = Collections.EMPTY_MAP;
+ }
+ }
+ else {
+ cached = Collections.EMPTY_MAP;
+ }
+ }
+ postQueryMap = cached;
+ request.setAttribute(MARKER, postQueryMap);
}
@Override
@@ -109,6 +166,10 @@ public class SlingHttpServletRequestImpl
if (getContentType() != null && getContentType().startsWith("multipart/form-data")) {
try {
List<RequestParameter> result = new ArrayList<>();
+ RequestParameter[] queryParams = postQueryMap.get(name);
+ if (queryParams != null) {
+ result.addAll(Arrays.asList(queryParams));
+ }
for (Part part : getParts()) {
if (part.getName().equals(name)) {
result.add(new PartRequestParameterImpl(name, part));
@@ -149,6 +210,11 @@ public class SlingHttpServletRequestImpl
if (getContentType() != null && getContentType().startsWith("multipart/form-data")) {
try {
+ for (String name : postQueryMap.keySet()) {
+ if (!result.containsKey(name)) {
+ result.put(name, getRequestParameters(name));
+ }
+ }
for (Part part : getParts()) {
if (!result.containsKey(part.getName())) {
result.put(part.getName(), getRequestParameters(part.getName()));
@@ -173,25 +239,8 @@ public class SlingHttpServletRequestImpl
*/
public List<RequestParameter> getRequestParameterList() {
List<RequestParameter> result = new ArrayList<>();
- if (getContentType().startsWith("multipart/form-data")) {
- try {
- for (Part part : getParts()) {
- RequestParameter[] params = getRequestParameters(part.getName());
- if (params != null) {
- result.addAll(Arrays.asList(params));
- }
- }
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
- else {
- for (Enumeration<String> names = getRequest().getParameterNames(); names.hasMoreElements(); ) {
- RequestParameter[] params = getRequestParameters(names.nextElement());
- if (params != null) {
- result.addAll(Arrays.asList(params));
- }
- }
+ for (RequestParameter[] params : getRequestParameterMap().values()) {
+ result.addAll(Arrays.asList(params));
}
return result;
}
Modified: sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/SlingMainServlet.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/SlingMainServlet.java?rev=1809082&r1=1809081&r2=1809082&view=diff
==============================================================================
--- sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/SlingMainServlet.java (original)
+++ sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/SlingMainServlet.java Wed Sep 20 21:05:14 2017
@@ -18,23 +18,6 @@
*/
package org.apache.sling.engine.impl;
-import java.util.ArrayList;
-import java.util.Dictionary;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.List;
-import java.util.Map;
-import java.util.regex.Pattern;
-
-import javax.servlet.GenericServlet;
-import javax.servlet.Servlet;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.annotation.MultipartConfig;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
import org.apache.sling.api.adapter.AdapterManager;
import org.apache.sling.api.request.SlingRequestEvent;
import org.apache.sling.api.resource.ResourceResolver;
@@ -68,6 +51,22 @@ import org.osgi.service.metatype.annotat
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import javax.servlet.GenericServlet;
+import javax.servlet.Servlet;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.annotation.MultipartConfig;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.Dictionary;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Pattern;
+
/**
* The <code>SlingMainServlet</code>
*/
Modified: sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/SlingRequestProcessorImpl.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/SlingRequestProcessorImpl.java?rev=1809082&r1=1809081&r2=1809082&view=diff
==============================================================================
--- sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/SlingRequestProcessorImpl.java (original)
+++ sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/SlingRequestProcessorImpl.java Wed Sep 20 21:05:14 2017
@@ -18,24 +18,6 @@
*/
package org.apache.sling.engine.impl;
-import static org.apache.sling.api.SlingConstants.ERROR_SERVLET_NAME;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.io.Writer;
-import java.security.AccessControlException;
-
-import javax.servlet.FilterChain;
-import javax.servlet.Servlet;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.UnavailableException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
import org.apache.sling.api.SlingException;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
@@ -60,6 +42,23 @@ import org.apache.sling.engine.servlets.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import javax.servlet.FilterChain;
+import javax.servlet.Servlet;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.UnavailableException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.io.Writer;
+import java.security.AccessControlException;
+
+import static org.apache.sling.api.SlingConstants.ERROR_SERVLET_NAME;
+
public class SlingRequestProcessorImpl implements SlingRequestProcessor {
/** default log */
Modified: sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/parameters/ParameterSupport.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/parameters/ParameterSupport.java?rev=1809082&r1=1809081&r2=1809082&view=diff
==============================================================================
--- sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/parameters/ParameterSupport.java (original)
+++ sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/parameters/ParameterSupport.java Wed Sep 20 21:05:14 2017
@@ -43,7 +43,6 @@ import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
-import java.util.regex.Pattern;
public class ParameterSupport {
Modified: sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/parameters/RequestParameterSupportFilter.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/parameters/RequestParameterSupportFilter.java?rev=1809082&r1=1809081&r2=1809082&view=diff
==============================================================================
--- sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/parameters/RequestParameterSupportFilter.java (original)
+++ sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/parameters/RequestParameterSupportFilter.java Wed Sep 20 21:05:14 2017
@@ -39,13 +39,13 @@ import javax.servlet.http.HttpServletReq
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
-import java.util.regex.Pattern;
@Component(
name = RequestParameterSupportFilter.PID,
property = {
Constants.SERVICE_RANKING + ":Integer=" + Integer.MAX_VALUE,
- "osgi.http.whiteboard.context.select=(osgi.http.whiteboard.context.name=org.apache.sling)"
+ "osgi.http.whiteboard.context.select=(osgi.http.whiteboard.context.name=org.apache.sling)",
+ "osgi.http.whiteboard.filter.pattern=/"
},
service = Filter.class)
@Designate(ocd=RequestParameterSupportFilter.Config.class)
@@ -58,9 +58,7 @@ public class RequestParameterSupportFilt
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
- if (request instanceof HttpServletRequest) {
- log.info("Request: " + ((HttpServletRequest) request).getRequestURI());
-
+ if ("true".equals(request.getAttribute(ParameterSupport.MARKER_IS_SERVICE_PROCESSING))) {
chain.doFilter(ParameterSupport.getParameterSupportRequestWrapper((HttpServletRequest) request), response);
}
else {
@@ -123,9 +121,10 @@ public class RequestParameterSupportFilt
@AttributeDefinition(
name = "Path patterns",
- description = "Requests with a path matching the pattern will get parameter support - default is null (i.e., none)"
+ description = "Requests with a path matching the pattern will get request parameter ordering and streaming via request parameter support " +
+ "- default is null (i.e., none)"
)
- String[] osgi_http_whiteboard_filter_pattern();
+ String[] patterns();
}
static final String PID = "org.apache.sling.engine.parameters";
@@ -147,7 +146,7 @@ public class RequestParameterSupportFilt
final long maxFileSize = config.file_max();
final int fileSizeThreshold = config.file_threshold();
final boolean checkAddParameters = config.sling_default_parameter_checkForAdditionalContainerParameters();
- String[] pattern = config.osgi_http_whiteboard_filter_pattern();
+ String[] patterns = config.patterns();
if (log.isInfoEnabled()) {
log.info("Default Character Encoding: {}", fixEncoding);
@@ -157,13 +156,13 @@ public class RequestParameterSupportFilt
log.info("Maximum File Size: {}", maxFileSize);
log.info("Tempory File Creation Threshold: {}", fileSizeThreshold);
log.info("Check for additional container parameters: {}", checkAddParameters);
- log.info("Patterns: {}", pattern != null ? Arrays.asList(pattern) : null);
+ log.info("Patterns: {}", patterns != null ? Arrays.asList(patterns) : null);
}
Util.setDefaultFixEncoding(fixEncoding);
ParameterMap.setMaxParameters(maxParams);
ParameterSupport.configure(maxRequestSize, fileLocation, maxFileSize,
- fileSizeThreshold, checkAddParameters, pattern);
+ fileSizeThreshold, checkAddParameters, patterns);
}
private String getFileLocation(String fileLocation) {
Modified: sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/parameters/Util.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/parameters/Util.java?rev=1809082&r1=1809081&r2=1809082&view=diff
==============================================================================
--- sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/parameters/Util.java (original)
+++ sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/parameters/Util.java Wed Sep 20 21:05:14 2017
@@ -103,7 +103,7 @@ public class Util {
return data;
}
- static InputStream toInputStream(String source) {
+ public static InputStream toInputStream(String source) {
byte[] data = fromIdentityEncodedString(source);
return new ByteArrayInputStream(data);
}
Modified: sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/request/RequestData.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/request/RequestData.java?rev=1809082&r1=1809081&r2=1809082&view=diff
==============================================================================
--- sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/request/RequestData.java (original)
+++ sling/whiteboard/pauls/engine/src/main/java/org/apache/sling/engine/impl/request/RequestData.java Wed Sep 20 21:05:14 2017
@@ -18,24 +18,6 @@
*/
package org.apache.sling.engine.impl.request;
-import static org.apache.sling.api.SlingConstants.SLING_CURRENT_SERVLET_NAME;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
-import java.util.ArrayList;
-
-import javax.servlet.Servlet;
-import javax.servlet.ServletException;
-import javax.servlet.ServletInputStream;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletRequestWrapper;
-import javax.servlet.ServletResponse;
-import javax.servlet.ServletResponseWrapper;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.request.RecursionTooDeepException;
@@ -58,6 +40,23 @@ import org.apache.sling.engine.impl.adap
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import javax.servlet.Servlet;
+import javax.servlet.ServletException;
+import javax.servlet.ServletInputStream;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletRequestWrapper;
+import javax.servlet.ServletResponse;
+import javax.servlet.ServletResponseWrapper;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.util.ArrayList;
+
+import static org.apache.sling.api.SlingConstants.SLING_CURRENT_SERVLET_NAME;
+
/**
* The <code>RequestData</code> class provides access to objects which are set
* on a Servlet Request wide basis such as the repository session, the
Modified: sling/whiteboard/pauls/engine/src/test/java/org/apache/sling/engine/impl/SlingHttpServletRequestImplTest.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/pauls/engine/src/test/java/org/apache/sling/engine/impl/SlingHttpServletRequestImplTest.java?rev=1809082&r1=1809081&r2=1809082&view=diff
==============================================================================
--- sling/whiteboard/pauls/engine/src/test/java/org/apache/sling/engine/impl/SlingHttpServletRequestImplTest.java (original)
+++ sling/whiteboard/pauls/engine/src/test/java/org/apache/sling/engine/impl/SlingHttpServletRequestImplTest.java Wed Sep 20 21:05:14 2017
@@ -19,9 +19,11 @@
package org.apache.sling.engine.impl;
import java.security.Principal;
+import java.util.Collections;
import javax.servlet.http.HttpServletRequest;
import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.engine.impl.parameters.ParameterSupport;
import org.apache.sling.engine.impl.request.RequestData;
import org.jmock.Expectations;
import org.jmock.Mockery;
@@ -43,6 +45,15 @@ public class SlingHttpServletRequestImpl
final HttpServletRequest servletRequest = context.mock(HttpServletRequest.class);
context.checking(new Expectations() {{
+ ignoring(servletRequest).getAttribute(ParameterSupport.MARKER_IS_SERVICE_PROCESSING);
+
+ ignoring(servletRequest).getAttribute(SlingHttpServletRequestImplBase.MARKER);
+ will(returnValue(null));
+ ignoring(servletRequest).setAttribute(SlingHttpServletRequestImplBase.MARKER, Collections.EMPTY_MAP);
+
+ ignoring(servletRequest).getContentType();
+ will(returnValue(null));
+
one(servletRequest).getServletPath();
will(returnValue("/path"));
allowing(servletRequest).getPathInfo();
@@ -70,6 +81,15 @@ public class SlingHttpServletRequestImpl
final HttpServletRequest servletRequest = context.mock(HttpServletRequest.class);
context.checking(new Expectations() {{
+ ignoring(servletRequest).getAttribute(ParameterSupport.MARKER_IS_SERVICE_PROCESSING);
+
+ ignoring(servletRequest).getAttribute(SlingHttpServletRequestImplBase.MARKER);
+ will(returnValue(null));
+ ignoring(servletRequest).setAttribute(SlingHttpServletRequestImplBase.MARKER, Collections.EMPTY_MAP);
+
+ ignoring(servletRequest).getContentType();
+ will(returnValue(null));
+
one(servletRequest).getServletPath();
will(returnValue("/path"));
allowing(servletRequest).getPathInfo();
@@ -97,6 +117,15 @@ public class SlingHttpServletRequestImpl
final HttpServletRequest servletRequest = context.mock(HttpServletRequest.class);
context.checking(new Expectations() {{
+ ignoring(servletRequest).getAttribute(ParameterSupport.MARKER_IS_SERVICE_PROCESSING);
+
+ ignoring(servletRequest).getAttribute(SlingHttpServletRequestImplBase.MARKER);
+ will(returnValue(null));
+ ignoring(servletRequest).setAttribute(SlingHttpServletRequestImplBase.MARKER, Collections.EMPTY_MAP);
+
+ ignoring(servletRequest).getContentType();
+ will(returnValue(null));
+
one(servletRequest).getServletPath();
will(returnValue("/path"));
allowing(servletRequest).getPathInfo();
Modified: sling/whiteboard/pauls/engine/src/test/java/org/apache/sling/engine/impl/helper/ExternalServletContextWrapperTest.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/pauls/engine/src/test/java/org/apache/sling/engine/impl/helper/ExternalServletContextWrapperTest.java?rev=1809082&r1=1809081&r2=1809082&view=diff
==============================================================================
--- sling/whiteboard/pauls/engine/src/test/java/org/apache/sling/engine/impl/helper/ExternalServletContextWrapperTest.java (original)
+++ sling/whiteboard/pauls/engine/src/test/java/org/apache/sling/engine/impl/helper/ExternalServletContextWrapperTest.java Wed Sep 20 21:05:14 2017
@@ -30,8 +30,10 @@ import javax.servlet.http.HttpServletRes
import javax.servlet.http.HttpServletResponseWrapper;
import org.apache.sling.engine.impl.SlingHttpServletRequestImpl;
+import org.apache.sling.engine.impl.SlingHttpServletRequestImplBase;
import org.apache.sling.engine.impl.SlingHttpServletResponseImpl;
import org.apache.sling.engine.impl.helper.ExternalServletContextWrapper.RequestDispatcherWrapper;
+import org.apache.sling.engine.impl.parameters.ParameterSupport;
import org.jmock.Expectations;
import org.jmock.Mockery;
import org.jmock.integration.junit4.JMock;
@@ -39,6 +41,8 @@ import org.jmock.integration.junit4.JUni
import org.junit.Test;
import org.junit.runner.RunWith;
+import java.util.Collections;
+
@RunWith(JMock.class)
public class ExternalServletContextWrapperTest {
Mockery context = new JUnit4Mockery();
@@ -111,6 +115,15 @@ public class ExternalServletContextWrapp
final HttpServletRequest req = context.mock(HttpServletRequest.class);
context.checking(new Expectations(){{
+ ignoring(req).getAttribute(ParameterSupport.MARKER_IS_SERVICE_PROCESSING);
+
+ ignoring(req).getAttribute(SlingHttpServletRequestImplBase.MARKER);
+ will(returnValue(null));
+ ignoring(req).setAttribute(SlingHttpServletRequestImplBase.MARKER, Collections.EMPTY_MAP);
+
+ ignoring(req).getContentType();
+ will(returnValue(null));
+
allowing(req).getServletPath();
will(returnValue("/"));
allowing(req).getPathInfo();
@@ -136,6 +149,15 @@ public class ExternalServletContextWrapp
final HttpServletRequest req = context.mock(HttpServletRequest.class);
context.checking(new Expectations(){{
+ ignoring(req).getAttribute(ParameterSupport.MARKER_IS_SERVICE_PROCESSING);
+
+ ignoring(req).getAttribute(SlingHttpServletRequestImplBase.MARKER);
+ will(returnValue(null));
+ ignoring(req).setAttribute(SlingHttpServletRequestImplBase.MARKER, Collections.EMPTY_MAP);
+
+ ignoring(req).getContentType();
+ will(returnValue(null));
+
allowing(req).getServletPath();
will(returnValue("/"));
allowing(req).getPathInfo();
Modified: sling/whiteboard/pauls/engine/src/test/java/org/apache/sling/engine/impl/request/InitResourceTest.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/pauls/engine/src/test/java/org/apache/sling/engine/impl/request/InitResourceTest.java?rev=1809082&r1=1809081&r2=1809082&view=diff
==============================================================================
--- sling/whiteboard/pauls/engine/src/test/java/org/apache/sling/engine/impl/request/InitResourceTest.java (original)
+++ sling/whiteboard/pauls/engine/src/test/java/org/apache/sling/engine/impl/request/InitResourceTest.java Wed Sep 20 21:05:14 2017
@@ -18,12 +18,15 @@ package org.apache.sling.engine.impl.req
import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.sling.api.request.RequestProgressTracker;
import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.engine.impl.SlingHttpServletRequestImplBase;
+import org.apache.sling.engine.impl.parameters.ParameterSupport;
import org.jmock.Expectations;
import org.jmock.Mockery;
import org.junit.Before;
@@ -73,6 +76,15 @@ public class InitResourceTest {
resourceResolver = context.mock(ResourceResolver.class);
context.checking(new Expectations() {{
+ ignoring(req).getAttribute(ParameterSupport.MARKER_IS_SERVICE_PROCESSING);
+
+ ignoring(req).getAttribute(SlingHttpServletRequestImplBase.MARKER);
+ will(returnValue(null));
+ ignoring(req).setAttribute(SlingHttpServletRequestImplBase.MARKER, Collections.EMPTY_MAP);
+
+ ignoring(req).getContentType();
+ will(returnValue(null));
+
allowing(req).getRequestURL();
will(returnValue(new StringBuffer(requestURL)));
Modified: sling/whiteboard/pauls/engine/src/test/java/org/apache/sling/engine/impl/request/RequestDataTest.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/pauls/engine/src/test/java/org/apache/sling/engine/impl/request/RequestDataTest.java?rev=1809082&r1=1809081&r2=1809082&view=diff
==============================================================================
--- sling/whiteboard/pauls/engine/src/test/java/org/apache/sling/engine/impl/request/RequestDataTest.java (original)
+++ sling/whiteboard/pauls/engine/src/test/java/org/apache/sling/engine/impl/request/RequestDataTest.java Wed Sep 20 21:05:14 2017
@@ -30,13 +30,17 @@ import org.apache.sling.api.SlingHttpSer
import org.apache.sling.api.request.RequestProgressTracker;
import org.apache.sling.api.request.TooManyCallsException;
import org.apache.sling.engine.impl.SlingHttpServletRequestImpl;
+import org.apache.sling.engine.impl.SlingHttpServletRequestImplBase;
import org.apache.sling.engine.impl.SlingHttpServletResponseImpl;
+import org.apache.sling.engine.impl.parameters.ParameterSupport;
import org.jmock.Expectations;
import org.jmock.Mockery;
import org.jmock.lib.legacy.ClassImposteriser;
import org.junit.Before;
import org.junit.Test;
+import java.util.Collections;
+
public class RequestDataTest {
private Mockery context;
@@ -60,6 +64,15 @@ public class RequestDataTest {
final ServletConfig servletConfig = context.mock(ServletConfig.class);
context.checking(new Expectations() {{
+ ignoring(req).getAttribute(ParameterSupport.MARKER_IS_SERVICE_PROCESSING);
+
+ ignoring(req).getAttribute(SlingHttpServletRequestImplBase.MARKER);
+ will(returnValue(null));
+ ignoring(req).setAttribute(SlingHttpServletRequestImplBase.MARKER, Collections.EMPTY_MAP);
+
+ ignoring(req).getContentType();
+ will(returnValue(null));
+
allowing(req).getServletPath();
will(returnValue("/"));