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:39:06 UTC
svn commit: r896566 - in /tapestry/tapestry5/trunk/tapestry-core/src:
main/java/org/apache/tapestry5/internal/services/
test/java/org/apache/tapestry5/internal/services/
Author: hlship
Date: Wed Jan 6 17:38:39 2010
New Revision: 896566
URL: http://svn.apache.org/viewvc?rev=896566&view=rev
Log:
Let the LinkSource service decide whether a page render link is a loopback or not
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/LinkSourceImpl.java
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventDispatcherTest.java
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImplTest.java
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LinkSourceImplTest.java
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageRenderDispatcherTest.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=896566&r1=896565&r2=896566&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:38:39 2010
@@ -47,8 +47,6 @@
private final boolean encodeLocaleIntoPath;
- private final RequestGlobals requestGlobals;
-
private static final int BUFFER_SIZE = 100;
private static final char SLASH = '/';
@@ -86,7 +84,7 @@
RequestPathOptimizer optimizer, PersistentLocale persistentLocale,
@Symbol(SymbolConstants.ENCODE_LOCALE_INTO_PATH)
- boolean encodeLocaleIntoPath, RequestGlobals requestGlobals)
+ boolean encodeLocaleIntoPath)
{
this.componentClassResolver = componentClassResolver;
this.contextPathEncoder = contextPathEncoder;
@@ -97,7 +95,6 @@
this.optimizer = optimizer;
this.persistentLocale = persistentLocale;
this.encodeLocaleIntoPath = encodeLocaleIntoPath;
- this.requestGlobals = requestGlobals;
}
public Link createPageRenderLink(PageRenderRequestParameters parameters)
@@ -127,12 +124,7 @@
Link link = new LinkImpl(builder.toString(), baseURL == null, false, response, optimizer);
- String requestPageName = requestGlobals.getActivePageName();
-
- // TODO: It should only be necessary to encode the LOOPBACK for pages that actually have
- // reset listener.
-
- if (activePageName.equals(requestPageName))
+ if (parameters.isLoopback())
link.addParameter(InternalConstants.LOOPBACK, "t");
return link;
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LinkSourceImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LinkSourceImpl.java?rev=896566&r1=896565&r2=896566&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LinkSourceImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LinkSourceImpl.java Wed Jan 6 17:38:39 2010
@@ -37,21 +37,23 @@
private final ComponentClassResolver resolver;
+ private final RequestGlobals requestGlobals;
+
public LinkSourceImpl(PageRenderQueue pageRenderQueue,
- PageActivationContextCollector contextCollector,
- TypeCoercer typeCoercer,
- ComponentClassResolver resolver,
- ComponentEventLinkEncoder linkEncoder)
+ PageActivationContextCollector contextCollector, TypeCoercer typeCoercer,
+ ComponentClassResolver resolver, ComponentEventLinkEncoder linkEncoder,
+ RequestGlobals requestGlobals)
{
this.pageRenderQueue = pageRenderQueue;
this.contextCollector = contextCollector;
this.typeCoercer = typeCoercer;
this.resolver = resolver;
this.linkEncoder = linkEncoder;
+ this.requestGlobals = requestGlobals;
}
- public Link createComponentEventLink(Page page, String nestedId, String eventType, boolean forForm,
- Object... eventContext)
+ public Link createComponentEventLink(Page page, String nestedId, String eventType,
+ boolean forForm, Object... eventContext)
{
Defense.notNull(page, "page");
Defense.notBlank(eventType, "action");
@@ -64,17 +66,13 @@
String activePageName = activePage.getName();
- Object[] pageActivationContext = contextCollector.collectPageActivationContext(activePageName);
-
- ComponentEventRequestParameters parameters
- = new ComponentEventRequestParameters(
- activePageName,
- page.getName(),
- toBlank(nestedId),
- eventType,
- new ArrayEventContext(typeCoercer, pageActivationContext),
- new ArrayEventContext(typeCoercer, eventContext));
+ Object[] pageActivationContext = contextCollector
+ .collectPageActivationContext(activePageName);
+ ComponentEventRequestParameters parameters = new ComponentEventRequestParameters(
+ activePageName, page.getName(), toBlank(nestedId), eventType,
+ new ArrayEventContext(typeCoercer, pageActivationContext), new ArrayEventContext(
+ typeCoercer, eventContext));
Link link = linkEncoder.createComponentEventLink(parameters, forForm);
@@ -89,20 +87,22 @@
return input == null ? "" : input;
}
- public Link createPageRenderLink(String pageName, boolean override, Object... pageActivationContext)
+ public Link createPageRenderLink(String pageName, boolean override,
+ Object... pageActivationContext)
{
- // Resolve the page name to its canonical format (the best version for URLs). This also validates
+ // Resolve the page name to its canonical format (the best version for URLs). This also
+ // validates
// the page name.
String canonical = resolver.canonicalizePageName(pageName);
- Object[] context = (override || pageActivationContext.length != 0)
- ? pageActivationContext
- : contextCollector.collectPageActivationContext(canonical);
-
- PageRenderRequestParameters parameters =
- new PageRenderRequestParameters(canonical,
- new ArrayEventContext(typeCoercer, context));
+ Object[] context = (override || pageActivationContext.length != 0) ? pageActivationContext
+ : contextCollector.collectPageActivationContext(canonical);
+
+ boolean loopback = canonical.equals(requestGlobals.getActivePageName());
+
+ PageRenderRequestParameters parameters = new PageRenderRequestParameters(canonical,
+ new ArrayEventContext(typeCoercer, context), loopback);
Link link = linkEncoder.createPageRenderLink(parameters);
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventDispatcherTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventDispatcherTest.java?rev=896566&r1=896565&r2=896566&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventDispatcherTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventDispatcherTest.java Wed Jan 6 17:38:39 2010
@@ -50,7 +50,7 @@
Dispatcher dispatcher = new ComponentEventDispatcher(null,
new ComponentEventLinkEncoderImpl(null, contextPathEncoder, null, request,
- response, null, null, null, true, null));
+ response, null, null, null, true));
assertFalse(dispatcher.dispatch(request, response));
@@ -160,7 +160,7 @@
Dispatcher dispatcher = new ComponentEventDispatcher(handler,
new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls, request,
- response, null, null, null, true, null));
+ response, null, null, null, true));
assertTrue(dispatcher.dispatch(request, response));
@@ -200,7 +200,7 @@
Dispatcher dispatcher = new ComponentEventDispatcher(handler,
new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls, request,
- response, null, null, null, true, null));
+ response, null, null, null, true));
assertTrue(dispatcher.dispatch(request, response));
@@ -224,7 +224,7 @@
Dispatcher dispatcher = new ComponentEventDispatcher(null,
new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls, request,
- response, null, null, null, true, null));
+ response, null, null, null, true));
assertFalse(dispatcher.dispatch(request, response));
@@ -262,7 +262,7 @@
Dispatcher dispatcher = new ComponentEventDispatcher(handler,
new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, localizationSetter,
- request, response, null, null, null, true, null));
+ request, response, null, null, null, true));
assertTrue(dispatcher.dispatch(request, response));
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImplTest.java?rev=896566&r1=896565&r2=896566&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImplTest.java Wed Jan 6 17:38:39 2010
@@ -55,8 +55,7 @@
replay();
ComponentEventLinkEncoder encoder = new ComponentEventLinkEncoderImpl(null,
- contextPathEncoder, null, request, response, manager, optimizer, null, false,
- globals);
+ contextPathEncoder, null, request, response, manager, optimizer, null, false);
PageRenderRequestParameters parameters = new PageRenderRequestParameters("MyPage",
new EmptyEventContext());
@@ -95,8 +94,7 @@
replay();
ComponentEventLinkEncoder encoder = new ComponentEventLinkEncoderImpl(null,
- contextPathEncoder, null, request, response, manager, optimizer, null, false,
- globals);
+ contextPathEncoder, null, request, response, manager, optimizer, null, false);
PageRenderRequestParameters parameters = new PageRenderRequestParameters("admin/Index",
new ArrayEventContext(typeCoercer, "abc"));
@@ -126,8 +124,7 @@
replay();
ComponentEventLinkEncoder encoder = new ComponentEventLinkEncoderImpl(null,
- contextPathEncoder, null, request, response, manager, optimizer, null, false,
- globals);
+ contextPathEncoder, null, request, response, manager, optimizer, null, false);
PageRenderRequestParameters parameters = new PageRenderRequestParameters("Index",
new EmptyEventContext());
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LinkSourceImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LinkSourceImplTest.java?rev=896566&r1=896565&r2=896566&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LinkSourceImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LinkSourceImplTest.java Wed Jan 6 17:38:39 2010
@@ -101,7 +101,7 @@
LinkSource source = new LinkSourceImpl(null,
collector, typeCoercer, resolver,
- linkEncoder);
+ linkEncoder, null);
Link actual = source.createPageRenderLink(pageName, false);
@@ -140,7 +140,7 @@
LinkSource source = new LinkSourceImpl(null,
collector, typeCoercer, resolver,
- linkEncoder);
+ linkEncoder, null);
source.getLinkCreationHub().addListener(listener);
@@ -215,7 +215,7 @@
LinkSource source = new LinkSourceImpl(queue,
collector, typeCoercer, null,
- linkEncoder);
+ linkEncoder, null);
assertSame(source.createComponentEventLink(primaryPage, "gnip.gnop", "myevent", true, 3, 5, 9), link);
@@ -261,7 +261,7 @@
LinkSource source = new LinkSourceImpl(queue,
collector, typeCoercer, null,
- linkEncoder);
+ linkEncoder, null);
source.getLinkCreationHub().addListener(listener);
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=896566&r1=896565&r2=896566&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:38:39 2010
@@ -55,7 +55,7 @@
replay();
Dispatcher d = new PageRenderDispatcher(null, new ComponentEventLinkEncoderImpl(resolver,
- contextPathEncoder, ls, request, response, null, null, null, true, null));
+ contextPathEncoder, ls, request, response, null, null, null, true));
assertFalse(d.dispatch(request, response));
@@ -80,7 +80,7 @@
replay();
Dispatcher d = new PageRenderDispatcher(null, new ComponentEventLinkEncoderImpl(resolver,
- contextPathEncoder, ls, request, response, null, null, null, true, null));
+ contextPathEncoder, ls, request, response, null, null, null, true));
assertFalse(d.dispatch(request, response));
@@ -104,7 +104,7 @@
replay();
Dispatcher d = new PageRenderDispatcher(null, new ComponentEventLinkEncoderImpl(resolver,
- contextPathEncoder, ls, request, response, null, null, null, true, null));
+ contextPathEncoder, ls, request, response, null, null, null, true));
assertFalse(d.dispatch(request, response));
@@ -161,7 +161,7 @@
Dispatcher d = new PageRenderDispatcher(wrap(cache, processor, renderer, request),
new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls, request,
- response, null, null, null, true, null));
+ response, null, null, null, true));
assertTrue(d.dispatch(request, response));
@@ -214,7 +214,7 @@
Dispatcher d = new PageRenderDispatcher(wrap(cache, processor, renderer, request),
new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls, request,
- response, null, null, null, true, null));
+ response, null, null, null, true));
assertTrue(d.dispatch(request, response));
@@ -272,7 +272,7 @@
Dispatcher d = new PageRenderDispatcher(wrap(cache, processor, renderer, request),
new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls, request,
- response, null, null, null, true, null));
+ response, null, null, null, true));
assertTrue(d.dispatch(request, response));