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