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/10/28 20:42:04 UTC
svn commit: r1190494 -
/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CommonResourcesInjectionProvider.java
Author: hlship
Date: Fri Oct 28 18:42:04 2011
New Revision: 1190494
URL: http://svn.apache.org/viewvc?rev=1190494&view=rev
Log:
Optimization: inject a ComputedValue, rather than use a full FieldConduit, when injecting common resources into a component
This is a bit more efficient, as fewer methods must be written, and fewer new fields created.
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CommonResourcesInjectionProvider.java
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CommonResourcesInjectionProvider.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CommonResourcesInjectionProvider.java?rev=1190494&r1=1190493&r2=1190494&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CommonResourcesInjectionProvider.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CommonResourcesInjectionProvider.java Fri Oct 28 18:42:04 2011
@@ -20,6 +20,7 @@ import org.apache.tapestry5.ioc.Messages
import org.apache.tapestry5.ioc.ObjectLocator;
import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
import org.apache.tapestry5.model.MutableComponentModel;
+import org.apache.tapestry5.plastic.ComputedValue;
import org.apache.tapestry5.plastic.InstanceContext;
import org.apache.tapestry5.plastic.PlasticField;
import org.apache.tapestry5.services.pageload.ComponentResourceSelector;
@@ -34,27 +35,16 @@ import java.util.Map;
*/
public class CommonResourcesInjectionProvider implements InjectionProvider2
{
- interface ResourceProvider<T>
+ abstract static class ResourceProvider<T> implements ComputedValue<T>
{
- T get(ComponentResources resources);
- }
-
- static class ResourceConduit extends ReadOnlyComponentFieldConduit
- {
- private final ResourceProvider<?> provider;
-
- ResourceConduit(String className, String fieldName, ResourceProvider<?> provider)
- {
- super(className, fieldName);
- this.provider = provider;
- }
-
- public Object get(Object instance, InstanceContext context)
+ public T get(InstanceContext context)
{
ComponentResources resources = context.get(ComponentResources.class);
- return provider.get(resources);
+ return get(resources);
}
+
+ abstract T get(ComponentResources resources);
}
private static ResourceProvider<ComponentResourceSelector> selectorProvider = new ResourceProvider<ComponentResourceSelector>()
@@ -118,14 +108,14 @@ public class CommonResourcesInjectionPro
public boolean provideInjection(PlasticField field, ObjectLocator locator, MutableComponentModel componentModel)
{
- ResourceProvider provider = configuration.get(field.getTypeName());
+ final ResourceProvider provider = configuration.get(field.getTypeName());
if (provider == null)
{
return false;
}
- field.setConduit(new ResourceConduit(field.getPlasticClass().getClassName(), field.getName(), provider));
+ field.injectComputed(provider);
return true;
}