org.apache.tuscany.sca.implementation.java.impl
Class JavaClassIntrospectorImpl

java.lang.Object
  extended by org.apache.tuscany.sca.implementation.java.impl.JavaClassIntrospectorImpl

public class JavaClassIntrospectorImpl
extends java.lang.Object

An extensible Java class introspector implementation.


Constructor Summary
JavaClassIntrospectorImpl(java.util.List<JavaClassVisitor> visitors)
           
 
Method Summary
 void introspectClass(JavaImplementation type, java.lang.Class<?> clazz)
          JSR-250 PFD recommends the following guidelines for how annotations interact with inheritance in order to keep the resulting complexity in control: Class-level annotations only affect the class they annotate and their members, that is, its methods and fields.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JavaClassIntrospectorImpl

public JavaClassIntrospectorImpl(java.util.List<JavaClassVisitor> visitors)
Method Detail

introspectClass

public void introspectClass(JavaImplementation type,
                            java.lang.Class<?> clazz)
                     throws IntrospectionException
JSR-250 PFD recommends the following guidelines for how annotations interact with inheritance in order to keep the resulting complexity in control:
  1. Class-level annotations only affect the class they annotate and their members, that is, its methods and fields. They never affect a member declared by a superclass, even if it is not hidden or overridden by the class in question.
  2. In addition to affecting the annotated class, class-level annotations may act as a shorthand for member-level annotations. If a member carries a specific member-level annotation, any annotations of the same type implied by a class-level annotation are ignored. In other words, explicit member-level annotations have priority over member-level annotations implied by a class-level annotation.
  3. The interfaces implemented by a class never contribute annotations to the class itself or any of its members.
  4. Members inherited from a superclass and which are not hidden or overridden maintain the annotations they had in the class that declared them, including member-level annotations implied by class-level ones.
  5. Member-level annotations on a hidden or overridden member are always ignored.

Throws:
IntrospectionException