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 2011/04/14 00:23:55 UTC

svn commit: r1091956 - /tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImpl.java

Author: hlship
Date: Wed Apr 13 22:23:55 2011
New Revision: 1091956

URL: http://svn.apache.org/viewvc?rev=1091956&view=rev
Log:
TAP5-853: Correctly wrap primitives returned from method invocations before returning the value from get()

Modified:
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImpl.java

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImpl.java?rev=1091956&r1=1091955&r2=1091956&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImpl.java Wed Apr 13 22:23:55 2011
@@ -780,8 +780,7 @@ public class PropertyConduitSourceImpl i
                 {
                     Class expressionType = buildSubexpression(builder, null, node.getChild(0));
 
-                    if (expressionType.isPrimitive())
-                        builder.boxPrimitive(expressionType.getName());
+                    boxIfPrimitive(builder, expressionType);
 
                     // Now invoke the delegate invert() method
 
@@ -931,8 +930,7 @@ public class PropertyConduitSourceImpl i
 
                 Class expressionType = buildSubexpression(builder, null, listNode.getChild(i));
 
-                if (expressionType.isPrimitive())
-                    builder.boxPrimitive(expressionType.getName());
+                boxIfPrimitive(builder, expressionType);
 
                 // Add the value to the array, then pop off the returned boolean
                 builder.invoke(ArrayListMethods.ADD).pop();
@@ -1224,7 +1222,7 @@ public class PropertyConduitSourceImpl i
                 return;
             }
 
-            plasticClass.introduceMethod(GET).changeImplementation(new InstructionBuilderCallback()
+            plasticClass.introduceMethod(GET, new InstructionBuilderCallback()
             {
                 public void doBuild(InstructionBuilder builder)
                 {
@@ -1232,20 +1230,13 @@ public class PropertyConduitSourceImpl i
 
                     Class termType = evaluateTerm(builder, activeType, node, info);
 
-                    unboxIfPrimitive(builder, termType);
+                    boxIfPrimitive(builder, termType);
 
                     builder.returnResult();
                 }
-
             });
         }
 
-        private void unboxIfPrimitive(InstructionBuilder builder, Class type)
-        {
-            if (type.isPrimitive())
-                builder.unboxPrimitive(type.getName());
-        }
-
         /**
          * Extends the builder with the code to evaluate a term (which may
          * 
@@ -1876,6 +1867,12 @@ public class PropertyConduitSourceImpl i
 
             throw new NoSuchMethodException(ServicesMessages.noSuchMethod(activeType, methodName));
         }
+
+        public void boxIfPrimitive(InstructionBuilder builder, Class termType)
+        {
+            if (termType.isPrimitive())
+                builder.boxPrimitive(termType.getName());
+        }
     }
 
     public PropertyConduitSourceImpl(PropertyAccess access, @ComponentLayer