[
https://issues.jboss.org/browse/WELD-1131?page=com.atlassian.jira.plugin....
]
Marko Lukša commented on WELD-1131:
-----------------------------------
I have checked how Weld 2.0 handles this. While method annotations are visible through
{{bProxy.getClass().getMethod("foo").getAnnotations()}}, class annotations
aren't. So you still have to obtain the annotations through the proxy's
superclass.
AFAIK there is no method in CDI that would allow you to get the actual class. You can
submit a proposal for such a method to the cdi-dev mailing list, and we'll see what
the experts say about it.
Weld Proxies (for instance created by Producer-Method) loose
Annotations put ontop of Methods of source class
-------------------------------------------------------------------------------------------------------------
Key: WELD-1131
URL:
https://issues.jboss.org/browse/WELD-1131
Project: Weld
Issue Type: Bug
Components: Reflection layer
Affects Versions: 1.1.8.Final
Environment: glassfish 3.1.2
Reporter: P Huber
Assignee: Marko Lukša
Fix For: 2.0.0.Alpha2
Attachments: weld-forgets-annotation_WELD-1131.7z
I have project specific Annotations ontop of public Methods of a class.
class Customer {
@MyProjectSpecificAnnotation
public String getFirstName() {
return firstName;
}
}
When producing Objects of such an annotated class, like with
class Example {
@Produce
Customer producerField;
}
Then at the Injection Side the Annotations "MyProjectSpecificAnnotation" is no
longer available, because WELD injects a byte-code created proxy.
class InjectionSide {
@Inject
Customer injectField; // here we get the WELD-Proxy of unpronouncable name...and no
Annotations
}
I've used BeanIntrospector to reflect the injected Instance of class Customer. I get
a set of PropertyDescriptors with a write/read Method each.
But as allready said, none of them has the "MyProjectSpecificAnnotation".
Could be due to the fact, that when subclassing a class, the Annotations of the super
class are not available at sub class directly - But in Case of a "transparent"
WELD proxy I'd expect they should be there. Probably you have to simply copy
annotations during on-the-fly byte-code creation of the Proxy. The Problem is btw also
true for javas built in Dynamic Proxy: using it you also loose Annotations.
Hope you can fix that
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see:
http://www.atlassian.com/software/jira