[cdi-dev] [JBoss JIRA] (CDI-484) Provide forwarding implementations of SPI interfaces

Antoine Sabot-Durand (JIRA) issues at jboss.org
Sun Oct 9 05:22:00 EDT 2016


     [ https://issues.jboss.org/browse/CDI-484?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Antoine Sabot-Durand resolved CDI-484.
--------------------------------------
    Resolution: Duplicate Issue


CDI-558 answers to most use cases link to this ticket

> Provide forwarding implementations of SPI interfaces
> ----------------------------------------------------
>
>                 Key: CDI-484
>                 URL: https://issues.jboss.org/browse/CDI-484
>             Project: CDI Specification Issues
>          Issue Type: Feature Request
>          Components: Portable Extensions
>    Affects Versions: 1.2.Final
>            Reporter: Jozef Hartinger
>             Fix For: 2.0 (discussion)
>
>
> The decorator design pattern is commonly used in CDI extensions to modify existing metadata by wrapping it with a wrapper implementation that overrides certain method. This can be done in the following callbacks: ProcessAnnotatedType, ProcessProducer, ProcessInjectionTarget, ProcessInjectionPoint and ProcessBeanAttributes.
> In order to do this it is often very convenient to have a forwarding implementation available, e.g.:
> {code:JAVA}
>     void wrap(@Observes ProcessAnnotatedType<Foo> event) {
>         final AnnotatedType<Foo> delegate = event.getAnnotatedType();
>         event.setAnnotatedType(new ForwardingAnnotatedType<Foo>(delegate) {
>             @Override
>             public <A extends Annotation> A getAnnotation(Class<A> annotationType) {
>                 return null;
>             }
>             @Override
>             public Set<Annotation> getAnnotations() {
>                 return Collections.emptySet();
>             }
>             @Override
>             public boolean isAnnotationPresent(Class<? extends Annotation> annotationType) {
>                 return false;
>             }
> }
> {code}
> We should consider providing these utility forwarding implementations as part of the CDI API. This is similar to e.g. Servlet specification doing this for their decorable APIs (http://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/http/HttpServletRequestWrapper.html)



--
This message was sent by Atlassian JIRA
(v6.4.11#64026)


More information about the cdi-dev mailing list