Author: andyhot
Date: Sun Nov  8 01:13:18 2009
New Revision: 833788

URL: http://svn.apache.org/viewvc?rev=833788&view=rev
Log:
TAPESTRY-2581: Non-existent .jwc file caused confusing error message "Could not 
parse specification null." + now report missing path and show line-precise 
report

Modified:
    
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/ImplMessages.java
    
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/ImplStrings.properties
    
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/NamespaceResourcesImpl.java
    
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/services/impl/TestNamespaceResources.java

Modified: 
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/ImplMessages.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/ImplMessages.java?rev=833788&r1=833787&r2=833788&view=diff
==============================================================================
--- 
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/ImplMessages.java
 (original)
+++ 
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/ImplMessages.java
 Sun Nov  8 01:13:18 2009
@@ -287,4 +287,9 @@
     {
         return _formatter.getMessage("service-name-is-null");
     }
+    
+    static String templatePathNotFound(String path)
+    {
+        return _formatter.format("template-path-not-found", path);
+    }    
 }

Modified: 
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/ImplStrings.properties
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/ImplStrings.properties?rev=833788&r1=833787&r2=833788&view=diff
==============================================================================
--- 
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/ImplStrings.properties
 (original)
+++ 
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/ImplStrings.properties
 Sun Nov  8 01:13:18 2009
@@ -64,3 +64,5 @@
 service-name-is-null=The service name is null.  Engine services must implement 
method getServiceName() and return a non-null value.
 
 unknown-request=Unable to find a suitable ResponseBuilder for the incoming 
request.
+
+template-path-not-found=Couldn''t find ''{0}''

Modified: 
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/NamespaceResourcesImpl.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/NamespaceResourcesImpl.java?rev=833788&r1=833787&r2=833788&view=diff
==============================================================================
--- 
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/NamespaceResourcesImpl.java
 (original)
+++ 
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/NamespaceResourcesImpl.java
 Sun Nov  8 01:13:18 2009
@@ -14,6 +14,7 @@
 
 package org.apache.tapestry.services.impl;
 
+import org.apache.hivemind.ApplicationRuntimeException;
 import org.apache.hivemind.Location;
 import org.apache.hivemind.Resource;
 import org.apache.hivemind.util.Defense;
@@ -61,6 +62,9 @@
 
         Resource childResource = childAsset.getResourceLocation();
         
+        if (childResource==null)
+               throw new 
ApplicationRuntimeException(ImplMessages.templatePathNotFound(path), location, 
null);
+        
         return childResource;
     }
 

Modified: 
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/services/impl/TestNamespaceResources.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/services/impl/TestNamespaceResources.java?rev=833788&r1=833787&r2=833788&view=diff
==============================================================================
--- 
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/services/impl/TestNamespaceResources.java
 (original)
+++ 
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/services/impl/TestNamespaceResources.java
 Sun Nov  8 01:13:18 2009
@@ -18,6 +18,7 @@
 
 import java.net.URL;
 
+import org.apache.hivemind.ApplicationRuntimeException;
 import org.apache.hivemind.Location;
 import org.apache.hivemind.Resource;
 import org.apache.tapestry.BaseComponentTestCase;
@@ -99,7 +100,7 @@
         expect(assetSource.findAsset(parent, childPath, null, 
location)).andReturn(asset);
 
         expect(asset.getResourceLocation()).andReturn(child);
-    }
+    } 
 
     protected IAsset newAsset()
     {
@@ -165,4 +166,28 @@
 
         verify();
     }
+    
+    public void test_Get_Missing_Component_Specification()
+    {
+        Resource libraryResource = newResource();
+        ISpecificationSource source = newSource();
+        AssetSource assetSource = newAssetSource();
+        Location l = newLocation();
+
+        trainResolveChildResource(assetSource, libraryResource, 
"Missing_Foo.jwc", l, null);
+
+        replay();
+
+        NamespaceResources nr = new NamespaceResourcesImpl(source, 
assetSource);
+        
+        try {
+               nr.getComponentSpecification(libraryResource, 
"Missing_Foo.jwc", l);
+               
+               fail("exception should be thrown when resource is missing");
+        } catch (ApplicationRuntimeException e) {System.out.println(e);
+               assertEquals(e.getLocation(), l);
+        }
+
+        verify();
+    }    
 }


Reply via email to