You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2007/06/25 03:19:13 UTC
svn commit: r550310 - in /tapestry/tapestry5/trunk/tapestry-core/src:
main/java/org/apache/tapestry/
main/java/org/apache/tapestry/corelib/components/
main/java/org/apache/tapestry/internal/services/
main/java/org/apache/tapestry/internal/structure/ ma...
Author: hlship
Date: Sun Jun 24 18:19:04 2007
New Revision: 550310
URL: http://svn.apache.org/viewvc?view=rev&rev=550310
Log:
TAPESTRY-1457: No way for PageLink to distinguish between an explicitly empty page activate context and normal delegation to the target page's passivate event
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/ComponentResourcesCommon.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/components/PageLink.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ClassResultProcessor.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentActionRequestHandlerImpl.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentInstanceResultProcessor.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/LinkFactory.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/LinkFactoryImpl.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/LinkFactoryListener.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/StringResultProcessor.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/structure/ComponentPageElementImpl.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/structure/InternalComponentResourcesImpl.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/structure/Page.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/structure/PageImpl.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/test/InternalBaseTestCase.java
tapestry/tapestry5/trunk/tapestry-core/src/test/app1/WEB-INF/Target.html
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/IntegrationTests.java
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app1/pages/ReturnTypes.java
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/LinkFactoryImplTest.java
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/ComponentResourcesCommon.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/ComponentResourcesCommon.java?view=diff&rev=550310&r1=550309&r2=550310
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/ComponentResourcesCommon.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/ComponentResourcesCommon.java Sun Jun 24 18:19:04 2007
@@ -62,11 +62,14 @@
*
* @param pageName
* the logical name of the page to link to
+ * @param override
+ * if true, the context is used even if empty (normally, the target page is allowed
+ * to passivate, providing a context, when the provided context is empty)
* @param context
* the activation context for the page. If omitted, the activation context is
* obtained from the target paget
*/
- Link createPageLink(String pageName, Object... context);
+ Link createPageLink(String pageName, boolean override, Object... context);
/**
* Returns a string consisting of the fully qualified class name of the containing page, and the
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/components/PageLink.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/components/PageLink.java?view=diff&rev=550310&r1=550309&r2=550310
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/components/PageLink.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/components/PageLink.java Sun Jun 24 18:19:04 2007
@@ -67,7 +67,10 @@
Object[] activationContext = _context != null ? _context.toArray() : _emptyContext;
- Link link = _resources.createPageLink(_page, activationContext);
+ Link link = _resources.createPageLink(
+ _page,
+ _resources.isBound("context"),
+ activationContext);
writer.element("a", "href", link, "id", _clientId);
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ClassResultProcessor.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ClassResultProcessor.java?view=diff&rev=550310&r1=550309&r2=550310
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ClassResultProcessor.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ClassResultProcessor.java Sun Jun 24 18:19:04 2007
@@ -49,7 +49,7 @@
String className = value.getName();
String pageName = _resolver.resolvePageClassNameToPageName(className);
Page page = _requestPageCache.get(pageName);
- Link link = _linkFactory.createPageLink(page);
+ Link link = _linkFactory.createPageLink(page, false);
return new LinkActionResponseGenerator(link);
}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentActionRequestHandlerImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentActionRequestHandlerImpl.java?view=diff&rev=550310&r1=550309&r2=550310
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentActionRequestHandlerImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentActionRequestHandlerImpl.java Sun Jun 24 18:19:04 2007
@@ -84,7 +84,7 @@
if (result == null)
{
- Link link = _linkFactory.createPageLink(page);
+ Link link = _linkFactory.createPageLink(page, false);
result = new LinkActionResponseGenerator(link);
}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentInstanceResultProcessor.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentInstanceResultProcessor.java?view=diff&rev=550310&r1=550309&r2=550310
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentInstanceResultProcessor.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentInstanceResultProcessor.java Sun Jun 24 18:19:04 2007
@@ -54,7 +54,7 @@
Page page = _requestPageCache.get(resources.getPageName());
- Link link = _linkFactory.createPageLink(page);
+ Link link = _linkFactory.createPageLink(page, false);
return new LinkActionResponseGenerator(link);
}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/LinkFactory.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/LinkFactory.java?view=diff&rev=550310&r1=550309&r2=550310
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/LinkFactory.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/LinkFactory.java Sun Jun 24 18:19:04 2007
@@ -47,26 +47,41 @@
* Creates a render link for the page. If an activation context is supplied then that context is
* built into the URI. If no activation context is supplied, then the activation context is
* obtained from the page itself, by triggering a passivate event on its root component.
+ * <p>
+ * When the activationContext is an empty array, the targetted page is checked to see if it can
+ * provide an activation context. This is accomplished by triggering a "passivate" event on the
+ * targetted page. If the override parameter is true, this will not occur (even when the
+ * activation context is empty).
*
* @param page
* the page to which a link should be created
+ * @param override
+ * if true, then the provided activation context is always used even if empty
* @param activationContext
* the activation context for the page
* @return
*/
- Link createPageLink(Page page, Object... activationContext);
+ Link createPageLink(Page page, boolean override, Object... activationContext);
/**
- * As with {@link #createPageLink(Page, Object[])}, but the page is specified by logical name,
- * rather than as an instance.
+ * As with {@link #createPageLink(Page, boolean, Object[])}, but the page is specified by
+ * logical name, rather than as an instance.
*
* @param page
* the logical name of the page to generate a link to
+ * @param override
+ * if true, then the provided activation context is always used even if empty
* @param context
* activation context for the page
* @return
*/
- Link createPageLink(String page, Object... context);
+ Link createPageLink(String page, boolean override, Object... context);
+ /**
+ * Adds a listener, to be notified any time an action or render link is created; this allows the
+ * listener to modify the link (by adding additional query parameters to the link).
+ *
+ * @param listener
+ */
void addListener(LinkFactoryListener listener);
}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/LinkFactoryImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/LinkFactoryImpl.java?view=diff&rev=550310&r1=550309&r2=550310
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/LinkFactoryImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/LinkFactoryImpl.java Sun Jun 24 18:19:04 2007
@@ -164,13 +164,15 @@
}
- public Link createPageLink(final Page page, Object... activationContext)
+ public Link createPageLink(final Page page, boolean override, Object... activationContext)
{
notNull(page, "page");
String logicalPageName = page.getLogicalName();
- String[] context = activationContext.length != 0 ? toContextStrings(activationContext)
+ // When override is true, we use the activation context even if empty.
+
+ String[] context = (override || activationContext.length != 0) ? toContextStrings(activationContext)
: collectActivationContextForPage(page);
PageLinkTarget target = new PageLinkTarget(logicalPageName);
@@ -226,11 +228,11 @@
return result;
}
- public Link createPageLink(String pageName, Object... context)
+ public Link createPageLink(String pageName, boolean override, Object... context)
{
// This verifies that the page name is valid.
Page page = _pageCache.get(pageName);
- return createPageLink(page, context);
+ return createPageLink(page, override, context);
}
}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/LinkFactoryListener.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/LinkFactoryListener.java?view=diff&rev=550310&r1=550309&r2=550310
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/LinkFactoryListener.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/LinkFactoryListener.java Sun Jun 24 18:19:04 2007
@@ -1,4 +1,4 @@
-// Copyright 2006 The Apache Software Foundation
+// Copyright 2006, 2007 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -17,7 +17,6 @@
import org.apache.tapestry.Link;
/** Listener interface for objects that need to be notified about newly created links. */
-
public interface LinkFactoryListener
{
/**
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/StringResultProcessor.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/StringResultProcessor.java?view=diff&rev=550310&r1=550309&r2=550310
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/StringResultProcessor.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/StringResultProcessor.java Sun Jun 24 18:19:04 2007
@@ -43,7 +43,7 @@
{
Page page = _requestPageCache.get(value);
- Link link = _linkFactory.createPageLink(page);
+ Link link = _linkFactory.createPageLink(page, false);
return new LinkActionResponseGenerator(link);
}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/structure/ComponentPageElementImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/structure/ComponentPageElementImpl.java?view=diff&rev=550310&r1=550309&r2=550310
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/structure/ComponentPageElementImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/structure/ComponentPageElementImpl.java Sun Jun 24 18:19:04 2007
@@ -785,9 +785,9 @@
return _page.createActionLink(this, action, forForm, context);
}
- public Link createPageLink(String pageName, Object... context)
+ public Link createPageLink(String pageName, boolean override, Object... context)
{
- return _page.createPageLink(pageName, context);
+ return _page.createPageLink(pageName, override, context);
}
public void enqueueBeforeRenderBody(RenderQueue queue)
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/structure/InternalComponentResourcesImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/structure/InternalComponentResourcesImpl.java?view=diff&rev=550310&r1=550309&r2=550310
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/structure/InternalComponentResourcesImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/structure/InternalComponentResourcesImpl.java Sun Jun 24 18:19:04 2007
@@ -117,9 +117,9 @@
return _element.createActionLink(action, forForm, context);
}
- public Link createPageLink(String pageName, Object... context)
+ public Link createPageLink(String pageName, boolean override, Object... context)
{
- return _element.createPageLink(pageName, context);
+ return _element.createPageLink(pageName, override, context);
}
public String getCompleteId()
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/structure/Page.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/structure/Page.java?view=diff&rev=550310&r1=550309&r2=550310
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/structure/Page.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/structure/Page.java Sun Jun 24 18:19:04 2007
@@ -129,11 +129,13 @@
*
* @param pageName
* the logical name of the page
- * @param contxt
+ * @param override
+ * if true, the provided context is used even if empty
+ * @param context
* optional activation context for the page (if not provided, it is generated from
* the page itself)
*/
- Link createPageLink(String pageName, Object... context);
+ Link createPageLink(String pageName, boolean override, Object... context);
/**
* Posts a change to a persistent field.
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/structure/PageImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/structure/PageImpl.java?view=diff&rev=550310&r1=550309&r2=550310
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/structure/PageImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/structure/PageImpl.java Sun Jun 24 18:19:04 2007
@@ -158,9 +158,9 @@
return _linkFactory.createActionLink(element, action, forForm, context);
}
- public Link createPageLink(String pageName, Object... context)
+ public Link createPageLink(String pageName, boolean override, Object... context)
{
- return _linkFactory.createPageLink(pageName, context);
+ return _linkFactory.createPageLink(pageName, override, context);
}
public void persistFieldChange(ComponentResources resources, String fieldName, Object newValue)
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/test/InternalBaseTestCase.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/test/InternalBaseTestCase.java?view=diff&rev=550310&r1=550309&r2=550310
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/test/InternalBaseTestCase.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/test/InternalBaseTestCase.java Sun Jun 24 18:19:04 2007
@@ -482,7 +482,7 @@
protected final void train_createPageLink(LinkFactory factory, Page page, Link link)
{
- expect(factory.createPageLink(page)).andReturn(link);
+ expect(factory.createPageLink(page, false)).andReturn(link);
}
protected final void train_isLoaded(InternalComponentResources resources, boolean isLoaded)
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/app1/WEB-INF/Target.html
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/app1/WEB-INF/Target.html?view=diff&rev=550310&r1=550309&r2=550310
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/app1/WEB-INF/Target.html (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/app1/WEB-INF/Target.html Sun Jun 24 18:19:04 2007
@@ -21,6 +21,13 @@
<h2>Navigation</h2>
- [<a t:type="pagelink" page="pagelinkcontext">PageLink Context Demo</a>]
+ <p>[<a t:type="pagelink" page="pagelinkcontext">PageLink Context Demo</a>]</p>
+
+ <p>
+ [<t:pagelink t:id="nocontext" page="target" context="null">Target base, no context</t:pagelink>]
+ </p>
+
+
+
</html>
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/IntegrationTests.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/IntegrationTests.java?view=diff&rev=550310&r1=550309&r2=550310
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/IntegrationTests.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/IntegrationTests.java Sun Jun 24 18:19:04 2007
@@ -764,6 +764,22 @@
assertTextSeries("//li[%d]", 1, "betty", "wilma");
assertTextSeries("//ul[2]/li[%d]", 1, "fred", "barney", "clark kent");
+ }
+
+ @Test
+ public void page_link_with_explicit_empty_context()
+ {
+ open(BASE_URL);
+
+ clickAndWait("link=Kicker");
+
+ clickAndWait("actionlink");
+
+ assertTextSeries("//li[%d]", 1, "betty", "wilma");
+
+ clickAndWait("nocontext");
+
+ assertTextPresent("No activation context.");
}
@Test
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app1/pages/ReturnTypes.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app1/pages/ReturnTypes.java?view=diff&rev=550310&r1=550309&r2=550310
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app1/pages/ReturnTypes.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/integration/app1/pages/ReturnTypes.java Sun Jun 24 18:19:04 2007
@@ -55,7 +55,7 @@
Object onActionFromLinkReturnValue()
{
- return _resources.createPageLink("start");
+ return _resources.createPageLink("start", false);
}
Object onActionFromStreamReturnValue()
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/LinkFactoryImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/LinkFactoryImplTest.java?view=diff&rev=550310&r1=550309&r2=550310
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/LinkFactoryImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/LinkFactoryImplTest.java Sun Jun 24 18:19:04 2007
@@ -154,7 +154,7 @@
_typeCoercer);
factory.addListener(listener);
- Link link = factory.createPageLink(page);
+ Link link = factory.createPageLink(page, false);
assertEquals(link.toRedirectURI(), ENCODED);
@@ -199,7 +199,51 @@
_typeCoercer);
factory.addListener(listener);
- Link link = factory.createPageLink(page, "biff", "bazz");
+ Link link = factory.createPageLink(page, false, "biff", "bazz");
+
+ assertEquals(link.toRedirectURI(), ENCODED);
+
+ // Make sure the link was passed to the LinkFactoryListener
+
+ assertSame(link, holder.get());
+
+ verify();
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void page_link_using_empty_activation_context_and_override()
+ {
+ Request request = mockRequest();
+ Response response = mockResponse();
+ ComponentClassResolver resolver = mockComponentClassResolver();
+ Page page = mockPage();
+ LinkFactoryListener listener = mockLinkFactoryListener();
+ ComponentInvocationMap map = mockComponentInvocationMap();
+
+ train_getLogicalName(page, PAGE_LOGICAL_NAME);
+ train_getContextPath(request, "/barney");
+
+ Holder<Link> holder = new Holder<Link>();
+
+ IAnswer<Void> createdPageLinkAnswer = newAnswerForCreatedLink(holder);
+
+ listener.createdPageLink(isA(Link.class));
+ getMocksControl().andAnswer(createdPageLinkAnswer);
+
+ train_encodeRedirectURL(response, "/barney/" + PAGE_LOGICAL_NAME.toLowerCase(), ENCODED);
+
+ // This needs to be refactored a bit to be more testable.
+
+ map.store(isA(Link.class), isA(ComponentInvocation.class));
+
+ replay();
+
+ LinkFactory factory = new LinkFactoryImpl(request, response, resolver, map, null,
+ _typeCoercer);
+ factory.addListener(listener);
+
+ Link link = factory.createPageLink(page, true);
assertEquals(link.toRedirectURI(), ENCODED);
@@ -249,7 +293,7 @@
_typeCoercer);
factory.addListener(listener);
- Link link = factory.createPageLink(PAGE_LOGICAL_NAME);
+ Link link = factory.createPageLink(PAGE_LOGICAL_NAME, false);
assertEquals(link.toRedirectURI(), ENCODED);