You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2011/06/02 00:56:16 UTC
svn commit: r1130338 -
/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ImportWorker.java
Author: hlship
Date: Wed Jun 1 22:56:16 2011
New Revision: 1130338
URL: http://svn.apache.org/viewvc?rev=1130338&view=rev
Log:
TAP5-1508: Optimize the @Import worker to initialize assets in the constructor, not on page load
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ImportWorker.java
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ImportWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ImportWorker.java?rev=1130338&r1=1130337&r2=1130338&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ImportWorker.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ImportWorker.java Wed Jun 1 22:56:16 2011
@@ -21,16 +21,18 @@ import org.apache.tapestry5.ComponentRes
import org.apache.tapestry5.annotations.Import;
import org.apache.tapestry5.annotations.SetupRender;
import org.apache.tapestry5.func.F;
-import org.apache.tapestry5.func.Flow;
import org.apache.tapestry5.func.Mapper;
import org.apache.tapestry5.func.Worker;
import org.apache.tapestry5.ioc.Resource;
import org.apache.tapestry5.ioc.services.SymbolSource;
import org.apache.tapestry5.model.MutableComponentModel;
+import org.apache.tapestry5.plastic.ComputedValue;
import org.apache.tapestry5.plastic.FieldHandle;
+import org.apache.tapestry5.plastic.InstanceContext;
import org.apache.tapestry5.plastic.MethodAdvice;
import org.apache.tapestry5.plastic.MethodInvocation;
import org.apache.tapestry5.plastic.PlasticClass;
+import org.apache.tapestry5.plastic.PlasticField;
import org.apache.tapestry5.plastic.PlasticMethod;
import org.apache.tapestry5.services.AssetSource;
import org.apache.tapestry5.services.TransformConstants;
@@ -157,12 +159,12 @@ public class ImportWorker implements Com
String[] expandedPaths = expandPaths(paths);
- FieldHandle assetListHandle = componentClass.introduceField(Asset[].class,
- "importedAssets_" + method.getDescription().methodName).getHandle();
+ PlasticField assetListField = componentClass.introduceField(Asset[].class,
+ "importedAssets_" + method.getDescription().methodName);
- storeLocalizedAssetsAtPageLoad(componentClass, model.getBaseResource(), expandedPaths, assetListHandle);
+ initializeAssetsFromPaths(componentClass, model.getBaseResource(), expandedPaths, assetListField);
- addMethodAssetOperationAdvice(method, assetListHandle, operation);
+ addMethodAssetOperationAdvice(method, assetListField.getHandle(), operation);
}
private String[] expandPaths(String[] paths)
@@ -175,24 +177,18 @@ public class ImportWorker implements Com
return result;
}
- private void storeLocalizedAssetsAtPageLoad(PlasticClass componentClass, final Resource baseResource,
- final String[] expandedPaths, final FieldHandle access)
+ private void initializeAssetsFromPaths(PlasticClass componentClass, final Resource baseResource,
+ final String[] expandedPaths, final PlasticField assetsField)
{
- MethodAdvice advice = new MethodAdvice()
+ assetsField.injectComputed(new ComputedValue<Asset[]>()
{
- public void advise(MethodInvocation invocation)
+ public Asset[] get(InstanceContext context)
{
- invocation.proceed();
-
- ComponentResources resources = invocation.getInstanceContext().get(ComponentResources.class);
-
- Asset[] assets = convertPathsToAssetArray(baseResource, resources.getLocale(), expandedPaths);
+ ComponentResources resources = context.get(ComponentResources.class);
- access.set(invocation.getInstance(), assets);
+ return convertPathsToAssetArray(baseResource, resources.getLocale(), expandedPaths);
}
- };
-
- componentClass.introduceMethod(TransformConstants.CONTAINING_PAGE_DID_LOAD_DESCRIPTION).addAdvice(advice);
+ });
}
private Asset[] convertPathsToAssetArray(final Resource baseResource, final Locale locale, String[] assetPaths)