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 [EMAIL PROTECTED]
#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