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 2009/01/11 22:44:53 UTC

svn commit: r733522 [2/2] - in /tapestry/tapestry5/trunk: src/site/apt/guide/ tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/ tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ tapestry-core/src/main/java/org/apach...

Copied: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LinkSourceImplTest.java (from r728733, tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LinkFactoryImplTest.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LinkSourceImplTest.java?p2=tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LinkSourceImplTest.java&p1=tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LinkFactoryImplTest.java&r1=728733&r2=733522&rev=733522&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LinkFactoryImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LinkSourceImplTest.java Sun Jan 11 13:44:52 2009
@@ -1,4 +1,4 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
+// Copyright 2006, 2007, 2008, 2009 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.
@@ -21,14 +21,13 @@
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
 import org.apache.tapestry5.services.ContextPathEncoder;
 import org.apache.tapestry5.services.LinkCreationListener;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.Response;
 import org.easymock.Capture;
 import static org.easymock.EasyMock.capture;
+import static org.easymock.EasyMock.eq;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
-public class LinkFactoryImplTest extends InternalBaseTestCase
+public class LinkSourceImplTest extends InternalBaseTestCase
 {
     private ContextPathEncoder contextPathEncoder;
 
@@ -41,44 +40,44 @@
     @Test
     public void create_page_render_link()
     {
-        testPageLinkCreation("order/Edit", "/context/order/edit", false);
+        testPageLinkCreation("order/Edit", "order/edit", false);
     }
 
     @Test
     public void create_page_render_link_for_index_page()
     {
-        testPageLinkCreation("order/Index", "/context/order", false);
+        testPageLinkCreation("order/Index", "order", false);
     }
 
     @Test
     public void create_page_render_link_for_index_page_with_context()
     {
-        testPageLinkCreation("order/Index", "/context/order/99", false, 99);
+        testPageLinkCreation("order/Index", "order/99", false, 99);
     }
 
     @Test
     public void create_page_render_link_to_root_index_page()
     {
-        testPageLinkCreation("Index", "/context", false);
+        testPageLinkCreation("Index", "", false);
     }
 
     @Test
-    public void creat_page_render_link_to_root_index_page_with_context()
+    public void create_page_render_link_to_root_index_page_with_context()
     {
-        testPageLinkCreation("Index", "/context/202", false, 202);
+        testPageLinkCreation("Index", "202", false, 202);
     }
 
 
     @Test
     public void create_page_render_link_with_override_event_context()
     {
-        testPageLinkCreation("order/Edit", "/context/order/edit/1/2", true, 1, 2);
+        testPageLinkCreation("order/Edit", "order/edit/1/2", true, 1, 2);
     }
 
     @Test
     public void create_page_render_link_with_event_context_from_passivate()
     {
-        testPageLinkCreation("order/Edit", "/context/order/edit/from/passivate", false, "from", "passivate");
+        testPageLinkCreation("order/Edit", "order/edit/from/passivate", false, "from", "passivate");
     }
 
     @Test
@@ -86,17 +85,11 @@
     {
         String logicalName = "order/Edit";
 
-        String expectedURL = "/base/context/order/edit/3";
-        String encodedURL = "encoded:" + expectedURL;
-
         Page page = mockPage();
         PageActivationContextCollector collector = mockPageActivationContextCollector();
-        RequestSecurityManager securityManager = mockRequestSecurityManager();
-        Request request = mockRequest();
-        Response response = mockResponse();
-        ComponentInvocationMap invocationMap = new NoOpComponentInvocationMap();
-        RequestPathOptimizer optimizer = mockRequestPathOptimizer();
         RequestPageCache pageCache = mockRequestPageCache();
+        LinkFactory factory = mockLinkFactory();
+        Link link = mockLink();
 
         train_get(pageCache, logicalName, page);
 
@@ -104,90 +97,77 @@
 
         train_collectPageActivationContext(collector, page, 3);
 
-        train_getBaseURL(securityManager, page, "/base");
-        train_getContextPath(request, "/context");
-
-        train_encodeURL(response, expectedURL, encodedURL);
+        Capture<ComponentInvocation> holder = train_create(factory, page, link);
 
         replay();
 
 
-        LinkFactory factory = new LinkFactoryImpl(request, response, invocationMap, pageCache, optimizer, null,
-                                                  securityManager, contextPathEncoder, collector);
+        LinkSource source = new LinkSourceImpl(pageCache, null,
+                                               contextPathEncoder, collector, factory);
 
 
-        Link link = factory.createPageRenderLink(logicalName, false);
+        Link actual = source.createPageRenderLink(logicalName, false);
 
         // Make sure the same link is returned.
 
-        assertEquals(link.toURI(), encodedURL);
+        assertEquals(actual, link);
+
+        assertEquals(holder.getValue().buildURI(), "order/edit/3");
 
         verify();
     }
 
-    private void testPageLinkCreation(String logicalName, String expectedURL, boolean overrideContext,
+    private void testPageLinkCreation(String logicalName, String expectedURI, boolean overrideContext,
                                       Object... context)
     {
-        String optimizedURL = "optimized:" + expectedURL;
-        String encodedURL = "encoded:" + expectedURL;
-
         Page page = mockPage();
         PageActivationContextCollector collector = mockPageActivationContextCollector();
-        RequestSecurityManager securityManager = mockRequestSecurityManager();
-        Request request = mockRequest();
-        Response response = mockResponse();
-        ComponentInvocationMap invocationMap = new NoOpComponentInvocationMap();
-        RequestPathOptimizer optimizer = mockRequestPathOptimizer();
-        Capture<Link> linkCapture = new Capture();
         LinkCreationListener listener = mockLinkCreationListener();
+        LinkFactory factory = mockLinkFactory();
+        Capture<ComponentInvocation> holder = new Capture<ComponentInvocation>();
+        Link link = mockLink();
 
         train_getLogicalName(page, logicalName);
 
         if (!overrideContext)
             train_collectPageActivationContext(collector, page, context);
 
-        train_getBaseURL(securityManager, page, null);
-        train_getContextPath(request, "/context");
-
-
-        train_optimizePath(optimizer, expectedURL, optimizedURL);
-        train_encodeURL(response, optimizedURL, encodedURL);
+        expect(factory.create(eq(page), capture(holder))).andReturn(link);
 
-        listener.createdPageRenderLink(capture(linkCapture));
+        listener.createdPageRenderLink(link);
 
         replay();
 
+        LinkSource source = new LinkSourceImpl(null, null,
+                                               contextPathEncoder, collector, factory);
 
-        LinkFactory factory = new LinkFactoryImpl(request, response, invocationMap, null, optimizer, null,
-                                                  securityManager, contextPathEncoder, collector);
-
-        factory.getLinkCreationHub().addListener(listener);
+        source.getLinkCreationHub().addListener(listener);
 
         Object[] passedContext = overrideContext ? context : new Object[0];
 
-        Link link = factory.createPageRenderLink(page, overrideContext, passedContext);
-
-        // Make sure the same link is returned.
+        Link returnedLink = source.createPageRenderLink(page, overrideContext, passedContext);
 
-        assertSame(linkCapture.getValue(), link);
+        assertSame(returnedLink, link);
 
-        assertEquals(link.toURI(), encodedURL);
+        assertEquals(holder.getValue().buildURI(), expectedURI);
 
         verify();
     }
 
+    protected final LinkFactory mockLinkFactory() {return newMock(LinkFactory.class);}
+
     @Test
     public void simple_component_event_link()
     {
 
-        testEventLinkCreation("/context/order/edit.foo.bar?t:ac=a/b", "order/Edit", "foo.bar", EventConstants.ACTION,
+        testEventLinkCreation("order/edit.foo.bar?t:ac=a/b", "order/Edit", "foo.bar", EventConstants.ACTION,
                               false);
     }
 
     @Test
     public void component_event_link_with_context()
     {
-        testEventLinkCreation("/context/order/edit.foo.bar/fred/barney?t:ac=a/b", "order/Edit", "foo.bar",
+        testEventLinkCreation("order/edit.foo.bar/fred/barney?t:ac=a/b", "order/Edit", "foo.bar",
                               EventConstants.ACTION,
                               false, "fred", "barney");
     }
@@ -195,11 +175,11 @@
     @Test
     public void component_event_link_for_form()
     {
-        Link link = testEventLinkCreation("/context/order/edit.foo.bar/fred/barney", "order/Edit", "foo.bar",
-                                          EventConstants.ACTION,
-                                          true, "fred", "barney");
+        testEventLinkCreation("order/edit.foo.bar/fred/barney", "order/Edit", "foo.bar",
+                              EventConstants.ACTION,
+                              true, "fred", "barney");
 
-        assertEquals(link.getParameterValue(InternalConstants.PAGE_CONTEXT_NAME), "a/b");
+        // assertEquals(link.getParameterValue(InternalConstants.PAGE_CONTEXT_NAME), "a/b");
     }
 
     @Test
@@ -207,19 +187,13 @@
     {
         String logicalName = "blocks/AppDisplay";
 
-        String expectedURL = "/base/context/order/view.gnip.gnop:myevent/3/5/9";
-
         Page primaryPage = mockPage();
         Page activePage = mockPage();
         PageRenderQueue queue = mockPageRenderQueue();
         PageActivationContextCollector collector = mockPageActivationContextCollector();
-        RequestSecurityManager securityManager = mockRequestSecurityManager();
-        Request request = mockRequest();
-        Response response = mockResponse();
-        ComponentInvocationMap invocationMap = new NoOpComponentInvocationMap();
-        RequestPathOptimizer optimizer = mockRequestPathOptimizer();
+        LinkFactory factory = mockLinkFactory();
+        Link link = mockLink();
 
-        String encodedURL = "encoded:" + expectedURL;
 
         train_getRenderingPage(queue, activePage);
 
@@ -228,45 +202,32 @@
 
         train_collectPageActivationContext(collector, activePage, "x", "y");
 
-        train_getBaseURL(securityManager, activePage, "/base");
-
-        train_getContextPath(request, "/context");
-
-        train_encodeURL(response, expectedURL, encodedURL);
+        Capture<ComponentInvocation> holder = train_create(factory, activePage, link);
 
+        link.addParameter(InternalConstants.CONTAINER_PAGE_NAME, "blocks/appdisplay");
 
         replay();
 
-        LinkFactory factory = new LinkFactoryImpl(request, response, invocationMap, null, optimizer, queue,
-                                                  securityManager, contextPathEncoder, collector);
+        LinkSource source = new LinkSourceImpl(null, queue,
+                                               contextPathEncoder, collector, factory);
 
-        Link link = factory.createComponentEventLink(primaryPage, "gnip.gnop", "myevent", true, 3, 5, 9);
-
-        assertEquals(link.toURI(), encodedURL);
+        assertSame(source.createComponentEventLink(primaryPage, "gnip.gnop", "myevent", true, 3, 5, 9), link);
 
         verify();
 
-        assertEquals(link.getParameterValue(InternalConstants.CONTAINER_PAGE_NAME), "blocks/appdisplay");
-        assertEquals(link.getParameterValue(InternalConstants.PAGE_CONTEXT_NAME), "x/y");
+        assertEquals(holder.getValue().buildURI(), "order/view.gnip.gnop:myevent/3/5/9");
     }
 
-    private Link testEventLinkCreation(String expectedURL, String logicalName, String nestedId, String eventType,
+    private void testEventLinkCreation(String expectedURI, String logicalName, String nestedId,
+                                       String eventType,
                                        boolean forForm, Object... context)
     {
         Page primaryPage = mockPage();
-        Page activePage = primaryPage;
         PageRenderQueue queue = mockPageRenderQueue();
         PageActivationContextCollector collector = mockPageActivationContextCollector();
-        RequestSecurityManager securityManager = mockRequestSecurityManager();
-        Request request = mockRequest();
-        Response response = mockResponse();
-        ComponentInvocationMap invocationMap = new NoOpComponentInvocationMap();
-        RequestPathOptimizer optimizer = mockRequestPathOptimizer();
-        Capture<Link> linkCapture = new Capture();
         LinkCreationListener listener = mockLinkCreationListener();
-
-        String optimizedURL = "optimized:" + expectedURL;
-        String encodedURL = "encoded:" + expectedURL;
+        LinkFactory factory = mockLinkFactory();
+        Link link = mockLink();
 
         train_getRenderingPage(queue, null);
 
@@ -274,33 +235,33 @@
 
         train_collectPageActivationContext(collector, primaryPage, "a", "b");
 
-        train_getBaseURL(securityManager, activePage, null);
-
-        train_getContextPath(request, "/context");
+        Capture<ComponentInvocation> holder = train_create(factory, primaryPage, link);
 
-        train_optimizePath(optimizer, expectedURL, optimizedURL);
-        train_encodeURL(response, optimizedURL, encodedURL);
-
-        listener.createdComponentEventLink(capture(linkCapture));
+        listener.createdComponentEventLink(link);
 
         replay();
 
-        LinkFactory factory = new LinkFactoryImpl(request, response, invocationMap, null, optimizer, queue,
-                                                  securityManager, contextPathEncoder, collector);
+        LinkSource source = new LinkSourceImpl(null, queue,
+                                               contextPathEncoder, collector, factory);
 
-        factory.getLinkCreationHub().addListener(listener);
+        source.getLinkCreationHub().addListener(listener);
 
-        Link link = factory.createComponentEventLink(primaryPage, nestedId, eventType, forForm, context);
+        Link returnedLink = source.createComponentEventLink(primaryPage, nestedId, eventType, forForm, context);
 
         // Make sure the same link is returned.
 
-        assertSame(linkCapture.getValue(), link);
-
-        assertEquals(link.toURI(), encodedURL);
+        assertSame(returnedLink, link);
 
         verify();
 
-        return link;
+        assertEquals(holder.getValue().buildURI(), expectedURI);
+    }
+
+    protected final Capture<ComponentInvocation> train_create(LinkFactory factory, Page primaryPage, Link link)
+    {
+        Capture<ComponentInvocation> holder = new Capture<ComponentInvocation>();
+        expect(factory.create(eq(primaryPage), capture(holder))).andReturn(link);
+        return holder;
     }
 
     protected final void train_collectPageActivationContext(PageActivationContextCollector collector, Page page,

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LocalizationSetterImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LocalizationSetterImplTest.java?rev=733522&r1=733521&r2=733522&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LocalizationSetterImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LocalizationSetterImplTest.java Sun Jan 11 13:44:52 2009
@@ -1,4 +1,4 @@
-// Copyright 2006 The Apache Software Foundation
+// Copyright 2006, 2009 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.
@@ -14,68 +14,16 @@
 
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.internal.test.InternalBaseTestCase;
 import org.apache.tapestry5.ioc.services.ThreadLocale;
 import org.apache.tapestry5.services.PersistentLocale;
-import org.testng.Assert;
+import org.apache.tapestry5.services.Request;
 import org.testng.annotations.Test;
 
 import java.util.Locale;
 
-public class LocalizationSetterImplTest extends Assert
+public class LocalizationSetterImplTest extends InternalBaseTestCase
 {
-    private PersistentLocale nullPersistentLocale = new PersistentLocale()
-    {
-        public boolean isSet()
-        {
-            return false;
-        }
-
-        public Locale get()
-        {
-            return null;
-        }
-
-        public void set(Locale locale)
-        {
-
-        }
-
-    };
-
-    private PersistentLocale frenchPersistentLocale = new PersistentLocale()
-    {
-        public boolean isSet()
-        {
-            return true;
-        }
-
-        public Locale get()
-        {
-            return Locale.FRENCH;
-        }
-
-        public void set(Locale locale)
-        {
-
-        }
-
-    };
-
-    private static class ThreadLocaleImpl implements ThreadLocale
-    {
-        public Locale _locale;
-
-        public void setLocale(Locale locale)
-        {
-            _locale = locale;
-        }
-
-        public Locale getLocale()
-        {
-            return _locale;
-        }
-
-    }
 
     @Test
     public void locale_split()
@@ -88,16 +36,15 @@
     @Test
     public void to_locale_is_cached()
     {
-        LocalizationSetterImpl filter = new LocalizationSetterImpl(nullPersistentLocale, null,
-                                                                   "en");
+        LocalizationSetterImpl setter = new LocalizationSetterImpl(null, null, null, "en");
 
-        Locale l1 = filter.toLocale("en");
+        Locale l1 = setter.toLocale("en");
 
         assertEquals(l1.toString(), "en");
 
         checkLocale(l1, "en", "", "");
 
-        assertSame(filter.toLocale("en"), l1);
+        assertSame(setter.toLocale("en"), l1);
     }
 
     private void checkLocale(Locale l, String expectedLanguage, String expectedCountry,
@@ -111,45 +58,74 @@
     @Test
     public void to_locale()
     {
-        LocalizationSetterImpl filter = new LocalizationSetterImpl(nullPersistentLocale, null,
-                                                                   "en");
+        LocalizationSetterImpl setter = new LocalizationSetterImpl(null, null, null, "en");
 
-        checkLocale(filter.toLocale("en"), "en", "", "");
-        checkLocale(filter.toLocale("klingon_Gach"), "klingon", "GACH", "");
-        checkLocale(filter.toLocale("klingon_Gach_snuff"), "klingon", "GACH", "snuff");
+        checkLocale(setter.toLocale("en"), "en", "", "");
+        checkLocale(setter.toLocale("klingon_Gach"), "klingon", "GACH", "");
+        checkLocale(setter.toLocale("klingon_Gach_snuff"), "klingon", "GACH", "snuff");
     }
 
     @Test
     public void known_locale()
     {
-        ThreadLocale threadLocale = new ThreadLocaleImpl();
-        threadLocale.setLocale(Locale.FRENCH);
-        LocalizationSetter setter = new LocalizationSetterImpl(nullPersistentLocale, threadLocale,
-                                                               "en,fr");
-        setter.setThreadLocale(Locale.CANADA_FRENCH);
-        assertEquals(threadLocale.getLocale(), Locale.FRENCH);
+        PersistentLocale pl = mockPersistentLocale();
+        ThreadLocale tl = mockThreadLocale();
+        Request request = mockRequest();
+
+        tl.setLocale(Locale.FRENCH);
+        pl.set(Locale.FRENCH);
+
+        replay();
 
+        LocalizationSetterImpl setter = new LocalizationSetterImpl(request, pl, tl, "en,fr");
+
+        assertTrue(setter.setLocaleFromLocaleName("fr"));
+
+        verify();
     }
 
-    @Test
-    public void unknown_locale_uses_default_locale()
+    protected final PersistentLocale mockPersistentLocale()
     {
-        ThreadLocale threadLocale = new ThreadLocaleImpl();
-        threadLocale.setLocale(Locale.FRENCH);
-        LocalizationSetter setter = new LocalizationSetterImpl(nullPersistentLocale, threadLocale,
-                                                               "en,fr");
-        setter.setThreadLocale(Locale.JAPANESE);
-        assertEquals(threadLocale.getLocale(), Locale.ENGLISH);
+        return newMock(PersistentLocale.class);
     }
 
     @Test
-    public void use_persistent_locale()
+    public void unknown_locale_uses_locale_from_request()
     {
-        ThreadLocale threadLocale = new ThreadLocaleImpl();
-        LocalizationSetter setter = new LocalizationSetterImpl(frenchPersistentLocale,
-                                                               threadLocale, "en,fr");
-        setter.setThreadLocale(Locale.ENGLISH);
-        assertEquals(threadLocale.getLocale(), Locale.FRENCH);
+        PersistentLocale pl = mockPersistentLocale();
+        ThreadLocale tl = mockThreadLocale();
+        Request request = mockRequest();
+
+        tl.setLocale(Locale.FRENCH);
+
+        train_getLocale(request, Locale.CANADA_FRENCH);
+
+        replay();
+
+        LocalizationSetterImpl setter = new LocalizationSetterImpl(request, pl, tl, "en,fr");
+
+        assertFalse(setter.setLocaleFromLocaleName("unknown"));
+
+        verify();
     }
 
+    @Test
+    public void unsupported_locale_in_request_uses_default_locale()
+    {
+        PersistentLocale pl = mockPersistentLocale();
+        ThreadLocale tl = mockThreadLocale();
+        Request request = mockRequest();
+
+        tl.setLocale(Locale.ITALIAN);
+
+        train_getLocale(request, Locale.CHINESE);
+
+        replay();
+
+        LocalizationSetterImpl setter = new LocalizationSetterImpl(request, pl, tl, "it,en,fr");
+
+        assertFalse(setter.setLocaleFromLocaleName("unknown"));
+
+        verify();
+    }
 }

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=733522&r1=733521&r2=733522&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 Sun Jan 11 13:44:52 2009
@@ -1,4 +1,4 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
+// Copyright 2006, 2007, 2008, 2009 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.
@@ -46,14 +46,16 @@
         PageRenderRequestHandler handler = new PageRenderRequestHandlerImpl(cache, null, null);
         Request request = mockRequest();
         Response response = mockResponse();
+        LocalizationSetter ls = mockLocalizationSetter();
 
         stub_isPageName(resolver, false);
 
+        train_setLocaleFromLocaleName(ls, "foo", false);
         train_getPath(request, "/foo/Bar.baz");
 
         replay();
 
-        Dispatcher d = new PageRenderDispatcher(resolver, handler, contextPathEncoder);
+        Dispatcher d = new PageRenderDispatcher(resolver, handler, contextPathEncoder, ls);
 
         assertFalse(d.dispatch(request, response));
 
@@ -68,14 +70,41 @@
         PageRenderRequestHandler handler = newMock(PageRenderRequestHandler.class);
         Request request = mockRequest();
         Response response = mockResponse();
+        LocalizationSetter ls = mockLocalizationSetter();
 
         train_getPath(request, "");
 
+        train_setLocaleFromLocaleName(ls, "", false);
+
         train_isPageName(resolver, "", false);
 
         replay();
 
-        Dispatcher d = new PageRenderDispatcher(resolver, handler, contextPathEncoder);
+        Dispatcher d = new PageRenderDispatcher(resolver, handler, contextPathEncoder, ls);
+
+        assertFalse(d.dispatch(request, response));
+
+        verify();
+    }
+
+    @Test
+    public void just_the_locale_name() throws Exception
+    {
+        ComponentClassResolver resolver = mockComponentClassResolver();
+        PageRenderRequestHandler handler = newMock(PageRenderRequestHandler.class);
+        Request request = mockRequest();
+        Response response = mockResponse();
+        LocalizationSetter ls = mockLocalizationSetter();
+
+        train_getPath(request, "/en");
+
+        train_setLocaleFromLocaleName(ls, "en", true);
+
+        train_isPageName(resolver, "", false);
+
+        replay();
+
+        Dispatcher d = new PageRenderDispatcher(resolver, handler, contextPathEncoder, ls);
 
         assertFalse(d.dispatch(request, response));
 
@@ -96,9 +125,12 @@
         PageResponseRenderer renderer = mockPageResponseRenderer();
         RequestPageCache cache = mockRequestPageCache();
         ComponentEventResultProcessor processor = newComponentEventResultProcessor();
+        LocalizationSetter ls = mockLocalizationSetter();
 
         train_getPath(request, "/foo/bar");
 
+        train_setLocaleFromLocaleName(ls, "foo", false);
+
         train_isPageName(resolver, "foo/bar", false);
         train_isPageName(resolver, "foo", false);
         train_isPageName(resolver, "", true);
@@ -115,7 +147,7 @@
 
         PageRenderRequestHandler handler = new PageRenderRequestHandlerImpl(cache, processor, renderer);
 
-        Dispatcher d = new PageRenderDispatcher(resolver, handler, contextPathEncoder);
+        Dispatcher d = new PageRenderDispatcher(resolver, handler, contextPathEncoder, ls);
 
         assertTrue(d.dispatch(request, response));
 
@@ -145,10 +177,13 @@
         Response response = mockResponse();
         Page page = mockPage();
         ComponentPageElement rootElement = mockComponentPageElement();
+        LocalizationSetter ls = mockLocalizationSetter();
 
         String path = "/foo/Bar" + (finalSlash ? "/" : "");
         train_getPath(request, path);
 
+        train_setLocaleFromLocaleName(ls, "foo", false);
+
         train_isPageName(resolver, "foo/Bar", true);
 
         train_get(cache, "foo/Bar", page);
@@ -162,7 +197,7 @@
 
         PageRenderRequestHandler handler = new PageRenderRequestHandlerImpl(cache, processor, renderer);
 
-        Dispatcher d = new PageRenderDispatcher(resolver, handler, contextPathEncoder);
+        Dispatcher d = new PageRenderDispatcher(resolver, handler, contextPathEncoder, ls);
 
         assertTrue(d.dispatch(request, response));
 
@@ -191,10 +226,13 @@
         Response response = mockResponse();
         Page page = mockPage();
         ComponentPageElement rootElement = mockComponentPageElement();
+        LocalizationSetter ls = mockLocalizationSetter();
 
         String path = "/foo/Bar/zip/zoom" + (finalSlash ? "/" : "");
         train_getPath(request, path);
 
+        train_setLocaleFromLocaleName(ls, "foo", false);
+
         train_isPageName(resolver, "foo/Bar/zip/zoom", false);
 
         train_isPageName(resolver, "foo/Bar/zip", false);
@@ -212,7 +250,7 @@
 
         PageRenderRequestHandler handler = new PageRenderRequestHandlerImpl(cache, processor, renderer);
 
-        Dispatcher d = new PageRenderDispatcher(resolver, handler, contextPathEncoder);
+        Dispatcher d = new PageRenderDispatcher(resolver, handler, contextPathEncoder, ls);
 
         assertTrue(d.dispatch(request, response));
 

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RequestSecurityManagerImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RequestSecurityManagerImplTest.java?rev=733522&r1=733521&r2=733522&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RequestSecurityManagerImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RequestSecurityManagerImplTest.java Sun Jan 11 13:44:52 2009
@@ -1,4 +1,4 @@
-// Copyright 2008 The Apache Software Foundation
+// Copyright 2008, 2009 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.
@@ -36,7 +36,7 @@
     {
         Request request = mockRequest();
         Response response = mockResponse();
-        LinkFactory linkFactory = mockLinkFactory();
+        LinkSource linkSource = mockLinkSource();
         MetaDataLocator locator = mockMetaDataLocator();
         BaseURLSource source = mockBaseURLSource();
         RequestPageCache cache = mockRequestPageCache();
@@ -46,7 +46,7 @@
         replay();
 
         RequestSecurityManager manager
-                = new RequestSecurityManagerImpl(request, response, linkFactory, locator, source, cache);
+                = new RequestSecurityManagerImpl(request, response, linkSource, locator, source, cache);
 
         assertFalse(manager.checkForInsecureRequest(PAGE_NAME));
 
@@ -58,7 +58,7 @@
     {
         Request request = mockRequest();
         Response response = mockResponse();
-        LinkFactory linkFactory = mockLinkFactory();
+        LinkSource linkSource = mockLinkSource();
         MetaDataLocator locator = mockMetaDataLocator();
         BaseURLSource source = mockBaseURLSource();
         RequestPageCache cache = mockRequestPageCache();
@@ -73,7 +73,7 @@
         replay();
 
         RequestSecurityManager manager
-                = new RequestSecurityManagerImpl(request, response, linkFactory, locator, source, cache);
+                = new RequestSecurityManagerImpl(request, response, linkSource, locator, source, cache);
 
         assertFalse(manager.checkForInsecureRequest(PAGE_NAME));
 
@@ -85,7 +85,7 @@
     {
         Request request = mockRequest();
         Response response = mockResponse();
-        LinkFactory linkFactory = mockLinkFactory();
+        LinkSource linkSource = mockLinkSource();
         MetaDataLocator locator = mockMetaDataLocator();
         BaseURLSource source = mockBaseURLSource();
         Page page = mockPage();
@@ -98,14 +98,14 @@
 
         train_isSecure(locator, page, true);
 
-        train_createPageRenderLink(linkFactory, page, link);
+        train_createPageRenderLink(linkSource, page, link);
 
         response.sendRedirect(link);
 
         replay();
 
         RequestSecurityManager manager
-                = new RequestSecurityManagerImpl(request, response, linkFactory, locator, source, cache);
+                = new RequestSecurityManagerImpl(request, response, linkSource, locator, source, cache);
 
         assertTrue(manager.checkForInsecureRequest(PAGE_NAME));
 
@@ -128,7 +128,7 @@
     {
         Request request = mockRequest();
         Response response = mockResponse();
-        LinkFactory linkFactory = mockLinkFactory();
+        LinkSource linkSource = mockLinkSource();
         MetaDataLocator locator = mockMetaDataLocator();
         BaseURLSource source = mockBaseURLSource();
         Page page = mockPage();
@@ -142,7 +142,7 @@
         replay();
 
         RequestSecurityManager manager
-                = new RequestSecurityManagerImpl(request, response, linkFactory, locator, source, null);
+                = new RequestSecurityManagerImpl(request, response, linkSource, locator, source, null);
 
         assertEquals(manager.getBaseURL(page), expectedURL);
 
@@ -160,6 +160,4 @@
 
         train_findMeta(locator, MetaDataConstants.SECURE_PAGE, resources, Boolean.class, secure);
     }
-
-
 }

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/test/InternalBaseTestCase.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/test/InternalBaseTestCase.java?rev=733522&r1=733521&r2=733522&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/test/InternalBaseTestCase.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/test/InternalBaseTestCase.java Sun Jan 11 13:44:52 2009
@@ -1,4 +1,4 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
+// Copyright 2006, 2007, 2008, 2009 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.
@@ -426,14 +426,14 @@
         return newMock(ComponentInvocationMap.class);
     }
 
-    protected final LinkFactory mockLinkFactory()
+    protected final LinkSource mockLinkSource()
     {
-        return newMock(LinkFactory.class);
+        return newMock(LinkSource.class);
     }
 
-    protected final void train_createPageRenderLink(LinkFactory factory, Page page, Link link)
+    protected final void train_createPageRenderLink(LinkSource source, Page page, Link link)
     {
-        expect(factory.createPageRenderLink(page, false)).andReturn(link);
+        expect(source.createPageRenderLink(page, false)).andReturn(link);
     }
 
     protected final void train_isLoaded(InternalComponentResources resources, boolean isLoaded)
@@ -658,4 +658,15 @@
     {
         expect(invocation.getParameterValue(parameterName)).andReturn(parameterValue).atLeastOnce();
     }
+
+    protected final void train_setLocaleFromLocaleName(LocalizationSetter localizationSetter, String localeName,
+                                                       boolean recognized)
+    {
+        expect(localizationSetter.setLocaleFromLocaleName(localeName)).andReturn(recognized);
+    }
+
+    protected final LocalizationSetter mockLocalizationSetter()
+    {
+        return newMock(LocalizationSetter.class);
+    }
 }