You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2010/07/07 20:27:56 UTC

svn commit: r961460 - /tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/EnvironmentalWorker.java

Author: hlship
Date: Wed Jul  7 18:27:55 2010
New Revision: 961460

URL: http://svn.apache.org/viewvc?rev=961460&view=rev
Log:
TAP5-1197: Change EnvironmentalWorker to no longer use EnvironmentalAccess, as those would have to be stored in the PerThreadManager anyway, negating the advantage.

Modified:
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/EnvironmentalWorker.java

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/EnvironmentalWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/EnvironmentalWorker.java?rev=961460&r1=961459&r2=961460&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/EnvironmentalWorker.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/EnvironmentalWorker.java Wed Jul  7 18:27:55 2010
@@ -16,27 +16,25 @@ package org.apache.tapestry5.internal.tr
 
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.ioc.services.Builtin;
-import org.apache.tapestry5.ioc.services.ClassFactory;
+import org.apache.tapestry5.internal.services.ComponentClassCache;
 import org.apache.tapestry5.ioc.services.FieldValueConduit;
 import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.runtime.PageLifecycleAdapter;
 import org.apache.tapestry5.services.ClassTransformation;
 import org.apache.tapestry5.services.ComponentClassTransformWorker;
 import org.apache.tapestry5.services.ComponentValueProvider;
 import org.apache.tapestry5.services.Environment;
-import org.apache.tapestry5.services.EnvironmentalAccess;
 import org.apache.tapestry5.services.TransformField;
 
 /**
  * Obtains a value from the {@link Environment} service based on the field type. This is triggered by the presence of
  * the {@link Environmental} annotation.
  */
+@SuppressWarnings("rawtypes")
 public class EnvironmentalWorker implements ComponentClassTransformWorker
 {
     private final Environment environment;
 
-    private final ClassLoader classLoader;
+    private final ComponentClassCache classCache;
 
     @SuppressWarnings("unchecked")
     private final class EnvironmentalConduit extends ReadOnlyFieldValueConduit
@@ -45,41 +43,26 @@ public class EnvironmentalWorker impleme
 
         private final boolean required;
 
-        private EnvironmentalAccess access;
-
-        private EnvironmentalConduit(ComponentResources resources, String fieldName,
-                final Class environmentalType, boolean required)
+        private EnvironmentalConduit(ComponentResources resources, String fieldName, final Class environmentalType,
+                boolean required)
         {
             super(resources, fieldName);
 
             this.environmentalType = environmentalType;
             this.required = required;
-
-            resources.addPageLifecycleListener(new PageLifecycleAdapter()
-            {
-                @Override
-                public void containingPageDidDetach()
-                {
-                    access = null;
-                }
-            });
         }
 
         public Object get()
         {
-            if (access == null)
-                access = environment.getAccess(environmentalType);
-
-            return required ? access.peekRequired() : access.peek();
+            return required ? environment.peekRequired(environmentalType) : environment.peek(environmentalType);
         }
     }
 
-    public EnvironmentalWorker(Environment environment, @Builtin
-    ClassFactory servicesLayerClassFactory)
+    public EnvironmentalWorker(Environment environment, ComponentClassCache classCache)
     {
         this.environment = environment;
 
-        classLoader = servicesLayerClassFactory.getClassLoader();
+        this.classCache = classCache;
     }
 
     public void transform(ClassTransformation transformation, MutableComponentModel model)
@@ -98,7 +81,7 @@ public class EnvironmentalWorker impleme
 
         final String fieldName = field.getName();
 
-        final Class fieldType = toClass(field.getType());
+        final Class fieldType = classCache.forName(field.getType());
 
         final boolean required = annotation.value();
 
@@ -113,15 +96,4 @@ public class EnvironmentalWorker impleme
         field.replaceAccess(provider);
     }
 
-    private Class toClass(String typeName)
-    {
-        try
-        {
-            return classLoader.loadClass(typeName);
-        }
-        catch (ClassNotFoundException ex)
-        {
-            throw new RuntimeException(ex);
-        }
-    }
 }