You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by jk...@apache.org on 2007/04/28 17:56:58 UTC
svn commit: r533371 - in /tapestry/tapestry4/trunk/tapestry-framework/src:
java/org/apache/tapestry/resolver/ComponentSpecificationResolverImpl.java
test/org/apache/tapestry/resolver/TestComponentSpecificationResolver.java
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());