You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by an...@apache.org on 2008/05/09 09:01:45 UTC

svn commit: r654698 - in /incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java: impl/ introspect/impl/

Author: antelder
Date: Fri May  9 00:01:45 2008
New Revision: 654698

URL: http://svn.apache.org/viewvc?rev=654698&view=rev
Log:
TUSCANY-2282: Apply patch from Vamsavardhana Reddy to fix Poor warning issued when annotating private field with @Callback

Modified:
    incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/impl/JavaClassIntrospectorImpl.java
    incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/JavaIntrospectionHelper.java
    incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/ServiceProcessor.java

Modified: incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/impl/JavaClassIntrospectorImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/impl/JavaClassIntrospectorImpl.java?rev=654698&r1=654697&r2=654698&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/impl/JavaClassIntrospectorImpl.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/impl/JavaClassIntrospectorImpl.java Fri May  9 00:01:45 2008
@@ -92,6 +92,14 @@
                 extension.visitField(field, type);
             }
         }
+
+        // Check if any private fields have illegal annotations that should be raised as errors
+        Set<Field> privateFields = JavaIntrospectionHelper.getPrivateFields(clazz);
+        for (Field field : privateFields) {
+            for (JavaClassVisitor processor : visitors) {
+                processor.visitField(field, type);
+            }
+        }
         
         Set<Method> methods = JavaIntrospectionHelper.getAllUniquePublicProtectedMethods(clazz, true);
         for (Method method : methods) {

Modified: incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/JavaIntrospectionHelper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/JavaIntrospectionHelper.java?rev=654698&r1=654697&r2=654698&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/JavaIntrospectionHelper.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/JavaIntrospectionHelper.java Fri May  9 00:01:45 2008
@@ -561,4 +561,17 @@
         
         return methods;
     }
+
+    public static Set<Field> getPrivateFields(Class clazz) {
+        Set<Field> fields = new HashSet<Field>();
+        Field[] declaredFields = clazz.getDeclaredFields();
+        for (final Field declaredField : declaredFields) {
+            int modifiers = declaredField.getModifiers();
+            if(Modifier.isPrivate(modifiers)) {
+                fields.add(declaredField);
+            }
+        }
+        
+        return fields;
+    }
 }

Modified: incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/ServiceProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/ServiceProcessor.java?rev=654698&r1=654697&r2=654698&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/ServiceProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/ServiceProcessor.java Fri May  9 00:01:45 2008
@@ -22,6 +22,7 @@
 
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
 import java.lang.reflect.Type;
 import java.util.Set;
 import java.util.logging.Logger;
@@ -102,6 +103,9 @@
         if (annotation == null) {
             return;
         }
+        if(Modifier.isPrivate(method.getModifiers())) {
+            throw new IllegalCallbackReferenceException("Illegal annotation @Callback found on "+method, method);
+        }
         if (method.getParameterTypes().length != 1) {
             throw new IllegalCallbackReferenceException("Setter must have one parameter", method);
         }
@@ -116,6 +120,9 @@
         if (annotation == null) {
             return;
         }
+        if(Modifier.isPrivate(field.getModifiers())) {
+            throw new IllegalCallbackReferenceException("Illegal annotation @Callback found on "+field, field);
+        }
         JavaElementImpl element = new JavaElementImpl(field);
         createCallback(type, element);
     }