Author: hlship
Date: Fri Dec 1 15:15:26 2006
New Revision: 481443
URL: http://svn.apache.org/viewvc?view=rev&rev=481443
Log:
Fix a bug with the OnEvent annotation where incorrect Javassist code would be
generated for non-primitive types (omitting a necessary cast).
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/OnEventWorker.java
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/OnEventWorkerTest.java
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/OnEventWorker.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/OnEventWorker.java?view=diff&rev=481443&r1=481442&r2=481443
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/OnEventWorker.java
(original)
+++
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/OnEventWorker.java
Fri Dec 1 15:15:26 2006
@@ -152,7 +152,13 @@
// Add a cast to the wrapper type up front
if (isPrimitive)
- builder.add("((%s)", wrapperType);
+ builder.add("(");
+
+ // A cast is always needed (i.e. from java.lang.Object to, say,
java.lang.String, etc.).
+ // The wrapper type will be the actual type unless its a
primitive, in which case it
+ // really will be the wrapper type.
+
+ builder.add("(%s)", wrapperType);
// The strings for desired type name will likely repeat a bit; it
may be
// worth it to inject them as final fields. Could increase the
number
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/OnEventWorkerTest.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/OnEventWorkerTest.java?view=diff&rev=481443&r1=481442&r2=481443
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/OnEventWorkerTest.java
(original)
+++
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/OnEventWorkerTest.java
Fri Dec 1 15:15:26 2006
@@ -303,7 +303,7 @@
BOILERPLATE_1,
BOILERPLATE_2,
"$1.setSource(this, \"foo.Bar.foo(java.lang.String)\");",
- "foo($1.coerceContext(0, \"java.lang.String\"));",
+ "foo((java.lang.String)$1.coerceContext(0,
\"java.lang.String\"));",
"}");
replay();
@@ -380,8 +380,8 @@
BOILERPLATE_1,
BOILERPLATE_2,
"$1.setSource(this, \"foo.Bar.foo(java.lang.String,
java.lang.Integer)\");",
- "foo($1.coerceContext(0, \"java.lang.String\"), ",
- "$1.coerceContext(1, \"java.lang.Integer\"));",
+ "foo((java.lang.String)$1.coerceContext(0,
\"java.lang.String\"), ",
+ "(java.lang.Integer)$1.coerceContext(1,
\"java.lang.Integer\"));",
"}");
replay();
@@ -422,9 +422,9 @@
BOILERPLATE_1,
BOILERPLATE_2,
format("$1.setSource(this, \"foo.Bar.%s\");",
signature.getMediumDescription()),
- "foo($1.coerceContext(0, \"java.lang.String\"), ",
+ "foo((java.lang.String)$1.coerceContext(0,
\"java.lang.String\"), ",
"$1.getContext(), ",
- "$1.coerceContext(1, \"java.lang.Integer\"));",
+ "(java.lang.Integer)$1.coerceContext(1,
\"java.lang.Integer\"));",
"}");
replay();