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) {