[prev in list] [next in list] [prev in thread] [next in thread] 

List:       tapestry-dev
Subject:    svn commit: r533371 - in /tapestry/tapestry4/trunk/tapestry-framework/src:
From:       jkuhnert () apache ! org
Date:       2007-04-28 15:56:58
Message-ID: 20070428155658.C28661A9838 () eris ! apache ! org
[Download RAW message or body]

Author: jkuhnert
Date: Sat Apr 28 08:56:57 2007
New Revision: 533371

URL: http://svn.apache.org/viewvc?view=rev&rev=533371
Log:
Fixes TAPESTRY-1396. Set the default location of fabricated component spec files to \
be relative to the component class instead of the namespace.

Modified:
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/resolver/ComponentSpecificationResolverImpl.java
  tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/resolver/TestComponentSpecificationResolver.java


Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/resolver/ComponentSpecificationResolverImpl.java
                
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java \
/org/apache/tapestry/resolver/ComponentSpecificationResolverImpl.java?view=diff&rev=533371&r1=533370&r2=533371
 ==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/resolver/ComponentSpecificationResolverImpl.java \
                (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/resolver/ComponentSpecificationResolverImpl.java \
Sat Apr 28 08:56:57 2007 @@ -16,9 +16,11 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.hivemind.ApplicationRuntimeException;
+import org.apache.hivemind.ClassResolver;
 import org.apache.hivemind.Location;
 import org.apache.hivemind.Resource;
 import org.apache.hivemind.impl.LocationImpl;
+import org.apache.hivemind.util.ClasspathResource;
 import org.apache.tapestry.INamespace;
 import org.apache.tapestry.IRequestCycle;
 import org.apache.tapestry.services.ClassFinder;
@@ -66,7 +68,9 @@
     private String _type;
 
     private ClassFinder _classFinder;
-    
+
+    private ClassResolver _classResolver;
+
     protected void reset()
     {
         _type = null;
@@ -237,16 +241,22 @@
         String className = type.replace('/', '.');
 
         Class componentClass = _classFinder.findClass(packages, className);
-
         if (componentClass == null)
             return null;
 
         IComponentSpecification spec = new ComponentSpecification();
 
         Resource namespaceResource = namespace.getSpecificationLocation();
-
         Resource componentResource = namespaceResource.getRelativeResource(type + \
".jwc");  
+        // try classpath relative if namespace relative doesn't resolve
+
+        if (componentResource.getResourceURL() == null) {
+            
+            Resource classResource = new ClasspathResource(_classResolver, \
componentClass.getName().replace('.', '/')); +            componentResource = \
classResource.getRelativeResource(type + ".jwc"); +        }
+
         Location location = new LocationImpl(componentResource);
 
         spec.setLocation(location);
@@ -293,4 +303,8 @@
         _classFinder = classFinder;
     }
 
+    public void setClassResolver(ClassResolver classResolver)
+    {
+        _classResolver = classResolver;
+    }
 }

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/resolver/TestComponentSpecificationResolver.java
                
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test \
/org/apache/tapestry/resolver/TestComponentSpecificationResolver.java?view=diff&rev=533371&r1=533370&r2=533371
 ==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/resolver/TestComponentSpecificationResolver.java \
                (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/resolver/TestComponentSpecificationResolver.java \
Sat Apr 28 08:56:57 2007 @@ -14,10 +14,6 @@
 
 package org.apache.tapestry.resolver;
 
-import static org.easymock.EasyMock.checkOrder;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.startsWith;
-
 import org.apache.commons.logging.Log;
 import org.apache.hivemind.ApplicationRuntimeException;
 import org.apache.hivemind.Location;
@@ -28,8 +24,11 @@
 import org.apache.tapestry.engine.ISpecificationSource;
 import org.apache.tapestry.services.ClassFinder;
 import org.apache.tapestry.spec.IComponentSpecification;
+import static org.easymock.EasyMock.*;
 import org.testng.annotations.Test;
 
+import java.net.URL;
+
 /**
  * Tests for {@link \
                org.apache.tapestry.resolver.ComponentSpecificationResolverImpl}.
  * 
@@ -74,7 +73,7 @@
         return delegate;
     }
     
-    public void testNotFoundInAnyNamespace()
+    public void test_Not_Found_In_Any_Namespace()
     {
         IRequestCycle cycle = newCycle();
         Location l = newLocation();
@@ -102,7 +101,7 @@
         verify();
     }    
 
-    public void testFoundInNamespace()
+    public void test_Found_In_Namespace()
     {
         IRequestCycle cycle = newCycle();
         Location l = newLocation();
@@ -128,7 +127,7 @@
         verify();
     }
 
-    public void testDeprecated()
+    public void test_Deprecated()
     {
         IRequestCycle cycle = newCycle();
         Location l = newLocation();
@@ -145,7 +144,8 @@
         Log log = newMock(Log.class);
         
         log.warn(startsWith("Component 'MyComponent' ("));
-        // at classpath:/org/apache/tapestry/resolver/TestComponentSpecificationResolver, \
line 1) is deprecated, and will likely be removed in a later release. Consult its \
documentation to find a replacement component."); +        // at \
classpath:/org/apache/tapestry/resolver/TestComponentSpecificationResolver, line 1) \
is deprecated, and will likely +        // be removed in a later release. Consult its \
documentation to find a replacement component.");  
         replay();
         
@@ -160,7 +160,7 @@
         verify();
     }
 
-    public void testFoundInChildNamespace()
+    public void test_Found_In_Child_Namespace()
     {
         IRequestCycle cycle = newCycle();
         Location l = newLocation();
@@ -189,7 +189,7 @@
         verify();
     }
 
-    public void testSearchFoundRelative()
+    public void test_Search_Found_Relative()
     {
         IRequestCycle cycle = newCycle();
         Location l = newLocation();
@@ -474,7 +474,7 @@
         verify();
     }
 
-    public void testFoundInWebInfFolder()
+    public void test_Found_In_Web_Inf_Folder()
     {
         IRequestCycle cycle = newCycle();
         Location l = newLocation();
@@ -529,7 +529,7 @@
         verify();
     }
 
-    public void testFoundInContextRoot()
+    public void test_Found_In_Context_Root()
     {
         IRequestCycle cycle = newCycle();
         Location l = newLocation();
@@ -592,7 +592,7 @@
         verify();
     }
 
-    public void testFoundComponentClass()
+    public void test_Found_Component_Class()
     {   
         INamespace namespace = newMock(INamespace.class);
 
@@ -604,14 +604,15 @@
         
         trainGetResource(namespace, namespaceResource);
 
+        URL componentUrl = this.getClass().getResource("MyComponent.jwc");
+        expect(componentResource.getResourceURL()).andReturn(componentUrl);
+
         replay();
 
         ComponentSpecificationResolverImpl resolver = new \
ComponentSpecificationResolverImpl();  resolver.setClassFinder(finder);
 
-        IComponentSpecification spec = resolver.searchForComponentClass(
-                namespace,
-                "folder/MyComponent");
+        IComponentSpecification spec = resolver.searchForComponentClass(namespace, \
"folder/MyComponent");  
         assertEquals(BaseComponent.class.getName(), spec.getComponentClassName());
         assertSame(componentResource, spec.getSpecificationLocation());


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic