Hi all!
I am trying to use Weld on Apache Karaf 3.0.x.
I OSGified an integration provided by Apache: https://github.com/apache/cxf/blob/master/integration/cdi/src/main/java/org/apache/cxf/cdi/JAXRSCdiResourceExtension.java
but it does not work actually.
Maybe some of you can help with this problem: https://issues.apache.org/jira/browse/CXF-6221
After connecting a debugger, it is some problem with caching or incompatibility. Instead of pure annotation class I can see 'com.sun.proxy'. Because of that 'isAnnotationPresent' invoked on BackedAnnotatedType returns false. CXF integration and my class annotated with 'ApplicationPath' are in separate bundles.
Appreciate for any help.
===
Going deeper, I find out that for some reason JAX-RS annotation equality not work here:
/weld-core-2.2.4.Final-sources.jar!/org/jboss/weld/annotated/slim/backed/BackedAnnotatedType.java
public T getAnnotation(Class annotationType) {
for (Annotation annotation : getAnnotations()) {
if (annotation.annotationType().equals(annotationType)) {
return annotationType.cast(annotation);
}
}
return null;
}annotation type => interface javax.ws.rs.ApplicationPath
annotation.annotationType() => interface javax.ws.rs.ApplicationPath
Same?! but does not work. Different class loaders? How to fix it?
PS. I checked that annotationType.isAssignableFrom(annotationType) returns true.