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);