[
https://issues.jboss.org/browse/CDI-475?page=com.atlassian.jira.plugin.sy...
]
Antonin Stefanutti commented on CDI-475:
----------------------------------------
Hi Jozef,
In the provided use case, the event is delivered to the {{@Observes
ProcessAnnotatedType<@ContextName ? extends CamelContext>}} method for the
{{CamelContext}} type being annotated with the {{@ContextName}} annotation at the class
level only. That differs from the semantic provided by the {{@WithAnnotations}} which
meets another need.
In that perspective, that story is broader than CDI-472 and can be applied to other
lifecycle events, e.g.:
{code}
<X> void processManagedBean(@Observes ProcessManagedBean<@MyQualifier X>){}
{code}
where the {{ProcessManagedBean}} would be delivered for every managed bean of type {{X}}
qualified with the {{@MyQualifier}} qualifier.
Besides the semantic of type annotations for parameterized type assignability in the
typesafe resolution mechanism has to be assessed, for example:
{code}
@Produces
List<@MyAnnotation MyType> producer(){}
@Inject
List<@MyAnnotation MyType> list;
{code}
These are just ideas that should be elaborated in the [Java SE 8 enhancement
workshop|https://docs.google.com/document/d/1KUaxXIXJ_r-h5UJGIij6I4vrLS7u...].
Hope that clarifies at least in what way that differs from CDI-472.
Support type annotation in assignability of parameterized types
---------------------------------------------------------------
Key: CDI-475
URL:
https://issues.jboss.org/browse/CDI-475
Project: CDI Specification Issues
Issue Type: Feature Request
Components: Resolution
Reporter: Antonin Stefanutti
Since Java 8 provides support for type annotations, the assignability of parameterized
types rules could be updated to support that feature that may add value in a number of use
cases.
For example, with lifecycle events resolution, instead of writing:
{code}
Set<Annotation> contextNames = new HashSet<>();
void camelContextNames(@Observes ProcessAnnotatedType<? extends CamelContext> pat)
{
if (pat.getAnnotatedType().isAnnotationPresent(ContextName.class))
contextNames.add(pat.getAnnotatedType().getAnnotation(ContextName.class));
}
{code}
One could directly write:
{code}
void camelContextNames(@Observes ProcessAnnotatedType<@ContextName ? extends
CamelContext> pat) {
contextNames.add(pat.getAnnotatedType().getAnnotation(ContextName.class));
}
{code}
--
This message was sent by Atlassian JIRA
(v6.3.1#6329)