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/02/19 19:54:29 UTC
svn commit: r911931 [3/3] - in /tapestry/tapestry5/trunk: src/site/apt/
tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/
tapestry-core/src/main/java/org/apache/tapestry5/internal/services/
tapestry-core/src/main/java/org/apache/tape...
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java?rev=911931&r1=911930&r2=911931&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java Fri Feb 19 18:54:27 2010
@@ -14,16 +14,17 @@
package org.apache.tapestry5.integration.app1.pages;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
import org.apache.tapestry5.ComponentResources;
import org.apache.tapestry5.Link;
import org.apache.tapestry5.annotations.InjectPage;
+import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
/**
* Have to start somewhere!
*/
@@ -469,6 +470,7 @@
Collections.sort(ITEMS);
}
+ @Property
private Item item;
@InjectPage
@@ -482,16 +484,6 @@
return ITEMS;
}
- public Item getItem()
- {
- return item;
- }
-
- public void setItem(Item item)
- {
- this.item = item;
- }
-
Object onActionFromSecurePage()
{
return securePage.initialize("Triggered from Index");
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/services/LocaleAppModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/services/LocaleAppModule.java?rev=911931&r1=911930&r2=911931&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/services/LocaleAppModule.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/services/LocaleAppModule.java Fri Feb 19 18:54:27 2010
@@ -14,15 +14,8 @@
package org.apache.tapestry5.integration.app2.services;
-import org.apache.tapestry5.integration.app2.FortyTwo;
-import org.apache.tapestry5.integration.app2.PlusOne;
-import org.apache.tapestry5.ioc.MappedConfiguration;
-import org.apache.tapestry5.ioc.OrderedConfiguration;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.ComponentClassTransformWorker;
-import org.apache.tapestry5.services.TransformMethodSignature;
import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.ioc.MappedConfiguration;
public class LocaleAppModule
{
@@ -30,35 +23,4 @@
{
configuration.add(SymbolConstants.SUPPORTED_LOCALES, "en,fr,de");
}
-
- public static void contributeComponentClassTransformWorker(
- OrderedConfiguration<ComponentClassTransformWorker> configuration)
- {
- configuration.add("FortyTwo", new FortyTwoWorker());
- configuration.add("PlusOne", new PlusOneWorker());
- }
-
- private static final class FortyTwoWorker implements ComponentClassTransformWorker
- {
-
- public void transform(ClassTransformation transformation, MutableComponentModel model)
- {
- for (TransformMethodSignature sig : transformation.findMethodsWithAnnotation(FortyTwo.class))
- {
- transformation.prefixMethod(sig, "return 42;");
- }
- }
-
- }
-
- private static final class PlusOneWorker implements ComponentClassTransformWorker
- {
- public void transform(ClassTransformation transformation, MutableComponentModel model)
- {
- for (TransformMethodSignature method : transformation.findMethodsWithAnnotation(PlusOne.class))
- {
- transformation.extendExistingMethod(method, "return $_ + 1;");
- }
- }
- }
}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImplTest.java?rev=911931&r1=911930&r2=911931&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImplTest.java Fri Feb 19 18:54:27 2010
@@ -99,56 +99,7 @@
verify();
}
-
- /**
- * More of an integration test.
- */
- @Test
- public void load_component_via_service() throws Exception
- {
- Component target = createComponent(BasicComponent.class);
-
- // Should not be an instance, since it is loaded by a different class loader.
- assertFalse(BasicComponent.class.isInstance(target));
-
- access.set(target, "value", "some default value");
- assertEquals(access.get(target, "value"), "some default value");
-
- access.set(target, "retainedValue", "some retained value");
- assertEquals(access.get(target, "retainedValue"), "some retained value");
-
- // Setting a property value before pageDidLoad will cause that value
- // to be the default when the page detaches.
-
- target.containingPageDidLoad();
-
- access.set(target, "value", "some transient value");
- assertEquals(access.get(target, "value"), "some transient value");
-
- target.containingPageDidDetach();
-
- assertEquals(access.get(target, "value"), "some default value");
- assertEquals(access.get(target, "retainedValue"), "some retained value");
- }
-
- @Test
- public void load_sub_component_via_service() throws Exception
- {
- Component target = createComponent(BasicSubComponent.class);
-
- target.containingPageDidLoad();
-
- access.set(target, "value", "base class");
- assertEquals(access.get(target, "value"), "base class");
-
- access.set(target, "intValue", 33);
- assertEquals(access.get(target, "intValue"), 33);
-
- target.containingPageDidDetach();
-
- assertNull(access.get(target, "value"));
- assertEquals(access.get(target, "intValue"), 0);
- }
+
/**
* This allows tests the exists() method.
@@ -166,6 +117,8 @@
assertTrue(source.exists(SYNTH_COMPONENT_CLASSNAME));
+ getMocksControl().resetToNice();
+
Named named = (Named) createComponent(SYNTH_COMPONENT_CLASSNAME);
assertEquals(named.getName(), "Original");
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/InternalClassTransformationImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/InternalClassTransformationImplTest.java?rev=911931&r1=911930&r2=911931&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/InternalClassTransformationImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/InternalClassTransformationImplTest.java Fri Feb 19 18:54:27 2010
@@ -127,8 +127,7 @@
classSource = new CtClassSourceImpl(classFactoryClassPool, loader);
}
- private Object transform(Class componentClass, ComponentClassTransformWorker worker)
- throws Exception
+ private Object transform(Class componentClass, ComponentClassTransformWorker worker) throws Exception
{
InternalComponentResources resources = mockInternalComponentResources();
@@ -139,8 +138,8 @@
replay();
- InternalClassTransformation ct = new InternalClassTransformationImpl(classFactory,
- targetObjectCtClass, new ComponentClassCacheImpl(classFactory), model, classSource);
+ InternalClassTransformation ct = new InternalClassTransformationImpl(classFactory, targetObjectCtClass,
+ new ComponentClassCacheImpl(classFactory, null), model, classSource);
worker.transform(ct, model);
@@ -253,8 +252,7 @@
}
catch (RuntimeException ex)
{
- assertEquals(
- ex.getMessage(),
+ assertEquals(ex.getMessage(),
"Class org.apache.tapestry5.internal.transform.pages.ParentClass does not contain a field named 'unknownField'.");
}
@@ -445,8 +443,7 @@
replay();
- ClassTransformation ct = createClassTransformation(ChildClassInheritsAnnotation.class,
- logger);
+ ClassTransformation ct = createClassTransformation(ChildClassInheritsAnnotation.class, logger);
InheritedAnnotation ia = ct.getAnnotation(InheritedAnnotation.class);
@@ -465,8 +462,7 @@
replay();
- ClassTransformation ct = createClassTransformation(ChildClassInheritsAnnotation.class,
- logger);
+ ClassTransformation ct = createClassTransformation(ChildClassInheritsAnnotation.class, logger);
Meta meta = ct.getAnnotation(Meta.class);
@@ -503,8 +499,7 @@
}
@Test
- public void ensure_javassist_does_not_show_interface_methods_on_abstract_class()
- throws Exception
+ public void ensure_javassist_does_not_show_interface_methods_on_abstract_class() throws Exception
{
CtClass ctClass = findCtClass(AbstractFoo.class);
@@ -524,8 +519,7 @@
}
@Test
- public void ensure_javassist_does_not_show_extended_interface_methods_on_interface()
- throws Exception
+ public void ensure_javassist_does_not_show_extended_interface_methods_on_interface() throws Exception
{
CtClass ctClass = findCtClass(FooBarInterface.class);
@@ -548,23 +542,20 @@
{
transformation.addImplementedInterface(Runnable.class);
- TransformMethodSignature targetMethodSignature = new TransformMethodSignature(
- "publicVoidNoArgs");
- TransformMethod pvna = transformation.getMethod(targetMethodSignature);
+ TransformMethodSignature targetMethodSignature = new TransformMethodSignature("publicVoidNoArgs");
+ TransformMethod pvna = transformation.getOrCreateMethod(targetMethodSignature);
final MethodAccess pvnaAccess = pvna.getAccess();
- transformation.getMethod(RUN).addAdvice(new ComponentMethodAdvice()
+ transformation.getOrCreateMethod(RUN).addAdvice(new ComponentMethodAdvice()
{
public void advise(ComponentMethodInvocation invocation)
{
invocation.proceed();
- MethodInvocationResult invocationResult = pvnaAccess.invoke(invocation
- .getInstance());
+ MethodInvocationResult invocationResult = pvnaAccess.invoke(invocation.getInstance());
- assertFalse(invocationResult.isFail(),
- "fail should be false, no checked exception thrown");
+ assertFalse(invocationResult.isFail(), "fail should be false, no checked exception thrown");
}
});
}
@@ -586,24 +577,22 @@
{
transformation.addImplementedInterface(Runnable.class);
- TransformMethodSignature targetMethodSignature = new TransformMethodSignature(
- Modifier.PUBLIC, "void", "publicVoidThrowsException", null, new String[]
+ TransformMethodSignature targetMethodSignature = new TransformMethodSignature(Modifier.PUBLIC, "void",
+ "publicVoidThrowsException", null, new String[]
{ SQLException.class.getName() });
- TransformMethod targetMethod = transformation.getMethod(targetMethodSignature);
+ TransformMethod targetMethod = transformation.getOrCreateMethod(targetMethodSignature);
final MethodAccess targetAccess = targetMethod.getAccess();
- transformation.getMethod(RUN).addAdvice(new ComponentMethodAdvice()
+ transformation.getOrCreateMethod(RUN).addAdvice(new ComponentMethodAdvice()
{
public void advise(ComponentMethodInvocation invocation)
{
invocation.proceed();
- MethodInvocationResult invocationResult = targetAccess.invoke(invocation
- .getInstance());
+ MethodInvocationResult invocationResult = targetAccess.invoke(invocation.getInstance());
- assertTrue(invocationResult.isFail(),
- "fail should be true; checked exception thrown");
+ assertTrue(invocationResult.isFail(), "fail should be true; checked exception thrown");
SQLException ex = invocationResult.getThrown(SQLException.class);
@@ -635,18 +624,17 @@
{
transformation.addImplementedInterface(ProcessInteger.class);
- TransformMethod incrementer = transformation
- .getMethod(new TransformMethodSignature(Modifier.PUBLIC, "int",
- "incrementer", new String[]
- { "int" }, null));
+ TransformMethod incrementer = transformation.getOrCreateMethod(new TransformMethodSignature(
+ Modifier.PUBLIC, "int", "incrementer", new String[]
+ { "int" }, null));
final MethodAccess incrementerAccess = incrementer.getAccess();
- TransformMethodSignature operateSig = new TransformMethodSignature(Modifier.PUBLIC,
- "int", "operate", new String[]
+ TransformMethodSignature operateSig = new TransformMethodSignature(Modifier.PUBLIC, "int", "operate",
+ new String[]
{ "int" }, null);
- TransformMethod operate = transformation.getMethod(operateSig);
+ TransformMethod operate = transformation.getOrCreateMethod(operateSig);
operate.addAdvice(new ComponentMethodAdvice()
{
@@ -661,8 +649,7 @@
Integer parameter = (Integer) invocation.getParameter(0);
- MethodInvocationResult result = incrementerAccess.invoke(invocation
- .getInstance(), parameter);
+ MethodInvocationResult result = incrementerAccess.invoke(invocation.getInstance(), parameter);
invocation.overrideResult(result.getReturnValue());
}
@@ -691,18 +678,17 @@
{
transformation.addImplementedInterface(ProcessStringAndInteger.class);
- TransformMethod targetMethod = transformation
- .getMethod(new TransformMethodSignature(Modifier.PRIVATE,
- "java.lang.String", "privateMethod", new String[]
- { "java.lang.String", "int" }, null));
+ TransformMethod targetMethod = transformation.getOrCreateMethod(new TransformMethodSignature(
+ Modifier.PRIVATE, "java.lang.String", "privateMethod", new String[]
+ { "java.lang.String", "int" }, null));
final MethodAccess targetMethodAccess = targetMethod.getAccess();
- TransformMethodSignature processSig = new TransformMethodSignature(Modifier.PUBLIC,
- "java.lang.String", "process", new String[]
+ TransformMethodSignature processSig = new TransformMethodSignature(Modifier.PUBLIC, "java.lang.String",
+ "process", new String[]
{ "java.lang.String", "int" }, null);
- TransformMethod process = transformation.getMethod(processSig);
+ TransformMethod process = transformation.getOrCreateMethod(processSig);
process.addAdvice(new ComponentMethodAdvice()
{
@@ -711,9 +697,8 @@
// Don't even bother with proceed() this time, which is OK (but
// somewhat rare).
- MethodInvocationResult result = targetMethodAccess.invoke(invocation
- .getInstance(), invocation.getParameter(0), invocation
- .getParameter(1));
+ MethodInvocationResult result = targetMethodAccess.invoke(invocation.getInstance(), invocation
+ .getParameter(0), invocation.getParameter(1));
invocation.overrideResult(result.getReturnValue());
}
@@ -740,8 +725,8 @@
replay();
- InternalClassTransformation ct = new InternalClassTransformationImpl(classFactory,
- targetObjectCtClass, null, model, null);
+ InternalClassTransformation ct = new InternalClassTransformationImpl(classFactory, targetObjectCtClass, null,
+ model, null);
// Default behavior is to add an injected field for the InternalComponentResources object,
// so we'll just check that.
@@ -758,111 +743,6 @@
}
@Test
- public void add_injected_field_from_parent_transformation() throws Exception
- {
- final String value = "from the parent";
-
- InternalComponentResources resources = mockInternalComponentResources();
-
- CtClass targetObjectCtClass = findCtClass(TargetObject.class);
-
- Logger logger = mockLogger();
- MutableComponentModel model = mockMutableComponentModel();
-
- train_getLogger(model, logger);
-
- replay();
-
- InternalClassTransformation ct = new InternalClassTransformationImpl(classFactory,
- targetObjectCtClass, null, model, null);
-
- String parentFieldName = ct.addInjectedField(String.class, "_value", value);
-
- // Default behavior is to add an injected field for the InternalComponentResources object,
- // so we'll just check that.
-
- ct.finish();
-
- // Now lets work on the subclass
-
- CtClass subclassCtClass = findCtClass(TargetObjectSubclass.class);
-
- ct = ct.createChildTransformation(subclassCtClass, model);
-
- String subclassFieldName = ct.addInjectedField(String.class, "_childValue", value);
-
- // This is what proves it is cached.
-
- assertEquals(subclassFieldName, parentFieldName);
-
- // This proves the the field is protected and can be used in subclasses.
-
- ct.addMethod(new TransformMethodSignature(Modifier.PUBLIC, "java.lang.String", "getValue",
- null, null), "return " + subclassFieldName + ";");
-
- ct.finish();
-
- Instantiator instantiator = ct.createInstantiator();
-
- Object instance = instantiator.newInstance(resources);
-
- Object actual = access.get(instance, "value");
-
- assertSame(actual, value);
-
- verify();
- }
-
- @Test
- public void add_interface_to_class() throws Exception
- {
- InternalComponentResources resources = mockInternalComponentResources();
-
- CtClass targetObjectCtClass = findCtClass(TargetObject.class);
-
- Logger logger = mockLogger();
- MutableComponentModel model = mockMutableComponentModel(logger);
-
- replay();
-
- InternalClassTransformation ct = new InternalClassTransformationImpl(classFactory,
- targetObjectCtClass, null, model, null);
-
- ct.addImplementedInterface(FooInterface.class);
- ct.addImplementedInterface(GetterMethodsInterface.class);
-
- ct.finish();
-
- Class transformed = toClass(targetObjectCtClass);
-
- Class[] interfaces = transformed.getInterfaces();
-
- assertEquals(interfaces, new Class[]
- { Component.class, FooInterface.class, GetterMethodsInterface.class });
-
- Object target = ct.createInstantiator().newInstance(resources);
-
- FooInterface asFoo = (FooInterface) target;
-
- asFoo.foo();
-
- GetterMethodsInterface getters = (GetterMethodsInterface) target;
-
- assertEquals(getters.getBoolean(), false);
- assertEquals(getters.getByte(), (byte) 0);
- assertEquals(getters.getShort(), (short) 0);
- assertEquals(getters.getInt(), 0);
- assertEquals(getters.getLong(), 0l);
- assertEquals(getters.getFloat(), 0.0f);
- assertEquals(getters.getDouble(), 0.0d);
- assertNull(getters.getString());
- assertNull(getters.getObjectArray());
- assertNull(getters.getIntArray());
-
- verify();
- }
-
- @Test
public void make_field_read_only() throws Exception
{
InternalComponentResources resources = mockInternalComponentResources();
@@ -874,8 +754,8 @@
CtClass targetObjectCtClass = findCtClass(ReadOnlyBean.class);
- InternalClassTransformation ct = new InternalClassTransformationImpl(classFactory,
- targetObjectCtClass, null, model, null);
+ InternalClassTransformation ct = new InternalClassTransformationImpl(classFactory, targetObjectCtClass, null,
+ model, null);
ct.makeReadOnly("_value");
@@ -900,52 +780,6 @@
}
@Test
- public void removed_fields_should_not_show_up_as_unclaimed() throws Exception
- {
- Logger logger = mockLogger();
- MutableComponentModel model = mockMutableComponentModel(logger);
-
- replay();
-
- CtClass targetObjectCtClass = findCtClass(RemoveFieldBean.class);
-
- InternalClassTransformation ct = new InternalClassTransformationImpl(null,
- targetObjectCtClass, null, model, null);
-
- ct.removeField("_barney");
-
- assertEquals(ct.findUnclaimedFields(), asList("_fred"));
-
- verify();
- }
-
- @Test
- public void add_to_constructor() throws Exception
- {
- InternalComponentResources resources = mockInternalComponentResources();
-
- Logger logger = mockLogger();
- MutableComponentModel model = mockMutableComponentModel(logger);
-
- replay();
-
- CtClass targetObjectCtClass = findCtClass(ReadOnlyBean.class);
-
- InternalClassTransformation ct = new InternalClassTransformationImpl(classFactory,
- targetObjectCtClass, null, model, null);
-
- ct.extendConstructor("_value = \"from constructor\";");
-
- ct.finish();
-
- Object target = instantiate(ReadOnlyBean.class, ct, resources);
-
- assertEquals(access.get(target, "value"), "from constructor");
-
- verify();
- }
-
- @Test
public void inject_field() throws Exception
{
InternalComponentResources resources = mockInternalComponentResources();
@@ -957,8 +791,8 @@
CtClass targetObjectCtClass = findCtClass(ReadOnlyBean.class);
- InternalClassTransformation ct = new InternalClassTransformationImpl(classFactory,
- targetObjectCtClass, null, model, null);
+ InternalClassTransformation ct = new InternalClassTransformationImpl(classFactory, targetObjectCtClass, null,
+ model, null);
ct.injectField("_value", "Tapestry");
@@ -1000,8 +834,8 @@
CtClass targetObjectCtClass = findCtClass(FieldAccessBean.class);
- InternalClassTransformation ct = new InternalClassTransformationImpl(classFactory,
- targetObjectCtClass, null, model, null);
+ InternalClassTransformation ct = new InternalClassTransformationImpl(classFactory, targetObjectCtClass, null,
+ model, null);
replaceAccessToField(ct, "foo");
replaceAccessToField(ct, "bar");
@@ -1052,21 +886,19 @@
String fieldName = "_" + baseName;
String readMethodName = "_read_" + baseName;
- TransformMethodSignature readMethodSignature = new TransformMethodSignature(
- Modifier.PRIVATE, STRING_CLASS_NAME, readMethodName, null, null);
+ TransformMethodSignature readMethodSignature = new TransformMethodSignature(Modifier.PRIVATE,
+ STRING_CLASS_NAME, readMethodName, null, null);
- ct.addMethod(readMethodSignature, String.format("throw new RuntimeException(\"read %s\");",
- baseName));
+ ct.addNewMethod(readMethodSignature, String.format("throw new RuntimeException(\"read %s\");", baseName));
ct.replaceReadAccess(fieldName, readMethodName);
String writeMethodName = "_write_" + baseName;
- TransformMethodSignature writeMethodSignature = new TransformMethodSignature(
- Modifier.PRIVATE, "void", writeMethodName, new String[]
+ TransformMethodSignature writeMethodSignature = new TransformMethodSignature(Modifier.PRIVATE, "void",
+ writeMethodName, new String[]
{ STRING_CLASS_NAME }, null);
- ct.addMethod(writeMethodSignature, String.format(
- "throw new RuntimeException(\"write %s\");", baseName));
+ ct.addNewMethod(writeMethodSignature, String.format("throw new RuntimeException(\"write %s\");", baseName));
ct.replaceWriteAccess(fieldName, writeMethodName);
}
@@ -1181,8 +1013,8 @@
}
catch (RuntimeException ex)
{
- assertMessageContains(ex, "Class " + VisibilityBean.class.getName()
- + " contains field(s)", "_$myPackagePrivate", "_$myProtected", "_$myPublic");
+ assertMessageContains(ex, "Class " + VisibilityBean.class.getName() + " contains field(s)",
+ "_$myPackagePrivate", "_$myProtected", "_$myPublic");
}
verify();
@@ -1197,8 +1029,7 @@
ClassTransformation ct = createClassTransformation(EventHandlerTarget.class, logger);
- OnEvent annotation = ct.getMethodAnnotation(new TransformMethodSignature("handler"),
- OnEvent.class);
+ OnEvent annotation = ct.getMethodAnnotation(new TransformMethodSignature("handler"), OnEvent.class);
// Check that the attributes of the annotation match the expectation.
@@ -1207,99 +1038,8 @@
verify();
}
-
- @Test
- public void find_annotation_in_unknown_method() throws Exception
- {
- Logger logger = mockLogger();
-
- replay();
-
- ClassTransformation ct = createClassTransformation(ParentClass.class, logger);
-
- try
- {
- ct.getMethodAnnotation(new TransformMethodSignature("foo"), OnEvent.class);
- unreachable();
- }
- catch (IllegalArgumentException ex)
- {
- assertEquals(
- ex.getMessage(),
- "Class org.apache.tapestry5.internal.transform.pages.ParentClass does not declare method 'public void foo()'.");
- }
-
- verify();
- }
-
- @Test
- public void prefix_method() throws Exception
- {
- Logger logger = mockLogger();
- TransformMethodSignature sig = new TransformMethodSignature(Modifier.PUBLIC, "int",
- "getParentField", null, null);
-
- replay();
-
- InternalClassTransformation ct = createClassTransformation(ParentClass.class, logger);
- ct.prefixMethod(sig, "return 42;");
-
- String desc = ct.toString();
- assertTrue(desc.contains("prefix"));
- assertTrue(desc.contains("getParentField"));
-
- // fail if frozen
- ct.finish();
- try
- {
- ct.prefixMethod(sig, "return 0;");
- unreachable();
- }
- catch (IllegalStateException e)
- {
- }
-
- verify();
- }
-
- @Test
- public void fields_in_prefixed_methods_are_transformed() throws Exception
- {
- Logger logger = mockLogger();
- TransformMethodSignature sig = new TransformMethodSignature(Modifier.PUBLIC, "int",
- "getTargetValue", null, null);
- Runnable runnable = mockRunnable();
-
- runnable.run();
-
- replay();
-
- InternalClassTransformation ct = createClassTransformation(MethodPrefixTarget.class, logger);
-
- String name = ct.addInjectedField(Runnable.class, "runnable", runnable);
-
- // Transform the field.
-
- TransformMethodSignature reader = new TransformMethodSignature(Modifier.PRIVATE, "int",
- "read_target_value", null, null);
-
- ct.addMethod(reader, "return 66;");
-
- ct.replaceReadAccess("_targetField", "read_target_value");
-
- ct.prefixMethod(sig, name + ".run();");
-
- ct.finish();
-
- Object target = instantiate(MethodPrefixTarget.class, ct, null);
-
- // 66 reflects the change to the field.
-
- assertEquals(access.get(target, "targetValue"), 66);
-
- verify();
- }
-
+
+
private Component instantiate(Class<?> expectedClass, InternalClassTransformation ct,
InternalComponentResources resources) throws Exception
{
@@ -1308,102 +1048,8 @@
return ins.newInstance(resources);
}
- @Test
- public void extend_existing_method_fields_are_transformed() throws Exception
- {
- Logger logger = mockLogger();
- TransformMethodSignature sig = new TransformMethodSignature(Modifier.PUBLIC, "int",
- "getTargetValue", null, null);
- Runnable runnable = mockRunnable();
-
- runnable.run();
-
- replay();
-
- InternalClassTransformation ct = createClassTransformation(MethodPrefixTarget.class, logger);
-
- String name = ct.addInjectedField(Runnable.class, "runnable", runnable);
-
- // Transform the field.
-
- TransformMethodSignature reader = new TransformMethodSignature(Modifier.PRIVATE, "int",
- "read_target_value", null, null);
-
- ct.addMethod(reader, "return 66;");
-
- ct.replaceReadAccess("_targetField", "read_target_value");
-
- BodyBuilder builder = new BodyBuilder();
- builder.begin();
- builder.addln("%s.run();", name);
- builder.addln("return $_ + 1;");
- builder.end();
-
- ct.extendExistingMethod(sig, builder.toString());
-
- ct.finish();
-
- Object target = instantiate(MethodPrefixTarget.class, ct, null);
-
- // 66 reflects the change to the field, +1 reflects the extension of the method.
-
- assertEquals(access.get(target, "targetValue"), 67);
-
- verify();
- }
-
- @Test
- public void invalid_code() throws Exception
- {
- Logger logger = mockLogger();
- TransformMethodSignature sig = new TransformMethodSignature(Modifier.PUBLIC, "int",
- "getParentField", null, null);
-
- replay();
-
- InternalClassTransformation ct = createClassTransformation(ParentClass.class, logger);
-
- try
- {
- ct.prefixMethod(sig, "return supercalafragalistic;");
- unreachable();
- }
- catch (MethodCompileException ex)
- {
-
- }
-
- verify();
- }
-
- @Test
- public void remove_field() throws Exception
- {
- Logger logger = mockLogger();
- MutableComponentModel model = mockMutableComponentModel(logger);
-
- replay();
-
- CtClass targetObjectCtClass = findCtClass(FieldRemoval.class);
-
- InternalClassTransformation ct = new InternalClassTransformationImpl(classFactory,
- targetObjectCtClass, null, model, null);
-
- ct.removeField("_fieldToRemove");
-
- ct.finish();
-
- Class transformed = toClass(targetObjectCtClass);
-
- for (Field f : transformed.getDeclaredFields())
- {
- if (f.getName().equals("_fieldToRemove"))
- throw new AssertionError("_fieldToRemove still in transformed class.");
- }
-
- verify();
- }
+
@Test
public void get_method_identifier() throws Exception
{
@@ -1489,8 +1135,7 @@
replay();
- InternalClassTransformation parentTransform = createClassTransformation(SimpleBean.class,
- logger);
+ InternalClassTransformation parentTransform = createClassTransformation(SimpleBean.class, logger);
parentTransform.finish();
@@ -1501,8 +1146,8 @@
assertFalse(childTransform.isMethodOverride(new TransformMethodSignature("notOverridden")));
- assertTrue(childTransform.isMethodOverride(new TransformMethodSignature(Modifier.PUBLIC,
- "void", "setAge", new String[]
+ assertTrue(childTransform.isMethodOverride(new TransformMethodSignature(Modifier.PUBLIC, "void", "setAge",
+ new String[]
{ "int" }, null)));
}