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?");
+ }
}