Author: hlship
Date: Wed Jan  6 17:37:55 2010
New Revision: 896563

URL: http://svn.apache.org/viewvc?rev=896563&view=rev
Log:
Better encapsulate the loopback logic inside ComponentEventLinkEncoderImpl and 
PageRenderRequestParameters, by adding a loopback property to the latter

Modified:
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImpl.java
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderRequestHandlerImpl.java
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/PageRenderRequestParameters.java
    
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageRenderDispatcherTest.java
    
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageRenderRequestHandlerImplTest.java

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImpl.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImpl.java?rev=896563&r1=896562&r2=896563&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImpl.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImpl.java
 Wed Jan  6 17:37:55 2010
@@ -323,7 +323,8 @@
             String pageName = extendedName.substring(0, slashx);
             String pageActivationContext = atEnd ? "" : 
extendedName.substring(slashx + 1);
 
-            PageRenderRequestParameters parameters = checkIfPage(pageName, 
pageActivationContext);
+            PageRenderRequestParameters parameters = checkIfPage(request, 
pageName,
+                    pageActivationContext);
 
             if (parameters != null)
                 return parameters;
@@ -336,10 +337,11 @@
 
         // OK, maybe its all page activation context for the root Index page.
 
-        return checkIfPage("", extendedName);
+        return checkIfPage(request, "", extendedName);
     }
 
-    private PageRenderRequestParameters checkIfPage(String pageName, String 
pageActivationContext)
+    private PageRenderRequestParameters checkIfPage(Request request, String 
pageName,
+            String pageActivationContext)
     {
         if (!componentClassResolver.isPageName(pageName))
             return null;
@@ -348,7 +350,9 @@
 
         String canonicalized = 
componentClassResolver.canonicalizePageName(pageName);
 
-        return new PageRenderRequestParameters(canonicalized, 
activationContext);
+        boolean loopback = request.getParameter(InternalConstants.LOOPBACK) != 
null;
+
+        return new PageRenderRequestParameters(canonicalized, 
activationContext, loopback);
     }
 
     public void appendContext(boolean seperatorRequired, EventContext context, 
StringBuilder builder)

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderRequestHandlerImpl.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderRequestHandlerImpl.java?rev=896563&r1=896562&r2=896563&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderRequestHandlerImpl.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderRequestHandlerImpl.java
 Wed Jan  6 17:37:55 2010
@@ -39,17 +39,13 @@
 
     private final PageResponseRenderer pageResponseRenderer;
 
-    private final Request request;
-
     public PageRenderRequestHandlerImpl(RequestPageCache cache, @Traditional
     @Primary
-    ComponentEventResultProcessor resultProcessor, PageResponseRenderer 
pageResponseRenderer,
-            Request request)
+    ComponentEventResultProcessor resultProcessor, PageResponseRenderer 
pageResponseRenderer)
     {
         this.cache = cache;
         this.resultProcessor = resultProcessor;
         this.pageResponseRenderer = pageResponseRenderer;
-        this.request = request;
     }
 
     public void handle(PageRenderRequestParameters parameters) throws 
IOException
@@ -67,7 +63,7 @@
         if (callback.isAborted())
             return;
 
-        if (request.getParameter(InternalConstants.LOOPBACK) == null)
+        if (!parameters.isLoopback())
             page.pageReset();
 
         pageResponseRenderer.renderPageResponse(page);

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/PageRenderRequestParameters.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/PageRenderRequestParameters.java?rev=896563&r1=896562&r2=896563&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/PageRenderRequestParameters.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/PageRenderRequestParameters.java
 Wed Jan  6 17:37:55 2010
@@ -30,17 +30,28 @@
 
     private final EventContext activationContext;
 
+    private final boolean loopback;
+
+    /** @deprecated Use {...@link #PageRenderRequestParameters(String, 
EventContext, boolean)  */
     public PageRenderRequestParameters(String logicalPageName, EventContext 
activationContext)
     {
+        this(logicalPageName, activationContext, false);
+    }
+
+    public PageRenderRequestParameters(String logicalPageName, EventContext 
activationContext,
+            boolean loopback)
+    {
         Defense.notNull(logicalPageName, "logicalPageName");
         Defense.notNull(activationContext, "activationContext");
 
         this.logicalPageName = logicalPageName;
         this.activationContext = activationContext;
+        this.loopback = loopback;
     }
 
     /**
-     * Returns a {...@linkplain 
ComponentClassResolver#canonicalizePageName(String) canonicalized} version of 
the page name.
+     * Returns a {...@linkplain 
ComponentClassResolver#canonicalizePageName(String) canonicalized}
+     * version of the page name.
      */
     public String getLogicalPageName()
     {
@@ -63,10 +74,20 @@
 
         PageRenderRequestParameters other = (PageRenderRequestParameters) obj;
 
-        return logicalPageName.equals(other.logicalPageName)
+        return loopback == other.loopback && 
logicalPageName.equals(other.logicalPageName)
                 && TapestryInternalUtils.isEqual(activationContext, 
other.activationContext);
     }
 
+    /**
+     * Is this request a loopback (a request for the same page that rendered 
it in the first place)?
+     * 
+     * @since 5.2.0
+     */
+    public boolean isLoopback()
+    {
+        return loopback;
+    }
+
     @Override
     public String toString()
     {

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageRenderDispatcherTest.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageRenderDispatcherTest.java?rev=896563&r1=896562&r2=896563&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageRenderDispatcherTest.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageRenderDispatcherTest.java
 Wed Jan  6 17:37:55 2010
@@ -282,8 +282,7 @@
     private ComponentRequestHandler wrap(RequestPageCache cache,
             ComponentEventResultProcessor processor, PageResponseRenderer 
renderer, Request request)
     {
-        PageRenderRequestHandler prh = new PageRenderRequestHandlerImpl(cache, 
processor, renderer,
-                request);
+        PageRenderRequestHandler prh = new PageRenderRequestHandlerImpl(cache, 
processor, renderer);
 
         return new ComponentRequestHandlerTerminator(null, prh);
     }

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageRenderRequestHandlerImplTest.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageRenderRequestHandlerImplTest.java?rev=896563&r1=896562&r2=896563&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageRenderRequestHandlerImplTest.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageRenderRequestHandlerImplTest.java
 Wed Jan  6 17:37:55 2010
@@ -17,14 +17,12 @@
 import org.apache.tapestry5.ComponentEventCallback;
 import org.apache.tapestry5.EventConstants;
 import org.apache.tapestry5.EventContext;
-import org.apache.tapestry5.internal.InternalConstants;
 import org.apache.tapestry5.internal.structure.ComponentPageElement;
 import org.apache.tapestry5.internal.structure.Page;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
 import org.apache.tapestry5.services.ComponentEventResultProcessor;
 import org.apache.tapestry5.services.PageRenderRequestHandler;
 import org.apache.tapestry5.services.PageRenderRequestParameters;
-import org.apache.tapestry5.services.Request;
 import org.easymock.EasyMock;
 import org.testng.annotations.Test;
 
@@ -34,7 +32,6 @@
     public void loopback_request() throws Exception
     {
         RequestPageCache cache = mockRequestPageCache();
-        Request request = mockRequest();
         ComponentEventResultProcessor processor = 
mockComponentEventResultProcessor();
         PageResponseRenderer renderer = mockPageResponseRenderer();
         Page page = mockPage();
@@ -50,8 +47,6 @@
                         .same(context), 
EasyMock.isA(ComponentEventCallback.class))).andReturn(
                 false);
 
-        train_getParameter(request, InternalConstants.LOOPBACK, "T");
-
         // Skips the pageReset()
 
         renderer.renderPageResponse(page);
@@ -59,9 +54,10 @@
         replay();
 
         PageRenderRequestHandler handler = new 
PageRenderRequestHandlerImpl(cache, processor,
-                renderer, request);
+                renderer);
 
-        PageRenderRequestParameters parameters = new 
PageRenderRequestParameters("foo/Bar", context);
+        PageRenderRequestParameters parameters = new 
PageRenderRequestParameters("foo/Bar",
+                context, true);
 
         handler.handle(parameters);
 


Reply via email to