You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2010/01/06 18:38:03 UTC

svn commit: r896563 - in /tapestry/tapestry5/trunk/tapestry-core/src: main/java/org/apache/tapestry5/internal/services/ main/java/org/apache/tapestry5/services/ test/java/org/apache/tapestry5/internal/services/

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