jsr345-experts@ejb-spec.java.net

[jsr345-experts] Re: Extension of _at_DependsOn

From: <reza_rahman_at_lycos.com>
Date: Mon, 12 Sep 2011 20:20:18 +0000 (GMT)
Pete,
 
OK, will do ASAP. Our API is slightly different (but just as verbose), but I'll enter that instead of your specific examples.
 
Cheers,
Reza


Sep 12, 2011 04:16:27 PM, jsr345-experts@ejb-spec.java.net wrote:
Reza,

Could you file a CDI issue for this so we can track and discuss on the CDI EG?

On 12 Sep 2011, at 11:19, reza_rahman@lycos.com wrote:

> Pete,
>
> There isn't a better way that we have seen. It's definitely ugly, but it might be the only way to do it.
>
> Cheers,
> Reza
>
>
> Sep 12, 2011 11:17:03 AM, jsr345-experts@ejb-spec.java.net wrote:
> The issue with @DependsOn for CDI is that specifying a CDI dependency using an annotation is extremely ugly. Say I have a CDI bean:
>
> @Colored @Red
> class Parrot {
>
> }
>
> If I wanted to depend on that using @DependsOn:
>
> @DependsOn(type=Parrot.class, qualifiers={Colored.class, Red.class})
>
> it's pretty nasty. We're not going to win anyone to Java EE with this.
>
> However it get's worse.
>
> @British @Gender(MALE)
> class Person {
>
> }
>
> @DependsOn(type=Person.class, qualifiers={@DependentQualifier(British.class), @DependentQualifier(value=Gender.class, attributes={@DependentQualifierAttribute(name="value", value="MALE")}))
>
> This is now basically useless, and I've yet to hear anyone say that this is a good approach.
>
> I know that some people have proposed requiring this only works with @Named e.g.
>
> @British @Gender(MALE)
> @Named("britishMalePerson")
> class Person {
>
> }
>
> @DependsOn("britishMalePerson")
>
> However this cannot be included in the CDI spec as it is a complete deviation from the guiding principles of CDI.
>
> I've yet to see a better approach - any ideas? :-D
>
> Pete
>
> On 12 Sep 2011, at 04:13, Antonio Goncalves wrote:
>
> > Wouldn't it also make sense to have @DependsOn on some CDI beans (@ApplicationScoped for example) ?
> >
> >
> > On Sat, Sep 10, 2011 at 06:25, Reza Rahman <reza_rahman@lycos.com> wrote:
> > Adam,
> >
> > I hate to say this, but I'd rather focus on moving @DependsOn to CDI where name-based qualifiers would be unlikely to be used anyway.
> >
> > Cheers,
> > Reza
> >
> >
> >
> > On 9/9/2011 7:23 PM, Marina Vatkina wrote:
> > Adam,
> >
> > What would be the use-case for the new element?
> >
> > thanks,
> > -marina
> >
> > Adam Bien wrote:
> > Hi All,
> >
> > currently the @DependsOn annotation looks like:
> > @Target(value = {ElementType.TYPE})
> > @Retention(value = RetentionPolicy.RUNTIME)
> > public @interface DependsOn {
> >
> > public String[] value();
> > }
> >
> >
> > I would like to extend it with a class element:
> >
> > @Target(value = {ElementType.TYPE})
> > @Retention(value = RetentionPolicy.RUNTIME)
> > public @interface DependsOn {
> >
> > public String[] value();
> > *public Class[] classes() default void.class;*
> > }
> >
> > It should be possible to specify the dependencies as simple EJB-names as well as referring directly to the classes,
> >
> > any thoughts?
> >
> > adam
> >
> >
> >
> >
> >
> >
> > -----
> > No virus found in this message.
> > Checked by AVG - www.avg.com
> > Version: 10.0.1392 / Virus Database: 1520/3886 - Release Date: 09/09/11
> >
> >
> >
> >
> >
> >
> > --
> > Antonio Goncalves
> > Software architect and Java Champion
> >
> > Web site | Twitter | Blog | LinkedIn | Paris JUG
>