Author: rfeng
Date: Wed Sep  5 15:26:34 2007
New Revision: 573086

URL: http://svn.apache.org/viewvc?rev=573086&view=rev
Log:
Fix for TUSCANY-1662

Modified:
    
incubator/tuscany/java/sca/modules/binding-sca/src/main/java/org/apache/tuscany/sca/binding/sca/impl/RuntimeSCAReferenceBindingProvider.java
    
incubator/tuscany/java/sca/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/sca/implementation/java/util/JavaIntrospectionHelperTestCase.java
    
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/HeuristicPojoProcessor.java
    
incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/JavaIntrospectionHelper.java

Modified: 
incubator/tuscany/java/sca/modules/binding-sca/src/main/java/org/apache/tuscany/sca/binding/sca/impl/RuntimeSCAReferenceBindingProvider.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-sca/src/main/java/org/apache/tuscany/sca/binding/sca/impl/RuntimeSCAReferenceBindingProvider.java?rev=573086&r1=573085&r2=573086&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/binding-sca/src/main/java/org/apache/tuscany/sca/binding/sca/impl/RuntimeSCAReferenceBindingProvider.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/binding-sca/src/main/java/org/apache/tuscany/sca/binding/sca/impl/RuntimeSCAReferenceBindingProvider.java
 Wed Sep  5 15:26:34 2007
@@ -192,7 +192,13 @@
             RuntimeWire wire = reference.getRuntimeWire(binding);
             Invoker invoker = getInvoker(wire, operation);
             if (invoker == null) {
-                throw new ServiceUnavailableException("No service invoker is 
available for: " + binding.getURI());
+                throw new ServiceUnavailableException("No service invoker is 
available for referenc " + reference
+                    .getName()
+                    + " (bindingURI="
+                    + binding.getURI()
+                    + " operation="
+                    + operation.getName()
+                    + ").");
             }
             return invoker;
         }

Modified: 
incubator/tuscany/java/sca/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/sca/implementation/java/util/JavaIntrospectionHelperTestCase.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/sca/implementation/java/util/JavaIntrospectionHelperTestCase.java?rev=573086&r1=573085&r2=573086&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/sca/implementation/java/util/JavaIntrospectionHelperTestCase.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/sca/implementation/java/util/JavaIntrospectionHelperTestCase.java
 Wed Sep  5 15:26:34 2007
@@ -46,22 +46,22 @@
     }
 
     public void testBean1AllPublicProtectedFields() throws Exception {
-        Set<Field> beanFields = 
JavaIntrospectionHelper.getAllPublicAndProtectedFields(Bean1.class);
+        Set<Field> beanFields = 
JavaIntrospectionHelper.getAllPublicAndProtectedFields(Bean1.class, true);
         assertEquals(4, beanFields.size());                
//Bean1.ALL_BEAN1_PUBLIC_PROTECTED_FIELDS
     }
 
     public void testGetSuperAllMethods() throws Exception {
-        Set<Method> superBeanMethods = 
JavaIntrospectionHelper.getAllUniquePublicProtectedMethods(SuperBean.class);
+        Set<Method> superBeanMethods = 
JavaIntrospectionHelper.getAllUniquePublicProtectedMethods(SuperBean.class, 
true);
         assertEquals(SuperBean.ALL_SUPER_METHODS, superBeanMethods.size());
     }
 
     public void testGetBean1AllMethods() throws Exception {
-        Set<Method> beanMethods = 
JavaIntrospectionHelper.getAllUniquePublicProtectedMethods(Bean1.class);
+        Set<Method> beanMethods = 
JavaIntrospectionHelper.getAllUniquePublicProtectedMethods(Bean1.class, true);
         assertEquals(Bean1.ALL_BEAN1_METHODS, beanMethods.size());
     }
 
     public void testOverrideMethod() throws Exception {
-        Set<Method> beanFields = 
JavaIntrospectionHelper.getAllUniquePublicProtectedMethods(Bean1.class);
+        Set<Method> beanFields = 
JavaIntrospectionHelper.getAllUniquePublicProtectedMethods(Bean1.class, true);
         boolean invoked = false;
         for (Method method : beanFields) {
             if (method.getName().equals("override")) {
@@ -75,7 +75,7 @@
     }
 
     public void testNoOverrideMethod() throws Exception {
-        Set<Method> beanFields = 
JavaIntrospectionHelper.getAllUniquePublicProtectedMethods(Bean1.class);
+        Set<Method> beanFields = 
JavaIntrospectionHelper.getAllUniquePublicProtectedMethods(Bean1.class, true);
         boolean found = false;
         for (Method method : beanFields) {
             if (method.getName().equals("noOverride") && 
method.getParameterTypes().length == 0) {

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=573086&r1=573085&r2=573086&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
 Wed Sep  5 15:26:34 2007
@@ -86,14 +86,14 @@
             }
         }
 
-        Set<Method> methods = 
JavaIntrospectionHelper.getAllUniquePublicProtectedMethods(clazz);
+        Set<Method> methods = 
JavaIntrospectionHelper.getAllUniquePublicProtectedMethods(clazz, true);
         for (Method method : methods) {
             for (JavaClassVisitor processor : visitors) {
                 processor.visitMethod(method, type);
             }
         }
 
-        Set<Field> fields = 
JavaIntrospectionHelper.getAllPublicAndProtectedFields(clazz);
+        Set<Field> fields = 
JavaIntrospectionHelper.getAllPublicAndProtectedFields(clazz, true);
         for (Field field : fields) {
             for (JavaClassVisitor extension : visitors) {
                 extension.visitField(field, type);

Modified: 
incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/HeuristicPojoProcessor.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/HeuristicPojoProcessor.java?rev=573086&r1=573085&r2=573086&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/HeuristicPojoProcessor.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/HeuristicPojoProcessor.java
 Wed Sep  5 15:26:34 2007
@@ -107,7 +107,7 @@
                 addService(type, clazz);
             }
         }
-        Set<Method> methods = getAllUniquePublicProtectedMethods(clazz);
+        Set<Method> methods = getAllUniquePublicProtectedMethods(clazz, false);
         if (!type.getReferenceMembers().isEmpty() || 
!type.getPropertyMembers().isEmpty()) {
             // references and properties have been explicitly defined
 //            if (type.getServices().isEmpty()) {
@@ -202,7 +202,7 @@
         // Public or protected fields unless there is a public or protected
         // setter method
         // for the same name
-        Set<Field> fields = getAllPublicAndProtectedFields(clazz);
+        Set<Field> fields = getAllPublicAndProtectedFields(clazz, false);
         for (Field field : fields) {
             if (field.isAnnotationPresent(Callback.class) || 
field.isAnnotationPresent(Context.class)) {
                 continue;

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=573086&r1=573085&r2=573086&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
 Wed Sep  5 15:26:34 2007
@@ -19,6 +19,8 @@
 package org.apache.tuscany.sca.implementation.java.introspect.impl;
 
 import java.beans.Introspector;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.AnnotatedElement;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Field;
 import java.lang.reflect.GenericArrayType;
@@ -33,6 +35,7 @@
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
+import java.util.logging.Logger;
 
 import org.osoa.sca.CallableReference;
 
@@ -42,7 +45,7 @@
  * @version $Rev$ $Date$
  */
 public final class JavaIntrospectionHelper {
-
+    private static final Logger logger = 
Logger.getLogger(JavaIntrospectionHelper.class.getName());
     private static final Class[] EMPTY_CLASS_ARRY = new Class[0];
 
     /**
@@ -55,25 +58,38 @@
      * Returns a collection of public, and protected fields declared by a class
      * or one of its supertypes
      */
-    public static Set<Field> getAllPublicAndProtectedFields(Class clazz) {
-        return getAllPublicAndProtectedFields(clazz, new HashSet<Field>());
+    public static Set<Field> getAllPublicAndProtectedFields(Class clazz, 
boolean validating) {
+        return getAllPublicAndProtectedFields(clazz, new HashSet<Field>(), 
validating);
+    }
+    
+
+    private static void checkInvalidAnnotations(AnnotatedElement element) {
+        for (Annotation a : element.getAnnotations()) {
+            if 
("org.osoa.sca.annotations".equals(a.annotationType().getPackage().getName())) {
+                logger.warning("Invalid annotation " + a + " is found on " + 
element);
+            }
+        }
     }
 
     /**
      * Recursively evaluates the type hierachy to return all fields that are
      * public or protected
      */
-    private static Set<Field> getAllPublicAndProtectedFields(Class clazz, 
Set<Field> fields) {
+    private static Set<Field> getAllPublicAndProtectedFields(Class clazz, 
Set<Field> fields, boolean validating) {
         if (clazz == null || clazz.isArray() || Object.class.equals(clazz)) {
             return fields;
         }
-        fields = getAllPublicAndProtectedFields(clazz.getSuperclass(), fields);
+        fields = getAllPublicAndProtectedFields(clazz.getSuperclass(), fields, 
validating);
         Field[] declaredFields = clazz.getDeclaredFields();
         for (Field field : declaredFields) {
             int modifiers = field.getModifiers();
             if ((Modifier.isPublic(modifiers) || 
Modifier.isProtected(modifiers)) && !Modifier.isStatic(modifiers)) {
                 field.setAccessible(true); // ignore Java accessibility
                 fields.add(field);
+            } else {
+                if(validating) {
+                    checkInvalidAnnotations(field);
+                }
             }
         }
         return fields;
@@ -87,14 +103,14 @@
      * cached. It is assumed that this method will be used during a
      * configuration phase.
      */
-    public static Set<Method> getAllUniquePublicProtectedMethods(Class clazz) {
-        return getAllUniqueMethods(clazz, new HashSet<Method>());
+    public static Set<Method> getAllUniquePublicProtectedMethods(Class clazz, 
boolean validating) {
+        return getAllUniqueMethods(clazz, new HashSet<Method>(), validating);
     }
 
     /**
      * Recursively evaluates the type hierarchy to return all unique methods
      */
-    private static Set<Method> getAllUniqueMethods(Class pClass, Set<Method> 
methods) {
+    private static Set<Method> getAllUniqueMethods(Class pClass, Set<Method> 
methods, boolean validating) {
         if (pClass == null || pClass.isArray() || Object.class.equals(pClass)) 
{
             return methods;
         }
@@ -103,6 +119,9 @@
         for (Method declaredMethod : declaredMethods) {
             int modifiers = declaredMethod.getModifiers();
             if ((!Modifier.isPublic(modifiers) && 
!Modifier.isProtected(modifiers)) || Modifier.isStatic(modifiers)) {
+                if(validating) {
+                    checkInvalidAnnotations(declaredMethod);
+                }
                 continue;
             }
             if (methods.size() == 0) {
@@ -130,7 +149,7 @@
         }
         // evaluate class hierarchy - this is done last to track inherited
         // methods
-        methods = getAllUniqueMethods(pClass.getSuperclass(), methods);
+        methods = getAllUniqueMethods(pClass.getSuperclass(), methods, 
validating);
         return methods;
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to