Author: hlship
Date: Mon Jan 12 15:21:06 2009
New Revision: 733962

URL: http://svn.apache.org/viewvc?rev=733962&view=rev
Log:
TAP5-330: Property expressions do not recognize methods inherted from 
java.lang.Object such as toString()

Modified:
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImpl.java
    
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImplTest.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=733962&r1=733961&r2=733962&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
 Mon Jan 12 15:21:06 2009
@@ -1,4 +1,4 @@
-// Copyright 2007, 2008 The Apache Software Foundation
+// Copyright 2007, 2008, 2009 The Apache Software Foundation
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -48,10 +48,10 @@
 public class PropertyConduitSourceImpl implements PropertyConduitSource, 
InvalidationListener
 {
     private static final MethodSignature GET_SIGNATURE = new 
MethodSignature(Object.class, "get",
-                                                                             
new Class[] {Object.class}, null);
+                                                                             
new Class[] { Object.class }, null);
 
     private static final MethodSignature SET_SIGNATURE = new 
MethodSignature(void.class, "set",
-                                                                             
new Class[] {Object.class, Object.class},
+                                                                             
new Class[] { Object.class, Object.class },
                                                                              
null);
 
     private static final Method RANGE;
@@ -372,7 +372,7 @@
 
             builder.end();
 
-            MethodSignature sig = new MethodSignature(rootType, "getRoot", new 
Class[] {Object.class}, null);
+            MethodSignature sig = new MethodSignature(rootType, "getRoot", new 
Class[] { Object.class }, null);
 
             classFab.addMethod(Modifier.PRIVATE, sig, builder.toString());
         }
@@ -410,7 +410,7 @@
 
             navBuilder.end();
 
-            MethodSignature sig = new MethodSignature(activeType, "navigate", 
new Class[] {rootType},
+            MethodSignature sig = new MethodSignature(activeType, "navigate", 
new Class[] { rootType },
                                                       null);
 
             classFab.addMethod(Modifier.PRIVATE, sig, navBuilder.toString());
@@ -1043,6 +1043,10 @@
                     return method;
             }
 
+            // TAP5-330
+            if (activeType != Object.class)
+                return findMethod(Object.class, methodName, parameterCount);
+
             throw new 
NoSuchMethodException(ServicesMessages.noSuchMethod(activeType, methodName));
         }
     }

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImplTest.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImplTest.java?rev=733962&r1=733961&r2=733962&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImplTest.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImplTest.java
 Mon Jan 12 15:21:06 2009
@@ -1,4 +1,4 @@
-// Copyright 2007, 2008 The Apache Software Foundation
+// Copyright 2007, 2008, 2009 The Apache Software Foundation
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -14,6 +14,7 @@
 
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.Block;
 import org.apache.tapestry5.PropertyConduit;
 import org.apache.tapestry5.beaneditor.Validate;
 import org.apache.tapestry5.integration.app1.data.IntegerHolder;
@@ -395,4 +396,24 @@
 
         assertEquals(conduit.get(sw), "nay");
     }
+
+    /**
+     * TAP5-330
+     */
+    @Test
+    public void object_methods_can_be_invoked()
+    {
+        PropertyConduit conduit = source.create(Block.class, "toString()");
+
+        Block b = new Block()
+        {
+            @Override
+            public String toString()
+            {
+                return "Do You Grok Ze Block?";
+            }
+        };
+
+        assertEquals(conduit.get(b), "Do You Grok Ze Block?");
+    }
 }


Reply via email to