Author: hlship
Date: Sat Apr 22 13:15:32 2006
New Revision: 396157

URL: http://svn.apache.org/viewcvs?rev=396157&view=rev
Log:
Start building code into HiveMind services

Added:
    tapestry/tapestry5/tapestry-core/trunk/src/main/resources/META-INF/
    
tapestry/tapestry5/tapestry-core/trunk/src/main/resources/META-INF/hivemodule.xml
    
tapestry/tapestry5/tapestry-core/trunk/src/main/resources/META-INF/org.apache.tapestry.internal.transform.xml
    
tapestry/tapestry5/tapestry-core/trunk/src/main/resources/META-INF/org.apache.tapestry.transform.xml
Modified:
    
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/transform/ComponentInstantiatorSourceImpl.java
    
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/transform/worker/UnclaimedFieldWorker.java
    
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/BaseTestCase.java
    
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/transform/TransformConstants.java
    
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/transform/ComponentInstantiatorSourceImplTest.java
    
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/transform/worker/UnclaimedFieldWorkerTest.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/resources/log4j.properties

Modified: 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/transform/ComponentInstantiatorSourceImpl.java
URL: 
http://svn.apache.org/viewcvs/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/transform/ComponentInstantiatorSourceImpl.java?rev=396157&r1=396156&r2=396157&view=diff
==============================================================================
--- 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/transform/ComponentInstantiatorSourceImpl.java
 (original)
+++ 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/transform/ComponentInstantiatorSourceImpl.java
 Sat Apr 22 13:15:32 2006
@@ -26,6 +26,8 @@
 import javassist.NotFoundException;
 import javassist.Translator;
 
+import org.apache.commons.logging.Log;
+import org.apache.hivemind.ClassResolver;
 import org.apache.tapestry.util.Defense;
 
 import static org.apache.tapestry.util.CollectionFactory.newMap;
@@ -43,13 +45,15 @@
 {
     private final Set<String> _packages = newSet();
 
-    private final ClassLoader _parent;
+    private ClassLoader _parent;
 
-    private final ClassPool _classPool;
+    private ClassPool _classPool;
 
-    private final Loader _loader;
+    private Loader _loader;
 
-    private final ClassTransformer _transformer;
+    private ClassTransformer _transformer;
+
+    private Log _log;
 
     /** Map from class name to Instantiator. */
     private final Map<String, Instantiator> _instantiatorMap = newMap();
@@ -60,10 +64,18 @@
         return _loader;
     }
 
-    public ComponentInstantiatorSourceImpl(ClassLoader parent, 
ClassTransformer transformer)
+    public ComponentInstantiatorSourceImpl(ClassResolver resolver)
+    {
+        this(resolver.getClassLoader());
+    }
+
+    public ComponentInstantiatorSourceImpl(ClassLoader parent)
     {
         _parent = notNull(parent, "parent");
+    }
 
+    public void initializeService()
+    {
         _classPool = new ClassPool();
 
         ClassPath path = new LoaderClassPath(_parent);
@@ -72,8 +84,6 @@
 
         _loader = new Loader(_classPool);
 
-        _transformer = notNull(transformer, "transformer");
-
         try
         {
             _loader.addTranslator(_classPool, this);
@@ -87,7 +97,7 @@
     public void onLoad(ClassPool pool, String classname) throws 
NotFoundException,
             CannotCompileException
     {
-        System.out.println("BEGIN onLoad " + classname);
+        _log.debug("BEGIN onLoad " + classname);
 
         // This is our chance to make changes to the CtClass before it is 
loaded into memory.
 
@@ -107,7 +117,7 @@
             throw new CannotCompileException(ex);
         }
 
-        System.out.println("  END onLoad " + classname);
+        _log.debug("  END onLoad " + classname);
     }
 
     private void forceSuperclassTransform(CtClass ctClass) throws 
NotFoundException,
@@ -132,7 +142,7 @@
             Class instanceClass = findClass(classname);
 
             result = _transformer.createInstantiator(instanceClass);
-            
+
             _instantiatorMap.put(classname, result);
         }
 
@@ -196,6 +206,18 @@
         // TODO: Should we check that pacakages are not nested?
 
         _packages.add(Defense.notBlank(packageName, "packageName"));
+    }
+
+    /** For injection. */
+    public void setTransformer(ClassTransformer transformer)
+    {
+        _transformer = transformer;
+    }
+
+    /** For injection. */
+    public void setLog(Log log)
+    {
+        _log = log;
     }
 
 }

Modified: 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/transform/worker/UnclaimedFieldWorker.java
URL: 
http://svn.apache.org/viewcvs/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/transform/worker/UnclaimedFieldWorker.java?rev=396157&r1=396156&r2=396157&view=diff
==============================================================================
--- 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/transform/worker/UnclaimedFieldWorker.java
 (original)
+++ 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/transform/worker/UnclaimedFieldWorker.java
 Sat Apr 22 13:15:32 2006
@@ -16,12 +16,13 @@
 
 import java.lang.reflect.Modifier;
 
-import org.apache.hivemind.service.BodyBuilder;
 import org.apache.tapestry.events.ComponentLifecycle;
 import org.apache.tapestry.model.MutableComponentModel;
 import org.apache.tapestry.transform.ClassTransformWorker;
 import org.apache.tapestry.transform.ClassTransformation;
-import org.apache.tapestry.transform.TransformConstants;
+
+import static 
org.apache.tapestry.transform.TransformConstants.CONTAINING_PAGE_DID_DETACH_SIGNATURE;
+import static 
org.apache.tapestry.transform.TransformConstants.CONTAINING_PAGE_DID_LOAD_SIGNATURE;
 
 /**
  * Designed to be just about the last worker in the pipeline. Its job is to 
add cleanup code that
@@ -53,26 +54,13 @@
         // initial value of the field.
         transformation.addImplementedInterface(ComponentLifecycle.class);
 
-        BodyBuilder builder = new BodyBuilder();
-        builder.begin();
-        builder.addln("$proceed($$);");
-        builder.addln("{0} = {1};", defaultFieldName, fieldName);
-        builder.end();
-
-        
transformation.extendMethod(TransformConstants.CONTAINING_PAGE_DID_LOAD_SIGNATURE,
 builder
-                .toString());
+        transformation.extendMethod(CONTAINING_PAGE_DID_LOAD_SIGNATURE, 
defaultFieldName + " = "
+                + fieldName + ";");
 
         // At the end of the request, we want to move the default value back 
over the
         // active field value. This will most often be null.
 
-        builder.clear();
-
-        builder.begin();
-        builder.addln("$proceed($$);");
-        builder.addln("{0} = {1};", fieldName, defaultFieldName);
-        builder.end();
-
-        
transformation.extendMethod(TransformConstants.CONTAINING_PAGE_DID_DETACH, 
builder
-                .toString());
+        transformation.extendMethod(CONTAINING_PAGE_DID_DETACH_SIGNATURE, 
fieldName + " = "
+                + defaultFieldName + ";");
     }
 }

Modified: 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/BaseTestCase.java
URL: 
http://svn.apache.org/viewcvs/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/BaseTestCase.java?rev=396157&r1=396156&r2=396157&view=diff
==============================================================================
--- 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/BaseTestCase.java
 (original)
+++ 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/BaseTestCase.java
 Sat Apr 22 13:15:32 2006
@@ -80,4 +80,10 @@
         setReturnValue(fieldName);
     }
 
+    protected final void trainFindUnclaimedFields(ClassTransformation 
transformation, String... fieldNames)
+    {
+        transformation.findUnclaimedFields();
+        setReturnValue(fieldNames);
+    }
+
 }

Modified: 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/transform/TransformConstants.java
URL: 
http://svn.apache.org/viewcvs/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/transform/TransformConstants.java?rev=396157&r1=396156&r2=396157&view=diff
==============================================================================
--- 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/transform/TransformConstants.java
 (original)
+++ 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/transform/TransformConstants.java
 Sat Apr 22 13:15:32 2006
@@ -35,7 +35,7 @@
     /**
      * Signature for [EMAIL PROTECTED] 
org.apache.tapestry.events.ComponentLifecycle#containingPageDidDetach()}.
      */
-    public static final MethodSignature CONTAINING_PAGE_DID_DETACH = new 
MethodSignature(
+    public static final MethodSignature CONTAINING_PAGE_DID_DETACH_SIGNATURE = 
new MethodSignature(
             "containingPageDidDetach");
 
     /** Prevent instantiation. */

Added: 
tapestry/tapestry5/tapestry-core/trunk/src/main/resources/META-INF/hivemodule.xml
URL: 
http://svn.apache.org/viewcvs/tapestry/tapestry5/tapestry-core/trunk/src/main/resources/META-INF/hivemodule.xml?rev=396157&view=auto
==============================================================================
--- 
tapestry/tapestry5/tapestry-core/trunk/src/main/resources/META-INF/hivemodule.xml
 (added)
+++ 
tapestry/tapestry5/tapestry-core/trunk/src/main/resources/META-INF/hivemodule.xml
 Sat Apr 22 13:15:32 2006
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<module id="tapestry" version="5.0.0">
+    
+    Master module for Tapestry 5.
+    
+    <sub-module descriptor="org.apache.tapestry.transform.xml"/>
+    <sub-module descriptor="org.apache.tapestry.internal.transform.xml"/>
+    
+</module>
\ No newline at end of file

Added: 
tapestry/tapestry5/tapestry-core/trunk/src/main/resources/META-INF/org.apache.tapestry.internal.transform.xml
URL: 
http://svn.apache.org/viewcvs/tapestry/tapestry5/tapestry-core/trunk/src/main/resources/META-INF/org.apache.tapestry.internal.transform.xml?rev=396157&view=auto
==============================================================================
--- 
tapestry/tapestry5/tapestry-core/trunk/src/main/resources/META-INF/org.apache.tapestry.internal.transform.xml
 (added)
+++ 
tapestry/tapestry5/tapestry-core/trunk/src/main/resources/META-INF/org.apache.tapestry.internal.transform.xml
 Sat Apr 22 13:15:32 2006
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<module id="org.apache.tapestry.internal.transform" version="5.0.0">
+    
+    <contribution 
configuration-id="org.apache.tapestry.transform.TransformWorkers">
+        
+        <command id="ImplementResourceAware" before="*" 
object="instance:worker.ImplementResourceAwareWorker"/>
+        <command id="Retain" object="instance:worker.RetainWorker"/>
+        <command id="UnclaimedField" 
object="instance:worker.UnclaimedFieldWorker" after="*"/>
+        
+    </contribution>
+    
+    <service-point id="TransformWorkersChain" 
+        interface="org.apache.tapestry.transform.TransformWorker"
+        visibility="private"">
+        <invoke-factory service-id="hivemind.lib.ChainFactory">
+            <construct 
configuration-id="org.apache.tapestry.transform.TransformWorkers"/>
+        </invoke-factory>
+    </service-point>
+    
+    <service-point id="ClassTransformer" visibility="private">
+        
+        Encapsulates all the AOP-ish transformations that occur during
+        the loading of component classes.        
+        
+        <invoke-factory>
+            <construct class="ClassTransformerImpl">
+                <set-object class="workers" 
value="service:TransformWorkersChain"/>
+            </construct>
+        </invoke-factory>
+        <interceptor service-id="hivemind.LoggingInterceptor"/>
+    </service-point>
+    
+    
+    <service-point id="ComponentInstantiatorSource">
+        
+        Responsible for providing component instantiators.
+        Runs the class transformation process.
+        
+        <invoke-factory>
+            <construct class="ComponentInstantiatorSourceImpl">
+                <class-resolver/>
+                <object>service:ClassTransformer</object>
+            </construct>
+        </invoke-factory>
+        <interceptor service-id="hivemind.LoggingInterceptor"/>
+    </service-point>
+</module>

Added: 
tapestry/tapestry5/tapestry-core/trunk/src/main/resources/META-INF/org.apache.tapestry.transform.xml
URL: 
http://svn.apache.org/viewcvs/tapestry/tapestry5/tapestry-core/trunk/src/main/resources/META-INF/org.apache.tapestry.transform.xml?rev=396157&view=auto
==============================================================================
--- 
tapestry/tapestry5/tapestry-core/trunk/src/main/resources/META-INF/org.apache.tapestry.transform.xml
 (added)
+++ 
tapestry/tapestry5/tapestry-core/trunk/src/main/resources/META-INF/org.apache.tapestry.transform.xml
 Sat Apr 22 13:15:32 2006
@@ -0,0 +1,10 @@
+<module id="org.apache.tapestry.transform" version="5.0.0">    
+    <configuration-point id="TransformWorkers" 
schema-id="hivemind.lib.ChainContribution">
+        
+        Defines a command chain of workers objects (implementing the 
+        ClassTransformWorker interface).
+        
+    </configuration-point>
+    
+
+</module>    
\ No newline at end of file

Modified: 
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/transform/ComponentInstantiatorSourceImplTest.java
URL: 
http://svn.apache.org/viewcvs/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/transform/ComponentInstantiatorSourceImplTest.java?rev=396157&r1=396156&r2=396157&view=diff
==============================================================================
--- 
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/transform/ComponentInstantiatorSourceImplTest.java
 (original)
+++ 
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/transform/ComponentInstantiatorSourceImplTest.java
 Sat Apr 22 13:15:32 2006
@@ -32,12 +32,8 @@
     @Test
     public void controlledPackagesTest() throws Exception
     {
-        ClassTransformer transformer = newMock(ClassTransformer.class);
 
-        replay();
-
-        ComponentInstantiatorSourceImpl e = new 
ComponentInstantiatorSourceImpl(
-                _defaultClassLoader, transformer);
+        ComponentInstantiatorSourceImpl e = new 
ComponentInstantiatorSourceImpl(_defaultClassLoader);
 
         assertEquals(e.inControlledPackage("foo.bar.Baz"), false);
 
@@ -58,7 +54,5 @@
         // Parents of controlled packages are not controlled
 
         assertEquals(e.inControlledPackage("foo.Gloop"), false);
-
-        verify();
     }
 }

Modified: 
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/transform/worker/UnclaimedFieldWorkerTest.java
URL: 
http://svn.apache.org/viewcvs/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/transform/worker/UnclaimedFieldWorkerTest.java?rev=396157&r1=396156&r2=396157&view=diff
==============================================================================
--- 
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/transform/worker/UnclaimedFieldWorkerTest.java
 (original)
+++ 
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/transform/worker/UnclaimedFieldWorkerTest.java
 Sat Apr 22 13:15:32 2006
@@ -16,14 +16,15 @@
 
 import java.lang.reflect.Modifier;
 
-import org.apache.hivemind.service.BodyBuilder;
 import org.apache.tapestry.events.ComponentLifecycle;
 import org.apache.tapestry.model.MutableComponentModel;
 import org.apache.tapestry.test.BaseTestCase;
 import org.apache.tapestry.transform.ClassTransformation;
-import org.apache.tapestry.transform.TransformConstants;
 import org.testng.annotations.Test;
 
+import static 
org.apache.tapestry.transform.TransformConstants.CONTAINING_PAGE_DID_DETACH_SIGNATURE;
+import static 
org.apache.tapestry.transform.TransformConstants.CONTAINING_PAGE_DID_LOAD_SIGNATURE;
+
 /**
  * @author Howard M. Lewis Ship
  */
@@ -35,7 +36,7 @@
         ClassTransformation ct = newClassTransformation();
         MutableComponentModel model = newMutableComponentModel();
 
-        trainFindUnclaimedFields(ct, new String[0]);
+        trainFindUnclaimedFields(ct);
 
         replay();
 
@@ -44,21 +45,13 @@
         verify();
     }
 
-    protected final void trainFindUnclaimedFields(ClassTransformation 
transformation,
-            String[] fieldNames)
-    {
-        transformation.findUnclaimedFields();
-        setReturnValue(fieldNames);
-    }
-
     @Test
     public void normal()
     {
         ClassTransformation ct = newClassTransformation();
         MutableComponentModel model = newMutableComponentModel();
 
-        trainFindUnclaimedFields(ct, new String[]
-        { "_fred" });
+        trainFindUnclaimedFields(ct, "_fred");
 
         ct.getFieldType("_fred");
         setReturnValue("foo.Bar");
@@ -68,21 +61,8 @@
 
         ct.addImplementedInterface(ComponentLifecycle.class);
 
-        BodyBuilder builder = new BodyBuilder();
-        builder.begin();
-        builder.addln("$proceed($$);");
-        builder.addln("_$fredDefault = _fred;");
-        builder.end();
-
-        ct.extendMethod(TransformConstants.CONTAINING_PAGE_DID_LOAD_SIGNATURE, 
builder.toString());
-
-        builder.clear();
-        builder.begin();
-        builder.addln("$proceed($$);");
-        builder.addln("_fred = _$fredDefault;");
-        builder.end();
-
-        ct.extendMethod(TransformConstants.CONTAINING_PAGE_DID_DETACH, 
builder.toString());
+        ct.extendMethod(CONTAINING_PAGE_DID_LOAD_SIGNATURE, "_$fredDefault = 
_fred;");
+        ct.extendMethod(CONTAINING_PAGE_DID_DETACH_SIGNATURE, "_fred = 
_$fredDefault;");
 
         replay();
 

Modified: 
tapestry/tapestry5/tapestry-core/trunk/src/test/resources/log4j.properties
URL: 
http://svn.apache.org/viewcvs/tapestry/tapestry5/tapestry-core/trunk/src/test/resources/log4j.properties?rev=396157&r1=396156&r2=396157&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/resources/log4j.properties 
(original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/resources/log4j.properties 
Sat Apr 22 13:15:32 2006
@@ -21,4 +21,4 @@
 log4j.appender.A1.layout=org.apache.log4j.PatternLayout
 log4j.appender.A1.layout.ConversionPattern=%c{1} [%p] %m%n
 
-log4j.category.org.apache.tapestry5=debug
+log4j.category.org.apache.tapestry=debug



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to