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 2008/09/12 22:32:29 UTC

svn commit: r694801 - in /tapestry/tapestry5/trunk/tapestry-core/src: main/java/org/apache/tapestry5/internal/services/ main/java/org/apache/tapestry5/services/ test/java/org/apache/tapestry5/internal/services/

Author: hlship
Date: Fri Sep 12 13:32:28 2008
New Revision: 694801

URL: http://svn.apache.org/viewvc?rev=694801&view=rev
Log:
TAPESTRY-1923: ComponentClassResolver can/should provide access to all known page names

Modified:
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentClassResolverImpl.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentClassResolver.java
    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentClassResolverImplTest.java

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentClassResolverImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentClassResolverImpl.java?rev=694801&r1=694800&r2=694801&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentClassResolverImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentClassResolverImpl.java Fri Sep 12 13:32:28 2008
@@ -79,7 +79,7 @@
 
 
     /**
-     * Used to convert an logical page name to the canonical form of the page name; this ensures that uniform case for
+     * Used to convert a logical page name to the canonical form of the page name; this ensures that uniform case for
      * page names is used.
      */
     private final Map<String, String> pageNameToCanonicalPageName = CollectionFactory.newCaseInsensitiveMap();
@@ -143,7 +143,6 @@
 
             addPackagesToInstantiatorSource(rootPackage);
         }
-
     }
 
     private void addPackagesToInstantiatorSource(String rootPackage)
@@ -166,7 +165,6 @@
                 needsRebuild = true;
             }
         });
-
     }
 
     /**
@@ -275,7 +273,6 @@
         }
 
         logger.info(builder.toString());
-
     }
 
     private void rebuild(String pathPrefix, String rootPackage)
@@ -421,7 +418,6 @@
                 return result;
             }
         });
-
     }
 
     public boolean isPageName(final String pageName)
@@ -435,6 +431,23 @@
         });
     }
 
+    public List<String> getPageNames()
+    {
+        return barrier.withRead(new Invokable<List<String>>()
+        {
+            public List<String> invoke()
+            {
+                rebuild();
+
+                List<String> result = CollectionFactory.newList(pageClassNameToLogicalName.values());
+
+                Collections.sort(result);
+
+                return result;
+            }
+        });
+    }
+
     public String resolveComponentTypeToClassName(final String componentType)
     {
         return barrier.withRead(new Invokable<String>()
@@ -541,5 +554,4 @@
             }
         });
     }
-
 }

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentClassResolver.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentClassResolver.java?rev=694801&r1=694800&r2=694801&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentClassResolver.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentClassResolver.java Fri Sep 12 13:32:28 2008
@@ -16,6 +16,8 @@
 
 import org.apache.tapestry5.ioc.services.ClassNameLocator;
 
+import java.util.List;
+
 /**
  * Resolves page names and component types to fully qualified class names. Pages and components may be provided by the
  * application or inside a <em>mapped package</em>. Page names often appear inside URLs, and component types often
@@ -52,6 +54,11 @@
     boolean isPageName(String pageName);
 
     /**
+     * Returns a list of all logical page names, in sorted order.
+     */
+    List<String> getPageNames();
+
+    /**
      * Converts a fully qualified page class name into a logical class name (often, for inclusion as part of the URI).
      * This value may later be passed to {@link #resolvePageNameToClassName(String)}.
      *

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentClassResolverImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentClassResolverImplTest.java?rev=694801&r1=694800&r2=694801&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentClassResolverImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentClassResolverImplTest.java Fri Sep 12 13:32:28 2008
@@ -82,6 +82,36 @@
     }
 
     /**
+     * TAPESTRY-1923
+     */
+    @Test
+    public void get_page_names()
+    {
+        ComponentInstantiatorSource source = mockComponentInstantiatorSource();
+        ClassNameLocator locator = newClassNameLocator();
+        Logger logger = compliantLogger();
+
+        train_for_app_packages(source);
+
+
+        train_locateComponentClassNames(locator, APP_ROOT_PACKAGE + ".pages",
+                                        APP_ROOT_PACKAGE + ".pages.SimplePage",
+                                        APP_ROOT_PACKAGE + ".pages.nested.Other",
+                                        APP_ROOT_PACKAGE + ".pages.nested.NestedPage",
+                                        APP_ROOT_PACKAGE + ".pages.nested.NestedIndex");
+
+        replay();
+
+        ComponentClassResolver resolver = create(logger, source, locator);
+
+        List<String> pageNames = resolver.getPageNames();
+
+        assertListsEquals(pageNames, "SimplePage", "nested/Index", "nested/Other", "nested/Page");
+
+        verify();
+    }
+
+    /**
      * TAPESTRY-1541
      */
     @Test
@@ -127,7 +157,6 @@
         assertEquals(resolver.canonicalizePageName("simplepage"), "SimplePage");
 
         verify();
-
     }
 
     @Test
@@ -846,7 +875,6 @@
         }
 
         verify();
-
     }
 
     @Test



Re: svn commit: r694801 - in /tapestry/tapestry5/trunk/tapestry-core/src: main/java/org/apache/tapestry5/internal/services/ main/java/org/apache/tapestry5/services/ test/java/org/apache/tapestry5/internal/services/

Posted by Massimo Lusetti <ml...@gmail.com>.
On Fri, Sep 12, 2008 at 10:32 PM,  <hl...@apache.org> wrote:

> Author: hlship
> Date: Fri Sep 12 13:32:28 2008
> New Revision: 694801
>
> URL: http://svn.apache.org/viewvc?rev=694801&view=rev
> Log:
> TAPESTRY-1923: ComponentClassResolver can/should provide access to all known page names

This is really nice to have... that will be quite handy, thanks for
implementing it.

-- 
Massimo
http://meridio.blogspot.com

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
For additional commands, e-mail: dev-help@tapestry.apache.org