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