in cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/util/Annotates.java [106:164]
public static <X> Class<X> declaringClass(Object instance) {
Class<?> declaringClass = null;
if (instance instanceof AnnotatedMember) {
AnnotatedMember<?> af = (AnnotatedMember<?>)instance;
declaringClass = af.getDeclaringType().getJavaClass();
}
else if (instance instanceof AnnotatedParameter) {
AnnotatedParameter<?> ap = (AnnotatedParameter<?>)instance;
Parameter javaParameter = ap.getJavaParameter();
Executable executable = javaParameter.getDeclaringExecutable();
declaringClass = executable.getDeclaringClass();
}
else if (instance instanceof AnnotatedType) {
AnnotatedType<?> annotatedType = (AnnotatedType<?>)instance;
declaringClass = annotatedType.getJavaClass();
}
else if (instance instanceof Annotated) {
Annotated annotated = (Annotated)instance;
declaringClass = getRawType(annotated.getBaseType());
}
else if (instance instanceof ProcessManagedBean) {
ProcessManagedBean<?> bean = (ProcessManagedBean<?>)instance;
declaringClass = bean.getAnnotatedBeanClass().getJavaClass();
}
else if (instance instanceof ProcessSessionBean) {
ProcessSessionBean<?> bean = (ProcessSessionBean<?>)instance;
declaringClass = bean.getAnnotatedBeanClass().getJavaClass();
}
else if (instance instanceof ProcessProducerMethod) {
ProcessProducerMethod<?, ?> producer = (ProcessProducerMethod<?, ?>)instance;
declaringClass = producer.getAnnotatedProducerMethod().getDeclaringType().getJavaClass();
}
else if (instance instanceof ProcessProducerField) {
ProcessProducerField<?, ?> producer = (ProcessProducerField<?, ?>)instance;
declaringClass = producer.getAnnotatedProducerField().getDeclaringType().getJavaClass();
}
else if (instance instanceof ProcessSyntheticBean) {
ProcessSyntheticBean<?> synthetic = (ProcessSyntheticBean<?>)instance;
declaringClass = synthetic.getBean().getBeanClass();
}
else if (instance instanceof ProcessBean) {
ProcessBean<?> processBean = (ProcessBean<?>)instance;
declaringClass = processBean.getBean().getBeanClass();
}
return (Class<X>)declaringClass;
}