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/02/12 02:04:21 UTC
svn commit: r620682 - in /tapestry/tapestry5/trunk/tapestry-core/src:
main/java/org/apache/tapestry/internal/services/ComponentClassResolverImpl.java
test/java/org/apache/tapestry/internal/services/ComponentClassResolverImplTest.java
Author: hlship
Date: Mon Feb 11 17:04:20 2008
New Revision: 620682
URL: http://svn.apache.org/viewvc?rev=620682&view=rev
Log:
TAPESTRY-2149: Tapestry should allow the pages and components to be referenced by their "unstripped" names as well
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentClassResolverImpl.java
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentClassResolverImplTest.java
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentClassResolverImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentClassResolverImpl.java?rev=620682&r1=620681&r2=620682&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentClassResolverImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentClassResolverImpl.java Mon Feb 11 17:04:20 2008
@@ -89,6 +89,7 @@
private static final Pattern SPLIT_PACKAGE_PATTERN = Pattern.compile("\\.");
private static final Pattern SPLIT_FOLDER_PATTERN = Pattern.compile("/");
+ private static final int LOGICAL_NAME_BUFFER_SIZE = 40;
public ComponentClassResolverImpl(Logger logger,
@@ -285,15 +286,18 @@
for (String name : classNames)
{
- String logicalName = toLogicalName(name, pathPrefix, startPos);
+ String logicalName = toLogicalName(name, pathPrefix, startPos, true);
+ String unstrippedName = toLogicalName(name, pathPrefix, startPos, false);
if (isPage)
{
_pageClassNameToLogicalName.put(name, logicalName);
_pageNameToCanonicalPageName.put(logicalName, logicalName);
+ _pageNameToCanonicalPageName.put(unstrippedName, logicalName);
}
logicalNameToClassName.put(logicalName, name);
+ logicalNameToClassName.put(unstrippedName, name);
}
}
@@ -306,9 +310,10 @@
* lives)
* @param startPos start position within the class name to extract the logical name (i.e., after the final '.' in
* "rootpackage.pages.").
+ * @param stripTerms
* @return a short logical name in folder format ('.' replaced with '/')
*/
- private String toLogicalName(String className, String pathPrefix, int startPos)
+ private String toLogicalName(String className, String pathPrefix, int startPos, boolean stripTerms)
{
List<String> terms = CollectionFactory.newList();
@@ -316,7 +321,7 @@
addAll(terms, SPLIT_PACKAGE_PATTERN, className.substring(startPos));
- StringBuilder builder = new StringBuilder();
+ StringBuilder builder = new StringBuilder(LOGICAL_NAME_BUFFER_SIZE);
String sep = "";
String logicalName = terms.remove(terms.size() - 1);
@@ -330,7 +335,7 @@
sep = "/";
- logicalName = stripTerm(term, logicalName);
+ if (stripTerms) logicalName = stripTerm(term, logicalName);
}
if (logicalName.equals("")) logicalName = unstripped;
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentClassResolverImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentClassResolverImplTest.java?rev=620682&r1=620681&r2=620682&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentClassResolverImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentClassResolverImplTest.java Mon Feb 11 17:04:20 2008
@@ -169,6 +169,7 @@
ComponentClassResolver resolver = create(logger, source, locator);
assertEquals(resolver.resolvePageNameToClassName("admin/edit/User"), className);
+ assertEquals(resolver.resolvePageNameToClassName("admin/edit/AdminUserEdit"), className);
verify();
}
@@ -547,6 +548,7 @@
new LibraryMapping(CORE_PREFIX, CORE_ROOT_PACKAGE));
assertEquals(resolver.resolvePageNameToClassName("lib/deep/Page"), className);
+ assertEquals(resolver.resolvePageNameToClassName("lib/deep/LibDeepPage"), className);
verify();
}