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 2005/06/07 19:41:40 UTC
cvs commit: jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance TestEnhancementOperation.java TestInjectMessagesWorker.java TestSpecifiedPropertyWorker.java TestInjectSpecificationWorker.java TestInjectScriptWorker.java TestInjectObjectWorker.java TestInjectStateWorker.java TestInjectMetaWorker.java
hlship 2005/06/07 10:41:40
Modified: . status.xml
framework/src/java/org/apache/tapestry/enhance
InjectSpecificationWorker.java
EnhancementOperation.java InjectStateWorker.java
InjectMetaWorker.java InjectObjectWorker.java
EnhancementOperationImpl.java
InjectScriptWorker.java
SpecifiedPropertyWorker.java
InjectMessagesWorker.java
framework/src/test/org/apache/tapestry/enhance
TestEnhancementOperation.java
TestInjectMessagesWorker.java
TestSpecifiedPropertyWorker.java
TestInjectSpecificationWorker.java
TestInjectScriptWorker.java
TestInjectObjectWorker.java
TestInjectStateWorker.java
TestInjectMetaWorker.java
Log:
TAPESTRY-335: Injection uses actual type of injected object, which may not be available (due to AOP, or due to use of JDK Proxies).
Revision Changes Path
1.116 +1 -0 jakarta-tapestry/status.xml
Index: status.xml
===================================================================
RCS file: /home/cvs/jakarta-tapestry/status.xml,v
retrieving revision 1.115
retrieving revision 1.116
diff -u -r1.115 -r1.116
--- status.xml 7 Jun 2005 14:22:08 -0000 1.115
+++ status.xml 7 Jun 2005 17:41:40 -0000 1.116
@@ -67,6 +67,7 @@
<action type="fix" dev="HLS">Properly identify when portal mode or window state has changed.</action>
<action type="add" dev="HLS">Add deprecated attribute to <component-specification> and <parameter>.</action>
<action type="add" dev="HLS">Add configuration property org.apache.tapestry.accepted-locales, used to limit localization to a finite set of locales.</action>
+ <action type="fix" dev="HLS" fixes-bug="TAPESTRY-335">Injection uses actual type of injected object, which may not be available (due to AOP, or due to use of JDK Proxies).</action>
</release>
<release version="4.0-alpha-3" date="May 16 2005">
<action type="add" dev="HLS">Add initial support for the validator: binding prefix.</action>
1.5 +4 -1 jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/InjectSpecificationWorker.java
Index: InjectSpecificationWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/InjectSpecificationWorker.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- InjectSpecificationWorker.java 16 May 2005 12:34:08 -0000 1.4
+++ InjectSpecificationWorker.java 7 Jun 2005 17:41:40 -0000 1.5
@@ -47,7 +47,10 @@
{
op.claimProperty(SPECIFICATION_PROPERTY_NAME);
- String fieldName = op.addInjectedField("_$" + SPECIFICATION_PROPERTY_NAME, spec);
+ String fieldName = op.addInjectedField(
+ "_$" + SPECIFICATION_PROPERTY_NAME,
+ IComponentSpecification.class,
+ spec);
EnhanceUtils.createSimpleAccessor(
op,
1.16 +3 -1 jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/EnhancementOperation.java
Index: EnhancementOperation.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/EnhancementOperation.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- EnhancementOperation.java 16 May 2005 12:34:08 -0000 1.15
+++ EnhancementOperation.java 7 Jun 2005 17:41:40 -0000 1.16
@@ -60,13 +60,15 @@
* @param fieldName
* The default name for the field, used if a new field (and contructor argument) is
* being created. Only used if a field for the value doesn't exist.
+ * @param fieldType
+ * The type of the field to be created.
* @param value
* the value to be referenced, which may not be null
* @return the name of the field containing the value. This may or may not match fieldName. The
* provided fieldName may be modified to prevent naming conflicts.
*/
- public String addInjectedField(String fieldName, Object value);
+ public String addInjectedField(String fieldName, Class fieldType, Object value);
/**
* Converts a type name (an object class name, a primtive name, or an array) into the
1.6 +1 -0 jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/InjectStateWorker.java
Index: InjectStateWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/InjectStateWorker.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- InjectStateWorker.java 16 May 2005 12:34:08 -0000 1.5
+++ InjectStateWorker.java 7 Jun 2005 17:41:40 -0000 1.6
@@ -52,6 +52,7 @@
String managerField = op.addInjectedField(
"_$applicationStateManager",
+ ApplicationStateManager.class,
_applicationStateManager);
BodyBuilder builder = new BodyBuilder();
1.3 +6 -2 jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/InjectMetaWorker.java
Index: InjectMetaWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/InjectMetaWorker.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- InjectMetaWorker.java 16 May 2005 12:34:08 -0000 1.2
+++ InjectMetaWorker.java 7 Jun 2005 17:41:40 -0000 1.3
@@ -59,7 +59,8 @@
op.claimProperty(propertyName);
- String sourceName = op.addInjectedField(SOURCE_NAME, _source);
+ String sourceName = op
+ .addInjectedField(SOURCE_NAME, ComponentPropertySource.class, _source);
MethodSignature sig = new MethodSignature(propertyType, op
.getAccessorMethodName(propertyName), null, null);
@@ -115,7 +116,10 @@
private void addObject(EnhancementOperation op, InjectSpecification spec, String propertyName,
Class propertyType, MethodSignature sig, String sourceName)
{
- String valueConverterName = op.addInjectedField("_$valueConverter", _valueConverter);
+ String valueConverterName = op.addInjectedField(
+ "_$valueConverter",
+ ValueConverter.class,
+ _valueConverter);
String classRef = op.getClassReference(propertyType);
BodyBuilder builder = new BodyBuilder();
1.3 +1 -1 jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/InjectObjectWorker.java
Index: InjectObjectWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/InjectObjectWorker.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- InjectObjectWorker.java 16 May 2005 12:34:08 -0000 1.2
+++ InjectObjectWorker.java 7 Jun 2005 17:41:40 -0000 1.3
@@ -57,7 +57,7 @@
injectedValue,
propertyType), is.getLocation(), null);
- op.addInjectedField(fieldName, injectedValue);
+ op.addInjectedField(fieldName, propertyType, injectedValue);
String methodName = EnhanceUtils.createAccessorMethodName(name);
1.20 +5 -7 jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/EnhancementOperationImpl.java
Index: EnhancementOperationImpl.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/EnhancementOperationImpl.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- EnhancementOperationImpl.java 16 May 2005 12:34:08 -0000 1.19
+++ EnhancementOperationImpl.java 7 Jun 2005 17:41:40 -0000 1.20
@@ -231,9 +231,10 @@
_classFab.addField(name, type);
}
- public String addInjectedField(String fieldName, Object value)
+ public String addInjectedField(String fieldName, Class fieldType, Object value)
{
Defense.notNull(fieldName, "fieldName");
+ Defense.notNull(fieldType, "fieldType");
Defense.notNull(value, "value");
String existing = (String) _finalFields.get(value);
@@ -244,9 +245,6 @@
return existing;
// TODO: Should be ensure that the name is unique?
- // Add a new field using the object's actual type.
-
- Class type = value.getClass();
// Make sure that the field has a unique name (at least, among anything added
// via addFinalField().
@@ -256,9 +254,9 @@
// ClassFab doesn't have an option for saying the field should be final, just private.
// Doesn't make a huge difference.
- _classFab.addField(uniqueName, type);
+ _classFab.addField(uniqueName, fieldType);
- int parameterIndex = addConstructorParameter(type, value);
+ int parameterIndex = addConstructorParameter(fieldType, value);
constructorBuilder().addln("{0} = ${1};", uniqueName, Integer.toString(parameterIndex));
@@ -371,7 +369,7 @@
String fieldName = buffer.toString();
- return addInjectedField(fieldName, clazz);
+ return addInjectedField(fieldName, Class.class, clazz);
}
/**
1.3 +1 -1 jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/InjectScriptWorker.java
Index: InjectScriptWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/InjectScriptWorker.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- InjectScriptWorker.java 16 May 2005 12:34:08 -0000 1.2
+++ InjectScriptWorker.java 7 Jun 2005 17:41:40 -0000 1.3
@@ -48,7 +48,7 @@
DeferredScript script = new DeferredScriptImpl(resource, _source, spec.getLocation());
- String fieldName = op.addInjectedField("_$script", script);
+ String fieldName = op.addInjectedField("_$script", IScript.class, script);
MethodSignature sig = new MethodSignature(propertyType, methodName, null, null);
1.12 +1 -1 jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/SpecifiedPropertyWorker.java
Index: SpecifiedPropertyWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/SpecifiedPropertyWorker.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- SpecifiedPropertyWorker.java 16 May 2005 12:34:08 -0000 1.11
+++ SpecifiedPropertyWorker.java 7 Jun 2005 17:41:40 -0000 1.12
@@ -131,7 +131,7 @@
InitialValueBindingCreator creator = new InitialValueBindingCreator(_bindingSource,
description, initialValue, location);
- String creatorField = op.addInjectedField(fieldName + "$initialValueBindingCreator", creator);
+ String creatorField = op.addInjectedField(fieldName + "$initialValueBindingCreator", InitialValueBindingCreator.class, creator);
String bindingField = fieldName + "$initialValueBinding";
op.addField(bindingField, IBinding.class);
1.5 +4 -1 jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/InjectMessagesWorker.java
Index: InjectMessagesWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/enhance/InjectMessagesWorker.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- InjectMessagesWorker.java 16 May 2005 12:34:08 -0000 1.4
+++ InjectMessagesWorker.java 7 Jun 2005 17:41:40 -0000 1.5
@@ -47,7 +47,10 @@
{
op.claimProperty(MESSAGES_PROPERTY);
- String sourceField = op.addInjectedField("_$componentMessagesSource", _componentMessagesSource);
+ String sourceField = op.addInjectedField(
+ "_$componentMessagesSource",
+ ComponentMessagesSource.class,
+ _componentMessagesSource);
op.addField("_$messages", Messages.class);
1.16 +4 -4 jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestEnhancementOperation.java
Index: TestEnhancementOperation.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestEnhancementOperation.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- TestEnhancementOperation.java 16 May 2005 12:34:08 -0000 1.15
+++ TestEnhancementOperation.java 7 Jun 2005 17:41:40 -0000 1.16
@@ -398,17 +398,17 @@
EnhancementOperationImpl eo = new EnhancementOperationImpl(new DefaultClassResolver(),
spec, BaseComponent.class, cf);
- assertEquals("fred", eo.addInjectedField("fred", "FRED_VALUE"));
+ assertEquals("fred", eo.addInjectedField("fred", String.class, "FRED_VALUE"));
verifyControls();
HashMap map = new HashMap();
- fab.addField("fred$0", HashMap.class);
+ fab.addField("fred$0", Map.class);
replayControls();
- assertEquals("fred$0", eo.addInjectedField("fred", map));
+ assertEquals("fred$0", eo.addInjectedField("fred", Map.class, map));
verifyControls();
@@ -419,7 +419,7 @@
body.end();
fab.addConstructor(new Class[]
- { String.class, HashMap.class }, null, body.toString());
+ { String.class, Map.class }, null, body.toString());
fabc.setMatcher(new ArrayMatcher());
replayControls();
1.5 +1 -1 jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestInjectMessagesWorker.java
Index: TestInjectMessagesWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestInjectMessagesWorker.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- TestInjectMessagesWorker.java 16 May 2005 12:34:08 -0000 1.4
+++ TestInjectMessagesWorker.java 7 Jun 2005 17:41:40 -0000 1.5
@@ -56,7 +56,7 @@
EnhancementOperation op = (EnhancementOperation) control.getMock();
op.claimProperty(w.MESSAGES_PROPERTY);
- op.addInjectedField("_$componentMessagesSource", source);
+ op.addInjectedField("_$componentMessagesSource", ComponentMessagesSource.class, source);
control.setReturnValue("fred");
BodyBuilder builder = new BodyBuilder();
1.12 +4 -3 jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestSpecifiedPropertyWorker.java
Index: TestSpecifiedPropertyWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestSpecifiedPropertyWorker.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- TestSpecifiedPropertyWorker.java 16 May 2005 12:34:08 -0000 1.11
+++ TestSpecifiedPropertyWorker.java 7 Jun 2005 17:41:40 -0000 1.12
@@ -183,9 +183,10 @@
op.addMethod(Modifier.PUBLIC, new MethodSignature(void.class, "setFred", new Class[]
{ List.class }, null), "{\n _$fred = $1;\n}\n");
- op.addInjectedField("_$fred$initialValueBindingCreator",
-
- expectedCreator);
+ op.addInjectedField(
+ "_$fred$initialValueBindingCreator",
+ InitialValueBindingCreator.class,
+ expectedCreator);
opc.setReturnValue("_$fred$initialValueBindingCreator");
op.addField("_$fred$initialValueBinding", IBinding.class);
op
1.5 +1 -1 jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestInjectSpecificationWorker.java
Index: TestInjectSpecificationWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestInjectSpecificationWorker.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- TestInjectSpecificationWorker.java 16 May 2005 12:34:08 -0000 1.4
+++ TestInjectSpecificationWorker.java 7 Jun 2005 17:41:40 -0000 1.5
@@ -47,7 +47,7 @@
op.claimProperty("specification");
- op.addInjectedField("_$specification", spec);
+ op.addInjectedField("_$specification", IComponentSpecification.class, spec);
control.setReturnValue("_$specification");
op.getAccessorMethodName("specification");
1.3 +3 -4 jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestInjectScriptWorker.java
Index: TestInjectScriptWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestInjectScriptWorker.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- TestInjectScriptWorker.java 16 May 2005 12:34:08 -0000 1.2
+++ TestInjectScriptWorker.java 7 Jun 2005 17:41:40 -0000 1.3
@@ -22,7 +22,6 @@
import org.apache.hivemind.test.AggregateArgumentsMatcher;
import org.apache.hivemind.test.ArgumentMatcher;
import org.apache.hivemind.test.HiveMindTestCase;
-import org.apache.hivemind.test.TypeMatcher;
import org.apache.tapestry.IScript;
import org.apache.tapestry.engine.IScriptSource;
import org.apache.tapestry.spec.InjectSpecificationImpl;
@@ -57,10 +56,10 @@
op.getAccessorMethodName("foo");
opc.setReturnValue("getFoo");
- op.addInjectedField("_$script", new DeferredScriptImpl(scriptResource, source,
- injectSpecLocation));
+ op.addInjectedField("_$script", IScript.class, new DeferredScriptImpl(scriptResource,
+ source, injectSpecLocation));
opc.setMatcher(new AggregateArgumentsMatcher(new ArgumentMatcher[]
- { null, new ArgumentMatcher()
+ { null, null, new ArgumentMatcher()
{
public boolean compareArguments(Object expected, Object actual)
1.3 +2 -2 jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestInjectObjectWorker.java
Index: TestInjectObjectWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestInjectObjectWorker.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- TestInjectObjectWorker.java 16 May 2005 12:34:08 -0000 1.2
+++ TestInjectObjectWorker.java 7 Jun 2005 17:41:40 -0000 1.3
@@ -68,7 +68,7 @@
pc.setReturnValue(injectedValue);
- op.addInjectedField("_$fred", injectedValue);
+ op.addInjectedField("_$fred", Object.class, injectedValue);
opc.setReturnValue("_$fred");
op.addMethod(
@@ -107,7 +107,7 @@
p.obtainValue("service:betty", l);
pc.setReturnValue(injectedValue);
- op.addInjectedField("_$wilma", injectedValue);
+ op.addInjectedField("_$wilma", IEngineService.class, injectedValue);
opc.setReturnValue("_$wilma");
op.addMethod(Modifier.PUBLIC, new MethodSignature(IEngineService.class, "getWilma", null,
1.6 +1 -1 jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestInjectStateWorker.java
Index: TestInjectStateWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestInjectStateWorker.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- TestInjectStateWorker.java 16 May 2005 12:34:08 -0000 1.5
+++ TestInjectStateWorker.java 7 Jun 2005 17:41:40 -0000 1.6
@@ -65,7 +65,7 @@
op.claimProperty("fred");
op.addField("_$fred", Map.class);
- op.addInjectedField("_$applicationStateManager", asm);
+ op.addInjectedField("_$applicationStateManager", ApplicationStateManager.class, asm);
opc.setReturnValue("_$applicationStateManager");
op.getAccessorMethodName("fred");
1.3 +4 -4 jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestInjectMetaWorker.java
Index: TestInjectMetaWorker.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/enhance/TestInjectMetaWorker.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- TestInjectMetaWorker.java 16 May 2005 12:34:08 -0000 1.2
+++ TestInjectMetaWorker.java 7 Jun 2005 17:41:40 -0000 1.3
@@ -64,7 +64,7 @@
MethodSignature sig = new MethodSignature(int.class, "getFooBar", null, null);
- op.addInjectedField(InjectMetaWorker.SOURCE_NAME, source);
+ op.addInjectedField(InjectMetaWorker.SOURCE_NAME, ComponentPropertySource.class, source);
control.setReturnValue("_source");
op.getAccessorMethodName("fooBar");
@@ -105,7 +105,7 @@
MethodSignature sig = new MethodSignature(char.class, "getFooBar", null, null);
- op.addInjectedField(InjectMetaWorker.SOURCE_NAME, source);
+ op.addInjectedField(InjectMetaWorker.SOURCE_NAME, ComponentPropertySource.class, source);
control.setReturnValue("_source");
op.getAccessorMethodName("fooBar");
@@ -147,13 +147,13 @@
MethodSignature sig = new MethodSignature(Object.class, "getFooBar", null, null);
- op.addInjectedField(InjectMetaWorker.SOURCE_NAME, source);
+ op.addInjectedField(InjectMetaWorker.SOURCE_NAME, ComponentPropertySource.class, source);
control.setReturnValue("_source");
op.getAccessorMethodName("fooBar");
control.setReturnValue("getFooBar");
- op.addInjectedField("_$valueConverter", converter);
+ op.addInjectedField("_$valueConverter", ValueConverter.class, converter);
control.setReturnValue("vc");
op.getClassReference(Object.class);
---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org