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