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 2006/12/02 00:15:28 UTC

svn commit: r481443 - in /tapestry/tapestry5/tapestry-core/trunk/src: main/java/org/apache/tapestry/internal/services/OnEventWorker.java test/java/org/apache/tapestry/internal/services/OnEventWorkerTest.java

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();