[
https://issues.jboss.org/browse/CDI-169?page=com.atlassian.jira.plugin.sy...
]
Martin Kouba commented on CDI-169:
----------------------------------
Not a good example I think. In this situation it is possible. Event knows its
InjectionPoint that knows its java.lang.reflect.Member (Field in this case). Following
pseudocode will work.
{code}
Field field = (Field) injectionPoint.getMember();
Type eventType = field.getGenericType();
if(eventType instanceof ParameterizedType) {
for(Type eventTypeArgument : ((ParameterizedType) eventType).getActualTypeArguments()){
// Now at Event level
if(eventTypeArgument instanceof ParameterizedType) {
for (Type fooTypeArgument : ((ParameterizedType)
eventTypeArgument).getActualTypeArguments())
{
// Now at Foo level
System.out.println("fooTypeArgument = " + fooTypeArgument);
}
}
}
}
{code}
See
http://tutorials.jenkov.com/java-reflection/generics.html
However in this situation it is *NOT* possible...
{code}
class Bar {
@Inject
BeanManager beanManager;
public void fire() {
beanManager.fireEvent(new Foo<Baz>());
}
}
{code}
Remove the 'No type variable in event objects' restriction
----------------------------------------------------------
Key: CDI-169
URL:
https://issues.jboss.org/browse/CDI-169
Project: CDI Specification Issues
Issue Type: Feature Request
Affects Versions: 1.0
Reporter: Stuart Douglas
Fix For: 1.1 (Proposed)
CDI 10.1 states:
An event object is an instance of a concrete Java class with no type variables. ... An
event type may not contain a type variable.
Which seems silly considering the container fires events with a type variable at startup.
I can't think of any reason why this should be prohibited.
--
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