Author: hlship
Date: Sat Mar  6 18:37:41 2010
New Revision: 919813

URL: http://svn.apache.org/viewvc?rev=919813&view=rev
Log:
TAP5-1047: @IncludeJavaScriptLibrary and @IncludeStylesheet may incorrectly 
calculate resources in component sub-classes

Modified:
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/Autocomplete.java
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/AbstractIncludeAssetWorker.java

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/Autocomplete.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/Autocomplete.java?rev=919813&r1=919812&r2=919813&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/Autocomplete.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/Autocomplete.java
 Sat Mar  6 18:37:41 2010
@@ -14,22 +14,26 @@
 
 package org.apache.tapestry5.corelib.mixins;
 
+import java.util.Collections;
+import java.util.List;
+
 import org.apache.tapestry5.*;
-import org.apache.tapestry5.ContentType;
-import org.apache.tapestry5.annotations.*;
+import org.apache.tapestry5.annotations.Environmental;
+import org.apache.tapestry5.annotations.Events;
+import org.apache.tapestry5.annotations.IncludeJavaScriptLibrary;
+import org.apache.tapestry5.annotations.InjectContainer;
+import org.apache.tapestry5.annotations.Parameter;
+import org.apache.tapestry5.annotations.Path;
+import org.apache.tapestry5.annotations.QueryParameter;
 import org.apache.tapestry5.internal.util.Holder;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.services.TypeCoercer;
 import org.apache.tapestry5.json.JSONArray;
 import org.apache.tapestry5.json.JSONObject;
 import org.apache.tapestry5.services.MarkupWriterFactory;
-import org.apache.tapestry5.services.Request;
 import org.apache.tapestry5.services.ResponseRenderer;
 import org.apache.tapestry5.util.TextStreamResponse;
 
-import java.util.Collections;
-import java.util.List;
-
 /**
  * A mixin for a text field that allows for autocompletion of text fields. 
This is based on Prototype's autocompleter
  * control.

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/AbstractIncludeAssetWorker.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/AbstractIncludeAssetWorker.java?rev=919813&r1=919812&r2=919813&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/AbstractIncludeAssetWorker.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/AbstractIncludeAssetWorker.java
 Sat Mar  6 18:37:41 2010
@@ -30,7 +30,6 @@
 import org.apache.tapestry5.services.ComponentClassTransformWorker;
 import org.apache.tapestry5.services.ComponentMethodAdvice;
 import org.apache.tapestry5.services.ComponentMethodInvocation;
-import org.apache.tapestry5.services.ComponentValueProvider;
 import org.apache.tapestry5.services.FieldAccess;
 import org.apache.tapestry5.services.TransformConstants;
 import org.apache.tapestry5.services.TransformField;
@@ -77,16 +76,16 @@
 
         // Inside the component's page loaded callback, convert the asset 
paths to assets
 
-        storeLocalizedAssetsAtPageLoad(transformation, expandedPaths, access);
+        storeLocalizedAssetsAtPageLoad(transformation, 
model.getBaseResource(), expandedPaths, access);
 
         handleAssetsDuringSetupRenderPhase(transformation, model, access);
     }
 
     private FieldAccess createFieldForAssets(ClassTransformation 
transformation)
     {
-        String fieldName = transformation.addField(Modifier.PRIVATE, 
List.class.getName(), "includedAssets");
+        TransformField field = transformation.createField(Modifier.PRIVATE, 
List.class.getName(), "includedAssets");
 
-        return transformation.getField(fieldName).getAccess();
+        return field.getAccess();
     }
 
     private void handleAssetsDuringSetupRenderPhase(ClassTransformation 
transformation, MutableComponentModel model,
@@ -111,8 +110,8 @@
         model.addRenderPhase(SetupRender.class);
     }
 
-    private void storeLocalizedAssetsAtPageLoad(ClassTransformation 
transformation, final List<String> expandedPaths,
-            final FieldAccess access)
+    private void storeLocalizedAssetsAtPageLoad(ClassTransformation 
transformation, final Resource baseResource,
+            final List<String> expandedPaths, final FieldAccess access)
     {
         ComponentMethodAdvice advice = new ComponentMethodAdvice()
         {
@@ -122,7 +121,7 @@
 
                 ComponentResources resources = 
invocation.getComponentResources();
 
-                List<Asset> assets = convertPathsToAssets(resources, 
expandedPaths);
+                List<Asset> assets = convertPathsToAssets(baseResource, 
resources.getLocale(), expandedPaths);
 
                 access.write(invocation.getInstance(), assets);
             }
@@ -145,14 +144,10 @@
         return result;
     }
 
-    private List<Asset> convertPathsToAssets(ComponentResources resources, 
List<String> assetPaths)
+    private List<Asset> convertPathsToAssets(Resource baseResource, Locale 
locale, List<String> assetPaths)
     {
-        Resource baseResource = 
resources.getComponentModel().getBaseResource();
-
         List<Asset> result = CollectionFactory.newList();
 
-        Locale locale = resources.getLocale();
-
         for (String assetPath : assetPaths)
         {
             Asset asset = assetSource.getAsset(baseResource, assetPath, 
locale);


Reply via email to