You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by bd...@apache.org on 2016/02/05 15:38:46 UTC
svn commit: r1728673 - in /sling/trunk/bundles/engine/src:
main/java/org/apache/sling/engine/impl/
main/java/org/apache/sling/engine/impl/request/
test/java/org/apache/sling/engine/impl/request/
Author: bdelacretaz
Date: Fri Feb 5 14:38:46 2016
New Revision: 1728673
URL: http://svn.apache.org/viewvc?rev=1728673&view=rev
Log:
SLING-5489 - create the SlingRequestProgressTracker earlier
Modified:
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpContext.java
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/RequestData.java
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/SlingRequestProgressTracker.java
sling/trunk/bundles/engine/src/test/java/org/apache/sling/engine/impl/request/InitResourceTest.java
sling/trunk/bundles/engine/src/test/java/org/apache/sling/engine/impl/request/RequestDataTest.java
Modified: sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpContext.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpContext.java?rev=1728673&r1=1728672&r2=1728673&view=diff
==============================================================================
--- sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpContext.java (original)
+++ sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpContext.java Fri Feb 5 14:38:46 2016
@@ -24,9 +24,11 @@ import java.net.URL;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+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.SlingRequestProgressTracker;
import org.osgi.service.http.HttpContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -111,6 +113,11 @@ class SlingHttpContext implements HttpCo
public boolean handleSecurity(HttpServletRequest request,
HttpServletResponse response) throws IOException {
+ final SlingRequestProgressTracker t = new SlingRequestProgressTracker(request);
+ request.setAttribute(RequestProgressTracker.class.getName(), t);
+ final String timerName = "handleSecurity";
+ t.startTimer(timerName);
+
final AuthenticationSupport authenticator = this.authenticationSupport;
if (authenticator != null) {
@@ -118,8 +125,9 @@ class SlingHttpContext implements HttpCo
// ParameterSupport
request = ParameterSupport.getParameterSupportRequestWrapper(request);
- return authenticator.handleSecurity(request, response);
-
+ final boolean result = authenticator.handleSecurity(request, response);
+ t.logTimer(timerName, "authenticator {0} returns {1}", authenticator, result);
+ return result;
}
log.error("handleSecurity: AuthenticationSupport service missing. Cannot authenticate request.");
Modified: sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/RequestData.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/RequestData.java?rev=1728673&r1=1728672&r2=1728673&view=diff
==============================================================================
--- sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/RequestData.java (original)
+++ sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/RequestData.java Fri Feb 5 14:38:46 2016
@@ -216,11 +216,17 @@ public class RequestData {
this.slingResponse = new SlingHttpServletResponseImpl(this,
servletResponse);
- this.requestProgressTracker = new SlingRequestProgressTracker();
- this.requestProgressTracker.log(
- "Method={0}, PathInfo={1}",
- this.slingRequest.getMethod(), this.slingRequest.getPathInfo()
- );
+ // Getting the RequestProgressTracker from the request attributes like
+ // this should not be generally used, it's just a way to pass it from
+ // its creation point to here, so it's made available via
+ // the Sling request's getRequestProgressTracker method.
+ final Object o = request.getAttribute(RequestProgressTracker.class.getName());
+ if(o instanceof SlingRequestProgressTracker) {
+ this.requestProgressTracker = (SlingRequestProgressTracker)o;
+ } else {
+ log.warn("SlingRequestProgressTracker not found in request attributes");
+ this.requestProgressTracker = new SlingRequestProgressTracker(request);
+ }
}
public Resource initResource(ResourceResolver resourceResolver) {
Modified: sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/SlingRequestProgressTracker.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/SlingRequestProgressTracker.java?rev=1728673&r1=1728672&r2=1728673&view=diff
==============================================================================
--- sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/SlingRequestProgressTracker.java (original)
+++ sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/SlingRequestProgressTracker.java Fri Feb 5 14:38:46 2016
@@ -25,6 +25,8 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import javax.servlet.http.HttpServletRequest;
+
import org.apache.sling.api.request.RequestProgressTracker;
/**
@@ -134,7 +136,17 @@ public class SlingRequestProgressTracker
* Creates a new request progress tracker.
*/
public SlingRequestProgressTracker() {
+ this(null);
+ }
+
+ /**
+ * Creates a new request progress tracker and logs initial messages about the supplied request
+ */
+ public SlingRequestProgressTracker(HttpServletRequest request) {
reset();
+ if(request != null) {
+ log("Method={0}, PathInfo={1}", request.getMethod(), request.getPathInfo());
+ }
}
/**
Modified: sling/trunk/bundles/engine/src/test/java/org/apache/sling/engine/impl/request/InitResourceTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/engine/src/test/java/org/apache/sling/engine/impl/request/InitResourceTest.java?rev=1728673&r1=1728672&r2=1728673&view=diff
==============================================================================
--- sling/trunk/bundles/engine/src/test/java/org/apache/sling/engine/impl/request/InitResourceTest.java (original)
+++ sling/trunk/bundles/engine/src/test/java/org/apache/sling/engine/impl/request/InitResourceTest.java Fri Feb 5 14:38:46 2016
@@ -22,6 +22,7 @@ import java.util.Collection;
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.jmock.Expectations;
import org.jmock.Mockery;
@@ -94,6 +95,9 @@ public class InitResourceTest {
will(returnValue(null));
allowing(req).setAttribute(with(equal(RequestData.REQUEST_RESOURCE_PATH_ATTR)), with(any(Object.class)));
+ allowing(req).getAttribute(RequestProgressTracker.class.getName());
+ will(returnValue(null));
+
// Verify that the ResourceResolver is called with the expected path
allowing(resourceResolver).resolve(with(any(HttpServletRequest.class)),with(equal(expectedResolvePath)));
}});
Modified: sling/trunk/bundles/engine/src/test/java/org/apache/sling/engine/impl/request/RequestDataTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/engine/src/test/java/org/apache/sling/engine/impl/request/RequestDataTest.java?rev=1728673&r1=1728672&r2=1728673&view=diff
==============================================================================
--- sling/trunk/bundles/engine/src/test/java/org/apache/sling/engine/impl/request/RequestDataTest.java (original)
+++ sling/trunk/bundles/engine/src/test/java/org/apache/sling/engine/impl/request/RequestDataTest.java Fri Feb 5 14:38:46 2016
@@ -25,6 +25,7 @@ import javax.servlet.http.HttpServletRes
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
+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.SlingHttpServletResponseImpl;
@@ -36,6 +37,7 @@ import org.jmock.lib.legacy.ClassImposte
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
+
import static org.junit.Assert.fail;
@RunWith(JMock.class)
@@ -83,6 +85,9 @@ public class RequestDataTest {
allowing(servletConfig).getServletName();
will(returnValue("SERVLET_NAME"));
+
+ allowing(req).getAttribute(RequestProgressTracker.class.getName());
+ will(returnValue(null));
}});
requestData = new RequestData(null, req, resp) {