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