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 2007/03/13 02:44:14 UTC

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

Author: hlship
Date: Mon Mar 12 18:44:13 2007
New Revision: 517488

URL: http://svn.apache.org/viewvc?view=rev&rev=517488
Log:
TAPESTRY-1346: Hibernate module depends on missing ComponentClassLocator service

Added:
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ClassNameLocator.java
      - copied, changed from r516840, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentClassLocator.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ClassNameLocatorImpl.java
      - copied, changed from r516840, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentClassLocatorImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ClassNameLocatorImplTest.java
      - copied, changed from r516840, tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ComponentClassLocatorImplTest.java
Removed:
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentClassLocator.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentClassLocatorImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ComponentClassLocatorImplTest.java
Modified:
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentClassResolverImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InternalModule.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/ComponentClassResolver.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/TapestryModule.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ComponentClassResolverImplTest.java
    tapestry/tapestry5/tapestry-hibernate/trunk/src/main/java/org/apache/tapestry/hibernate/HibernateModule.java
    tapestry/tapestry5/tapestry-hibernate/trunk/src/main/java/org/apache/tapestry/hibernate/HibernateSessionSource.java
    tapestry/tapestry5/tapestry-hibernate/trunk/src/main/java/org/apache/tapestry/internal/hibernate/HibernateSessionSourceImpl.java
    tapestry/tapestry5/tapestry-hibernate/trunk/src/test/java/org/apache/tapestry/internal/hibernate/HibernateSessionSourceImplTest.java

Copied: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ClassNameLocator.java (from r516840, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentClassLocator.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ClassNameLocator.java?view=diff&rev=517488&p1=tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentClassLocator.java&r1=516840&p2=tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ClassNameLocator.java&r2=517488
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentClassLocator.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ClassNameLocator.java Mon Mar 12 18:44:13 2007
@@ -19,16 +19,16 @@
 /**
  * Scans the classpath for component classes, classes within particular packages.
  */
-public interface ComponentClassLocator
+public interface ClassNameLocator
 {
     /**
      * Searches for all component classes under the given package name. This consists of all
-     * top-level classes in the indicated package (or a sub-package), but excludes inner classes.
-     * <p>
-     * TODO: Sniff files for the ComponentClass annotation? A pain because of inheritance and such.
+     * top-level classes in the indicated package (or a sub-package), but excludes inner classes. No
+     * other filtering (beyond inner classes) occurs, so there's no guarantee that the class names
+     * returned are public (for example)
      * 
      * @param packageName
-     * @return fully qualified class names.
+     * @return fully qualified class names
      */
-    Collection<String> locateComponentClassNames(String packageName);
+    Collection<String> locateClassNames(String packageName);
 }

Copied: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ClassNameLocatorImpl.java (from r516840, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentClassLocatorImpl.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ClassNameLocatorImpl.java?view=diff&rev=517488&p1=tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentClassLocatorImpl.java&r1=516840&p2=tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ClassNameLocatorImpl.java&r2=517488
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentClassLocatorImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ClassNameLocatorImpl.java Mon Mar 12 18:44:13 2007
@@ -32,7 +32,7 @@
 import org.apache.tapestry.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry.ioc.util.Stack;
 
-public class ComponentClassLocatorImpl implements ComponentClassLocator
+public class ClassNameLocatorImpl implements ClassNameLocator
 {
     private static final String CLASS_SUFFIX = ".class";
 
@@ -53,10 +53,9 @@
 
     /**
      * Synchronization should not be necessary, but perhaps the underlying ClassLoader's are
-     * sensitive to threading. This is just a shot in the dark to address our continuous integration
-     * instability.
+     * sensitive to threading.
      */
-    public synchronized Collection<String> locateComponentClassNames(String packageName)
+    public synchronized Collection<String> locateClassNames(String packageName)
     {
         String packagePath = packageName.replace('.', '/') + "/";
 
@@ -145,16 +144,13 @@
             {
                 String line = lineReader.readLine();
 
-                if (line == null)
-                    break;
+                if (line == null) break;
 
-                if (line.contains("$"))
-                    continue;
+                if (line.contains("$")) continue;
 
                 if (line.endsWith(CLASS_SUFFIX))
                 {
-                    if (packageName == null)
-                        packageName = packagePath.replace('/', '.');
+                    if (packageName == null) packageName = packagePath.replace('/', '.');
 
                     // packagePath ends with '/', packageName ends with '.'
 
@@ -168,8 +164,7 @@
 
                 // Either a file or a hidden directory (such as .svn)
 
-                if (line.contains("."))
-                    continue;
+                if (line.contains(".")) continue;
 
                 // The name of a subdirectory.
 
@@ -198,14 +193,11 @@
         {
             String name = e.nextElement().getName();
 
-            if (!name.startsWith(packagePath))
-                continue;
+            if (!name.startsWith(packagePath)) continue;
 
-            if (!name.endsWith(CLASS_SUFFIX))
-                continue;
+            if (!name.endsWith(CLASS_SUFFIX)) continue;
 
-            if (name.contains("$"))
-                continue;
+            if (name.contains("$")) continue;
 
             // Strip off .class and convert the slashes back to periods.
 

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentClassResolverImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentClassResolverImpl.java?view=diff&rev=517488&r1=517487&r2=517488
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentClassResolverImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentClassResolverImpl.java Mon Mar 12 18:44:13 2007
@@ -36,7 +36,7 @@
 
     private final ComponentInstantiatorSource _componentInstantiatorSource;
 
-    private final ComponentClassLocator _componentClassLocator;
+    private final ClassNameLocator _classNameLocator;
 
     private String _appRootPackage;
 
@@ -64,10 +64,10 @@
     private final Map<String, String> _pageClassNameToLogicalName = newMap();
 
     public ComponentClassResolverImpl(ComponentInstantiatorSource componentInstantiatorSource,
-            ComponentClassLocator componentClassLocator, Collection<LibraryMapping> mappings)
+            ClassNameLocator classNameLocator, Collection<LibraryMapping> mappings)
     {
         _componentInstantiatorSource = componentInstantiatorSource;
-        _componentClassLocator = componentClassLocator;
+        _classNameLocator = classNameLocator;
 
         for (LibraryMapping mapping : mappings)
         {
@@ -153,8 +153,8 @@
         String searchPackage = rootPackage + "." + subPackage;
         boolean isPage = subPackage.equals(PAGES_SUBPACKAGE);
 
-        Collection<String> classNames = _componentClassLocator
-                .locateComponentClassNames(searchPackage);
+        Collection<String> classNames = _classNameLocator
+                .locateClassNames(searchPackage);
 
         int startPos = searchPackage.length() + 1;
 

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InternalModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InternalModule.java?view=diff&rev=517488&r1=517487&r2=517488
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InternalModule.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InternalModule.java Mon Mar 12 18:44:13 2007
@@ -381,6 +381,11 @@
         return new ActionLinkHandlerImpl(resultProcessor, _pageCache, _linkFactory);
     }
 
+    public ClassNameLocator buildClassNameLocator()
+    {
+        return new ClassNameLocatorImpl();
+    }
+
     public AssetFactory buildClasspathAssetFactory(@InjectService("ResourceCache")
     ResourceCache resourceCache, @Inject("infrastructure:ClasspathAssetAliasManager")
     ClasspathAssetAliasManager aliasManager)

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/ComponentClassResolver.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/ComponentClassResolver.java?view=diff&rev=517488&r1=517487&r2=517488
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/ComponentClassResolver.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/ComponentClassResolver.java Mon Mar 12 18:44:13 2007
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry.services;
 
-import org.apache.tapestry.internal.services.ComponentClassLocator;
+import org.apache.tapestry.internal.services.ClassNameLocator;
 
 /**
  * Resolves page names and component types to fully qualified class names. Pages and components may
@@ -27,7 +27,7 @@
  * package is expected to have sub-packages: "pages", "components", "mixins" and "base" ("base" is
  * for base classes).
  * <p>
- * The resolver performs a search of the classpath (via {@link ComponentClassLocator}, to build up
+ * The resolver performs a search of the classpath (via {@link ClassNameLocator}, to build up
  * a set of case-insensitive maps from logical page name, component type, or mixin type to fully
  * qualified class name.
  * <p>

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/TapestryModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/TapestryModule.java?view=diff&rev=517488&r1=517487&r2=517488
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/TapestryModule.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/TapestryModule.java Mon Mar 12 18:44:13 2007
@@ -73,10 +73,10 @@
 import org.apache.tapestry.internal.services.AssetSourceImpl;
 import org.apache.tapestry.internal.services.BeanModelSourceImpl;
 import org.apache.tapestry.internal.services.BindingSourceImpl;
+import org.apache.tapestry.internal.services.ClassNameLocator;
 import org.apache.tapestry.internal.services.ClasspathAssetAliasManagerImpl;
 import org.apache.tapestry.internal.services.CommonResourcesInjectionProvider;
 import org.apache.tapestry.internal.services.ComponentActionDispatcher;
-import org.apache.tapestry.internal.services.ComponentClassLocatorImpl;
 import org.apache.tapestry.internal.services.ComponentClassResolverImpl;
 import org.apache.tapestry.internal.services.ComponentInstanceResultProcessor;
 import org.apache.tapestry.internal.services.ComponentInstantiatorSource;
@@ -1034,10 +1034,12 @@
         return new EnvironmentalShadowBuilderImpl(classFactory, _environment);
     }
 
-    public ComponentClassResolver build(Collection<LibraryMapping> configuration)
+    public ComponentClassResolver build(Collection<LibraryMapping> configuration,
+            @InjectService("ClassNameLocator")
+            ClassNameLocator classNameLocator)
     {
         ComponentClassResolverImpl service = new ComponentClassResolverImpl(
-                _componentInstantiatorSource, new ComponentClassLocatorImpl(), configuration);
+                _componentInstantiatorSource, classNameLocator, configuration);
 
         // Allow the resolver to clean its cache when the source is invalidated
 

Copied: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ClassNameLocatorImplTest.java (from r516840, tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ComponentClassLocatorImplTest.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ClassNameLocatorImplTest.java?view=diff&rev=517488&p1=tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ComponentClassLocatorImplTest.java&r1=516840&p2=tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ClassNameLocatorImplTest.java&r2=517488
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ComponentClassLocatorImplTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ClassNameLocatorImplTest.java Mon Mar 12 18:44:13 2007
@@ -26,7 +26,7 @@
  * Tricky to test, since the code is literally hunting around inside its own brain. There's a lot of
  * room for unintended consequences here.
  */
-public class ComponentClassLocatorImplTest extends Assert
+public class ClassNameLocatorImplTest extends Assert
 {
     /**
      * Use various packages in tapestry-ioc to test this, as those don't change unexpectedly(-ish)
@@ -35,10 +35,10 @@
     @Test
     public void classes_in_jar_file()
     {
-        ComponentClassLocator locator = new ComponentClassLocatorImpl();
+        ClassNameLocator locator = new ClassNameLocatorImpl();
 
         Collection<String> names = locator
-                .locateComponentClassNames("org.apache.tapestry.ioc.internal.util");
+                .locateClassNames("org.apache.tapestry.ioc.internal.util");
 
         assertInList(
                 names,
@@ -56,9 +56,9 @@
     @Test
     public void classes_in_subpackage_in_jar_file()
     {
-        ComponentClassLocator locator = new ComponentClassLocatorImpl();
+        ClassNameLocator locator = new ClassNameLocatorImpl();
 
-        Collection<String> names = locator.locateComponentClassNames("org.apache.tapestry.ioc");
+        Collection<String> names = locator.locateClassNames("org.apache.tapestry.ioc");
 
         assertInList(
                 names,
@@ -76,10 +76,10 @@
     @Test
     public void classes_in_local_folders()
     {
-        ComponentClassLocator locator = new ComponentClassLocatorImpl();
+        ClassNameLocator locator = new ClassNameLocatorImpl();
 
         Collection<String> names = locator
-                .locateComponentClassNames("org.apache.tapestry.corelib.components");
+                .locateClassNames("org.apache.tapestry.corelib.components");
 
         assertInList(names, "org.apache.tapestry.corelib.components", "ActionLink", "Label");
 
@@ -89,9 +89,9 @@
     @Test
     public void classes_in_subpackages_in_local_folders()
     {
-        ComponentClassLocator locator = new ComponentClassLocatorImpl();
+        ClassNameLocator locator = new ClassNameLocatorImpl();
 
-        Collection<String> names = locator.locateComponentClassNames("org.apache.tapestry.corelib");
+        Collection<String> names = locator.locateClassNames("org.apache.tapestry.corelib");
 
         assertInList(
                 names,

Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ComponentClassResolverImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ComponentClassResolverImplTest.java?view=diff&rev=517488&r1=517487&r2=517488
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ComponentClassResolverImplTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ComponentClassResolverImplTest.java Mon Mar 12 18:44:13 2007
@@ -39,7 +39,7 @@
     private static final String LIB_ROOT_PACKAGE = "org.example.lib";
 
     private ComponentClassResolverImpl create(ComponentInstantiatorSource source,
-            ComponentClassLocator locator, LibraryMapping... mappings)
+            ClassNameLocator locator, LibraryMapping... mappings)
     {
         List<LibraryMapping> list = Arrays.asList(mappings);
 
@@ -54,7 +54,7 @@
     public void simple_page_name()
     {
         ComponentInstantiatorSource source = newComponentInstantiatorSource();
-        ComponentClassLocator locator = newComponentClassLocator();
+        ClassNameLocator locator = newClassNameLocator();
 
         train_for_app_packages(source);
 
@@ -75,7 +75,7 @@
     public void is_page_name()
     {
         ComponentInstantiatorSource source = newComponentInstantiatorSource();
-        ComponentClassLocator locator = newComponentClassLocator();
+        ClassNameLocator locator = newClassNameLocator();
 
         train_for_app_packages(source);
 
@@ -98,7 +98,7 @@
     public void is_page_name_for_core_page()
     {
         ComponentInstantiatorSource source = newComponentInstantiatorSource();
-        ComponentClassLocator locator = newComponentClassLocator();
+        ClassNameLocator locator = newClassNameLocator();
 
         train_for_app_packages(source);
         train_for_packages(source, CORE_ROOT_PACKAGE);
@@ -125,26 +125,26 @@
         verify();
     }
 
-    protected final ComponentClassLocator newComponentClassLocator()
+    protected final ClassNameLocator newClassNameLocator()
     {
-        ComponentClassLocator locator = newMock(ComponentClassLocator.class);
+        ClassNameLocator locator = newMock(ClassNameLocator.class);
 
         stub_locateComponentClassNames(locator);
 
         return locator;
     }
 
-    private void stub_locateComponentClassNames(ComponentClassLocator locator)
+    private void stub_locateComponentClassNames(ClassNameLocator locator)
     {
         Collection<String> noMatches = Collections.emptyList();
 
-        expect(locator.locateComponentClassNames(isA(String.class))).andStubReturn(noMatches);
+        expect(locator.locateClassNames(isA(String.class))).andStubReturn(noMatches);
     }
 
-    protected final void train_locateComponentClassNames(ComponentClassLocator locator,
+    protected final void train_locateComponentClassNames(ClassNameLocator locator,
             String packageName, String... classNames)
     {
-        expect(locator.locateComponentClassNames(packageName)).andReturn(Arrays.asList(classNames));
+        expect(locator.locateClassNames(packageName)).andReturn(Arrays.asList(classNames));
     }
 
     @Test
@@ -153,7 +153,7 @@
         String className = APP_ROOT_PACKAGE + ".pages.SimplePage";
 
         ComponentInstantiatorSource source = newComponentInstantiatorSource();
-        ComponentClassLocator locator = newComponentClassLocator();
+        ClassNameLocator locator = newClassNameLocator();
 
         train_for_app_packages(source);
 
@@ -176,7 +176,7 @@
         String pageClassName = APP_ROOT_PACKAGE + ".pages.SimplePage";
 
         ComponentInstantiatorSource source = newComponentInstantiatorSource();
-        ComponentClassLocator locator = newComponentClassLocator();
+        ClassNameLocator locator = newClassNameLocator();
 
         train_for_app_packages(source);
 
@@ -218,7 +218,7 @@
         String className = CORE_ROOT_PACKAGE + ".pages.CorePage";
 
         ComponentInstantiatorSource source = newComponentInstantiatorSource();
-        ComponentClassLocator locator = newComponentClassLocator();
+        ClassNameLocator locator = newClassNameLocator();
 
         train_for_packages(source, CORE_ROOT_PACKAGE);
         train_for_app_packages(source);
@@ -241,7 +241,7 @@
         String className = CORE_ROOT_PACKAGE + ".pages.CorePage";
 
         ComponentInstantiatorSource source = newComponentInstantiatorSource();
-        ComponentClassLocator locator = newComponentClassLocator();
+        ClassNameLocator locator = newClassNameLocator();
 
         train_for_packages(source, CORE_ROOT_PACKAGE);
         train_for_app_packages(source);
@@ -264,7 +264,7 @@
         String className = LIB_ROOT_PACKAGE + ".pages.LibPage";
 
         ComponentInstantiatorSource source = newComponentInstantiatorSource();
-        ComponentClassLocator locator = newComponentClassLocator();
+        ClassNameLocator locator = newClassNameLocator();
 
         train_for_packages(source, LIB_ROOT_PACKAGE);
         train_for_packages(source, CORE_ROOT_PACKAGE);
@@ -288,7 +288,7 @@
         String className = LIB_ROOT_PACKAGE + ".pages.LibPage";
 
         ComponentInstantiatorSource source = newComponentInstantiatorSource();
-        ComponentClassLocator locator = newComponentClassLocator();
+        ClassNameLocator locator = newClassNameLocator();
 
         train_for_packages(source, LIB_ROOT_PACKAGE);
         train_for_packages(source, CORE_ROOT_PACKAGE);
@@ -311,7 +311,7 @@
     public void class_name_does_not_resolve_to_page_name()
     {
         ComponentInstantiatorSource source = newComponentInstantiatorSource();
-        ComponentClassLocator locator = newComponentClassLocator();
+        ClassNameLocator locator = newClassNameLocator();
 
         train_for_packages(source, CORE_ROOT_PACKAGE);
         train_for_app_packages(source);
@@ -341,7 +341,7 @@
     public void class_name_not_in_a_pages_package()
     {
         ComponentInstantiatorSource source = newComponentInstantiatorSource();
-        ComponentClassLocator locator = newComponentClassLocator();
+        ClassNameLocator locator = newClassNameLocator();
 
         train_for_packages(source, CORE_ROOT_PACKAGE);
         train_for_app_packages(source);
@@ -374,7 +374,7 @@
         String className = secondaryLibPackage + ".pages.LibPage";
 
         ComponentInstantiatorSource source = newComponentInstantiatorSource();
-        ComponentClassLocator locator = newComponentClassLocator();
+        ClassNameLocator locator = newClassNameLocator();
 
         train_for_packages(source, LIB_ROOT_PACKAGE);
         train_for_packages(source, secondaryLibPackage);
@@ -403,7 +403,7 @@
         String deepPackage = "org.deep";
 
         ComponentInstantiatorSource source = newComponentInstantiatorSource();
-        ComponentClassLocator locator = newComponentClassLocator();
+        ClassNameLocator locator = newClassNameLocator();
 
         train_for_packages(source, deepPackage);
         train_for_packages(source, LIB_ROOT_PACKAGE);
@@ -450,7 +450,7 @@
         String className = APP_ROOT_PACKAGE + ".components.SimpleComponent";
 
         ComponentInstantiatorSource source = newComponentInstantiatorSource();
-        ComponentClassLocator locator = newComponentClassLocator();
+        ClassNameLocator locator = newClassNameLocator();
 
         train_for_app_packages(source);
 
@@ -475,7 +475,7 @@
         String expectedClassName = APP_ROOT_PACKAGE + ".mixins.SimpleMixin";
 
         ComponentInstantiatorSource source = newComponentInstantiatorSource();
-        ComponentClassLocator locator = newComponentClassLocator();
+        ClassNameLocator locator = newClassNameLocator();
 
         train_for_app_packages(source);
 
@@ -494,7 +494,7 @@
     public void mixin_type_not_found()
     {
         ComponentInstantiatorSource source = newComponentInstantiatorSource();
-        ComponentClassLocator locator = newComponentClassLocator();
+        ClassNameLocator locator = newClassNameLocator();
 
         train_for_packages(source, CORE_ROOT_PACKAGE);
         train_for_app_packages(source);
@@ -523,7 +523,7 @@
     public void component_type_not_found()
     {
         ComponentInstantiatorSource source = newComponentInstantiatorSource();
-        ComponentClassLocator locator = newComponentClassLocator();
+        ClassNameLocator locator = newClassNameLocator();
 
         train_for_packages(source, CORE_ROOT_PACKAGE);
         train_for_app_packages(source);

Modified: tapestry/tapestry5/tapestry-hibernate/trunk/src/main/java/org/apache/tapestry/hibernate/HibernateModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-hibernate/trunk/src/main/java/org/apache/tapestry/hibernate/HibernateModule.java?view=diff&rev=517488&r1=517487&r2=517488
==============================================================================
--- tapestry/tapestry5/tapestry-hibernate/trunk/src/main/java/org/apache/tapestry/hibernate/HibernateModule.java (original)
+++ tapestry/tapestry5/tapestry-hibernate/trunk/src/main/java/org/apache/tapestry/hibernate/HibernateModule.java Mon Mar 12 18:44:13 2007
@@ -19,7 +19,7 @@
 import org.apache.commons.logging.Log;
 import org.apache.tapestry.internal.hibernate.HibernateSessionManagerImpl;
 import org.apache.tapestry.internal.hibernate.HibernateSessionSourceImpl;
-import org.apache.tapestry.internal.services.ComponentClassLocator;
+import org.apache.tapestry.internal.services.ClassNameLocator;
 import org.apache.tapestry.ioc.Configuration;
 import org.apache.tapestry.ioc.annotations.Inject;
 import org.apache.tapestry.ioc.annotations.InjectService;
@@ -39,12 +39,12 @@
      */
     public static HibernateSessionSource build(Log log,
 
-    @InjectService("ComponentClassLocator")
-    ComponentClassLocator classLocator,
+    @InjectService("ClassNameLocator")
+    ClassNameLocator classNameLocator,
 
     Collection<String> packageNames)
     {
-        return new HibernateSessionSourceImpl(log, packageNames, classLocator);
+        return new HibernateSessionSourceImpl(log, packageNames, classNameLocator);
     }
 
     /**

Modified: tapestry/tapestry5/tapestry-hibernate/trunk/src/main/java/org/apache/tapestry/hibernate/HibernateSessionSource.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-hibernate/trunk/src/main/java/org/apache/tapestry/hibernate/HibernateSessionSource.java?view=diff&rev=517488&r1=517487&r2=517488
==============================================================================
--- tapestry/tapestry5/tapestry-hibernate/trunk/src/main/java/org/apache/tapestry/hibernate/HibernateSessionSource.java (original)
+++ tapestry/tapestry5/tapestry-hibernate/trunk/src/main/java/org/apache/tapestry/hibernate/HibernateSessionSource.java Mon Mar 12 18:44:13 2007
@@ -15,13 +15,21 @@
 package org.apache.tapestry.hibernate;
 
 import org.hibernate.Session;
+import org.hibernate.SessionFactory;
 import org.hibernate.cfg.Configuration;
 
 /**
  * Responsible for creating a Hibernate session as needed. Internally, is responsible for Hibernate
- * {@link Configuration}.
+ * {@link Configuration}, resulting in a {@link SessionFactory}.
  */
 public interface HibernateSessionSource
 {
-  Session create();
+    /**
+     * Creates a new session using the {@link #getSessionFactory() SessionFactory} created at
+     * service startup.
+     */
+    Session create();
+
+    /** Returns the SessionFactory from which Hibernate sessions are created. */
+    SessionFactory getSessionFactory();
 }

Modified: tapestry/tapestry5/tapestry-hibernate/trunk/src/main/java/org/apache/tapestry/internal/hibernate/HibernateSessionSourceImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-hibernate/trunk/src/main/java/org/apache/tapestry/internal/hibernate/HibernateSessionSourceImpl.java?view=diff&rev=517488&r1=517487&r2=517488
==============================================================================
--- tapestry/tapestry5/tapestry-hibernate/trunk/src/main/java/org/apache/tapestry/internal/hibernate/HibernateSessionSourceImpl.java (original)
+++ tapestry/tapestry5/tapestry-hibernate/trunk/src/main/java/org/apache/tapestry/internal/hibernate/HibernateSessionSourceImpl.java Mon Mar 12 18:44:13 2007
@@ -18,7 +18,7 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.tapestry.hibernate.HibernateSessionSource;
-import org.apache.tapestry.internal.services.ComponentClassLocator;
+import org.apache.tapestry.internal.services.ClassNameLocator;
 import org.hibernate.Session;
 import org.hibernate.SessionFactory;
 import org.hibernate.cfg.AnnotationConfiguration;
@@ -28,7 +28,7 @@
     private SessionFactory _sessionFactory;
 
     public HibernateSessionSourceImpl(Log log, Collection<String> packageNames,
-            ComponentClassLocator classLocator)
+            ClassNameLocator classNameLocator)
     {
         ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
         long startTime = System.currentTimeMillis();
@@ -43,7 +43,7 @@
         {
             configuration.addPackage(packageName);
 
-            for (String className : classLocator.locateComponentClassNames(packageName))
+            for (String className : classNameLocator.locateClassNames(packageName))
             {
                 try
                 {
@@ -76,4 +76,8 @@
         return _sessionFactory.openSession();
     }
 
+    public SessionFactory getSessionFactory()
+    {
+        return _sessionFactory;
+    }
 }

Modified: tapestry/tapestry5/tapestry-hibernate/trunk/src/test/java/org/apache/tapestry/internal/hibernate/HibernateSessionSourceImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-hibernate/trunk/src/test/java/org/apache/tapestry/internal/hibernate/HibernateSessionSourceImplTest.java?view=diff&rev=517488&r1=517487&r2=517488
==============================================================================
--- tapestry/tapestry5/tapestry-hibernate/trunk/src/test/java/org/apache/tapestry/internal/hibernate/HibernateSessionSourceImplTest.java (original)
+++ tapestry/tapestry5/tapestry-hibernate/trunk/src/test/java/org/apache/tapestry/internal/hibernate/HibernateSessionSourceImplTest.java Mon Mar 12 18:44:13 2007
@@ -19,7 +19,7 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.tapestry.hibernate.HibernateSessionSource;
-import org.apache.tapestry.internal.services.ComponentClassLocatorImpl;
+import org.apache.tapestry.internal.services.ClassNameLocatorImpl;
 import org.apache.tapestry.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry.test.TapestryTestCase;
 import org.testng.annotations.Test;
@@ -36,7 +36,7 @@
                 "org.example.app0.entities");
 
         HibernateSessionSource source = new HibernateSessionSourceImpl(_log, packageNames,
-                new ComponentClassLocatorImpl());
+                new ClassNameLocatorImpl());
 
         assertNotNull(source.create());
     }