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());
     }