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