[seam-dev] CDI EG requires feedback
Mark Struberg
struberg at yahoo.de
Wed Aug 15 13:53:21 EDT 2012
To make it even more clear what Pete just stated: People added multiple different AnnotatedTypes to the same class because they wanted to get multiple different 'Managed Bean' for the same class. If we clarify that only 1 AnnotatedType instance exists per class, then you would do the same by just providing multiple Bean<T> instances directly.
LieGrue,
strub
----- Original Message -----
> From: Pete Muir <pmuir at redhat.com>
> To: "Lincoln Baxter, III" <lincolnbaxter at gmail.com>
> Cc: "seam-dev >> seam-dev at lists. jboss. org Development List" <seam-dev at lists.jboss.org>
> Sent: Wednesday, August 15, 2012 7:07 PM
> Subject: Re: [seam-dev] CDI EG requires feedback
>
>T his would still work, you are replacing an existing annotated type, not adding
> a new one for the same type.
>
> We're talking about having an AnnotatedType<Foo>, and adding another
> one of AnnotatedType<Foo>.
>
> On 15 Aug 2012, at 17:42, Lincoln Baxter, III wrote:
>
>> I believe that Forge creates new Annotated Types to replace the existing
> one in the event-bus extension. This is done so that Qualifiers may be added to
> parameters of event observers.
>>
>> You can see the code here. I'm not sure if this is related to your
> discussion, but it seems close so I thought I would mention it:
>>
>>
> https://github.com/forge/core/blob/master/event-bus-api/src/main/java/org/jboss/forge/bus/cdi/ObserverCaptureExtension.java
>>
>> This extension took a good deal of work to produce, and is used throughout
> Forge. As long as we can capture events like we are doing here, it could be
> re-implemented, but it would potentially be a lot of work.
>>
>> ~Lincoln
>>
>> On Wed, Aug 15, 2012 at 9:17 AM, Pete Muir <pmuir at redhat.com> wrote:
>> All, the CDI EG requires feedback on an item in the spec which is not
> clear, and has been implemented differently between implementations, and is not
> TCK tested. As Seam-dev contains lots of extensions authors, requesting
> feedback. Please either send direct to me, or post to cdi-dev at lists.jboss.org
> :-)
>>
>> Stuart, your feedback on this would be good, as it relates to XML config.
>>
>>
> ------------------------------------------------------------------------------------------------------------------------------------------------
>>
>> Multiple Annotated Types
>> ====================
>>
>> https://issues.jboss.org/browse/CDI-58
>>
>> This concerns whether there can be greater than one annotated type per
> class instance in the JVM. Gavin intended there should be, principally to
> support an XML configuration dialect, which could introduce multiple versions of
> a class, each with a different qualifier. However, this is not TCK tested, and
> implementations vary in how they support this.
>>
>> We discussed that this makes an implementation considerably more complex
> (as there is no easy way to uniquely identify an annotated type e.g. for
> serialization), and also is pretty confusing for a user (as you now get multiple
> ProcessAnnotatedType events for each class, making it hard to know which one you
> want to change).
>>
>> We looked at alternative solutions, and concluded that if all use cases can
> be satisfied by adding a new bean, rather than a new annotated type, we would
> like to explicitly specify that there is only one annotated type per class
> instance. In CDI 1.1 it is already much easier to add and manipulate beans from
> annotated types, so we believe that the correct thing here is take this route.
>>
>>
> ------------------------------------------------------------------------------------------------------------------------------------------------
>>
>> Does anyone create multiple AnnotatedTypes per class instance? If so, can
> you please describe:
>>
>> a) why you need to do this
>> b) whether you could reimplement by directly creating beans (given that CDI
> 1.1 allows you to [1])
>> c) how much effort it would be to reimplement/how much of your codebase
> this would affect
>>
>> Thanks!
>>
>> Pete
>>
>> [1]
>>
>> BeanAttributes ba = beanManager.cerateBeanAttributes(annotatedType);
>> InjectionTarget it = beanmanager.createInjectionTarget(annotatedType);
>> Bean b = beanManager.createBean(ba, clazz, it);
>>
>> or
>>
>> BeanAttributes ba =
> beanManager.cerateBeanAttributes(annotatedFieldOrMethod);
>> Producer p = beanmanager.createProducer(annotatedFieldOrMethod);
>> Bean b = beanManager.createBean(ba, clazz, p);
>>
>> The Bean can then be registered using
>>
>> afterBeanDiscovery.addBean(b);
>> _______________________________________________
>> seam-dev mailing list
>> seam-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/seam-dev
>>
>>
>>
>> --
>> Lincoln Baxter, III
>> http://ocpsoft.org
>> "Simpler is better."
>
>
> _______________________________________________
> seam-dev mailing list
> seam-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/seam-dev
>
More information about the seam-dev
mailing list