Author: hlship
Date: Tue Jun 10 14:51:09 2008
New Revision: 666338
URL: http://svn.apache.org/viewvc?rev=666338&view=rev
Log:
TAPESTRY-2448: When a bean class inherits properties from a base class, field
annotations of the base class properties are not visible
Modified:
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/PropertyAdapterImpl.java
tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/PropertyAccessImplTest.java
Modified:
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/PropertyAdapterImpl.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/PropertyAdapterImpl.java?rev=666338&r1=666337&r2=666338&view=diff
==============================================================================
---
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/PropertyAdapterImpl.java
(original)
+++
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/PropertyAdapterImpl.java
Tue Jun 10 14:51:09 2008
@@ -165,15 +165,24 @@
// are in the same class (i.e., that we don't have a getter
exposing a protected field inherted
// from a base class, or some other oddity).
- for (Field f : getBeanType().getDeclaredFields())
+ Class cursor = getBeanType();
+
+ out:
+ while (cursor != null)
{
- if (f.getName().equalsIgnoreCase(name))
+ for (Field f : cursor.getDeclaredFields())
{
- field = f;
- break;
+ if (f.getName().equalsIgnoreCase(name))
+ {
+ field = f;
+ break out;
+ }
}
+
+ cursor = cursor.getSuperclass();
}
+
fieldCheckedFor = true;
}
Modified:
tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/PropertyAccessImplTest.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/PropertyAccessImplTest.java?rev=666338&r1=666337&r2=666338&view=diff
==============================================================================
---
tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/PropertyAccessImplTest.java
(original)
+++
tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/PropertyAccessImplTest.java
Tue Jun 10 14:51:09 2008
@@ -72,6 +72,11 @@
}
}
+ public static class BeanSubclass extends Bean
+ {
+
+ }
+
public static class ExceptionBean
{
public boolean getFailure()
@@ -468,6 +473,21 @@
assertEquals(dt.value(), "fred");
}
+ /**
+ * TAPESTRY-2448
+ */
+ @Test
+ public void get_annotation_will_read_inherited_field()
+ {
+ PropertyAdapter pa =
access.getAdapter(BeanSubclass.class).getPropertyAdapter("value");
+
+ DataType dt = pa.getAnnotation(DataType.class);
+
+ assertNotNull(dt);
+ assertEquals(dt.value(), "fred");
+
+ }
+
@Test
public void field_annotation_overridden_by_getter_annotation()
{