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]