You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by jk...@apache.org on 2007/02/22 16:22:13 UTC
svn commit: r510546 - in /tapestry/tapestry4/trunk/tapestry-annotations/src:
java/org/apache/tapestry/annotations/ComponentPropertyProxyWorker.java
test/org/apache/tapestry/annotations/TestComponentPropertyProxyWorker.java
Author: jkuhnert
Date: Thu Feb 22 07:22:11 2007
New Revision: 510546
URL: http://svn.apache.org/viewvc?view=rev&rev=510546
Log:
Forgot to properly check parameterized generic type for matching exclusion filters during last refactor.
Modified:
tapestry/tapestry4/trunk/tapestry-annotations/src/java/org/apache/tapestry/annotations/ComponentPropertyProxyWorker.java
tapestry/tapestry4/trunk/tapestry-annotations/src/test/org/apache/tapestry/annotations/TestComponentPropertyProxyWorker.java
Modified: tapestry/tapestry4/trunk/tapestry-annotations/src/java/org/apache/tapestry/annotations/ComponentPropertyProxyWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-annotations/src/java/org/apache/tapestry/annotations/ComponentPropertyProxyWorker.java?view=diff&rev=510546&r1=510545&r2=510546
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-annotations/src/java/org/apache/tapestry/annotations/ComponentPropertyProxyWorker.java (original)
+++ tapestry/tapestry4/trunk/tapestry-annotations/src/java/org/apache/tapestry/annotations/ComponentPropertyProxyWorker.java Thu Feb 22 07:22:11 2007
@@ -51,7 +51,7 @@
checkProxy(op, ps);
}
}
-
+
public Class extractPropertyType(Class type, String propertyName, IPropertySpecification ps) {
try {
@@ -69,7 +69,6 @@
&& TypeVariable.class.isAssignableFrom(m.getGenericReturnType().getClass())) {
ps.setGeneric(true);
-
TypeVariable tvar = (TypeVariable)m.getGenericReturnType();
// try to set the actual type
@@ -79,19 +78,19 @@
ParameterizedType ptype = (ParameterizedType)type.getGenericSuperclass();
if (ptype.getActualTypeArguments().length > 0) {
+ ps.setCanProxy(canProxyType((Class)ptype.getActualTypeArguments()[0]));
ps.setType(((Class)tvar.getBounds()[0]).getName());
- return (Class)tvar.getBounds()[0];
-
- // ps.setType(((Class)ptype.getActualTypeArguments()[0]).getName());
- //return (Class)ptype.getActualTypeArguments()[0];
+ return (Class)tvar.getBounds()[0];
}
}
return null;
} else if (m != null) {
+ ps.setCanProxy(canProxyType(m.getReturnType()));
ps.setType(m.getReturnType().getName());
+
return m.getReturnType();
}
@@ -111,7 +110,6 @@
&& TypeVariable.class.isAssignableFrom(genParam.getClass())) {
TypeVariable tvar = (TypeVariable)genParam;
-
ps.setGeneric(true);
if (type.getGenericSuperclass() != null) {
@@ -119,16 +117,15 @@
ParameterizedType ptype = (ParameterizedType)type.getGenericSuperclass();
if (ptype.getActualTypeArguments().length > 0) {
+ ps.setCanProxy(canProxyType((Class)ptype.getActualTypeArguments()[0]));
ps.setType(((Class)tvar.getBounds()[0]).getName());
return (Class)tvar.getBounds()[0];
- //ps.setType(((Class)ptype.getActualTypeArguments()[0]).getName());
-
- //return (Class)ptype.getActualTypeArguments()[0];
}
}
}
+ ps.setCanProxy(canProxyType(param));
ps.setType(param.getName());
return param;
}
@@ -141,29 +138,31 @@
return null;
}
+ boolean canProxyType(Class type)
+ {
+ if (type == null)
+ return false;
+
+ if (!EnhanceUtils.canProxyPropertyType(type))
+ return false;
+
+ for (Annotation an : type.getAnnotations()) {
+ if (isExcluded(an)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
void checkProxy(EnhancementOperation op, IPropertySpecification ps) {
ps.setProxyChecked(true);
if (!ps.isPersistent()) {
return;
}
-
- Class propertyType = extractPropertyType(op.getBaseClass(), ps.getName(), ps);
- if (propertyType == null) {
- return;
- }
-
- if (!EnhanceUtils.canProxyPropertyType(propertyType)) {
- return;
- }
-
- for (Annotation an : propertyType.getAnnotations()) {
- if (isExcluded(an)) {
- return;
- }
- }
-
- ps.setCanProxy(true);
+
+ extractPropertyType(op.getBaseClass(), ps.getName(), ps);
}
boolean isExcluded(Annotation annotation) {
Modified: tapestry/tapestry4/trunk/tapestry-annotations/src/test/org/apache/tapestry/annotations/TestComponentPropertyProxyWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-annotations/src/test/org/apache/tapestry/annotations/TestComponentPropertyProxyWorker.java?view=diff&rev=510546&r1=510545&r2=510546
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-annotations/src/test/org/apache/tapestry/annotations/TestComponentPropertyProxyWorker.java (original)
+++ tapestry/tapestry4/trunk/tapestry-annotations/src/test/org/apache/tapestry/annotations/TestComponentPropertyProxyWorker.java Thu Feb 22 07:22:11 2007
@@ -113,6 +113,9 @@
public void test_Type_Found()
{
ComponentPropertyProxyWorker worker = new ComponentPropertyProxyWorker();
+ List<String> exclude = new ArrayList<String>();
+ exclude.add("Entity");
+ worker.setExcludedPackages(exclude);
IPropertySpecification prop = new PropertySpecification();
prop.setName("value");
@@ -193,7 +196,7 @@
assert prop != null;
assert prop.isPersistent();
assert prop.isProxyChecked();
- assert prop.canProxy();
+ assert !prop.canProxy();
assertEquals(p.getType(), Persistent.class.getName());
}