[cdi-dev] Scoped CDI Events?
Pete Muir
pmuir at redhat.com
Wed Aug 29 07:53:39 EDT 2012
On 29 Aug 2012, at 11:30, Jens Schumann wrote:
> Hi Martin,
>
> If possible I would like to avoid immutable event objects, even though the
> order of observer methods is currently undefined. I have a couple of use
> cases where my event object will be modified by event observers. Two
> examples:
>
> - Execute secondary business logic after an entity was created/updated and
> add details to the entity. Here we might have ordering issues. However we
> did not encounter issues so far. We fire @Created or @Updated Entity
> events, where my payload is the entity itself. Example: Send welcome
> e-mail after a new customer was created. The primary business logic will
> create the customer and fire an @Created Customer event. A
> WelcomeMailObserver observes @Created Customer events, sends the e-mail
> and links it to the new customer.
> - Collect application wide information, e.g. statistics or health status
> information. My observers simply add local statistics or local health
> status details to the event object itself.
This is very similar to making things threadsafe - immutability is a simple way to guarantee thread safety, but you can make mutable objects threadsafe if you reason about how they will be used. Same with event payloads - it's simple to make them immutable, but you can mutate them if you can reason correctly about it.
I don't think there is any spec work here, perhaps just a FAQ.
>
>
>
> Jens
>
> Am 29.08.12 12:14 schrieb "Martin Kouba" unter <mkouba at redhat.com>:
>
>> Hi Adam, Arne,
>>
>> The built-in Event bean is not stateless, it's @Dependent. The event
>> payload - the event object - is really not managed and thus not scoped
>> (and should not be IMHO). I also think the event object should be
>> immutable since the order in which observer methods are called is not
>> defined...
>>
>> Martin
>>
>>
>> Dne 29.8.2012 12:06, Arne Limburg napsal(a):
>>> Hi Adam,
>>>
>>>
>>> Are you talking about the injected Event object or about the payload?
>>> The Event object is stateless so the scope does not matter.
>>> And the payload is not managed at all.
>>> So, I'm afraid, I can't see your issue here?
>>> Could you provide a use case for a scoped event?
>>>
>>> Cheers,
>>> Arne
>>>
>>> Am 29.08.12 11:49 schrieb "Adam Bien" unter <abien at adam-bien.com>:
>>>
>>>> Hi *,
>>>>
>>>> I didn't found in the CDI 1.0 spec a mention of the scope of CDI
>>>> events.
>>>> There is also no mention of scopes in the Observer Resolution section.
>>>>
>>>> Are CDI events scoped?
>>>>
>>>> Does observer resolution depend on the scope of the injected Event
>>>> instance?
>>>>
>>>> Should we refine/clarify that in the CDI 1.1 spec?
>>>>
>>>> I didn't found an explicit mail in the archives either,
>>>>
>>>> thanks and sorry in case the issue is already resolved,
>>>>
>>>> adam
>>>> _______________________________________________
>>>> cdi-dev mailing list
>>>> cdi-dev at lists.jboss.org
>>>> https://lists.jboss.org/mailman/listinfo/cdi-dev
>>>
>>>
>>> _______________________________________________
>>> cdi-dev mailing list
>>> cdi-dev at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/cdi-dev
>>>
>>
>> --
>> Martin Kouba
>> JBoss Quality Assurance Engineer
>> CDI TCK lead
>> E-mail: mkouba at redhat.com
>> Web: www.cz.redhat.com
>> Red Hat Czech s.r.o., Purkyňova 99/71, 612 45, Brno, Czech Republic
>> _______________________________________________
>> cdi-dev mailing list
>> cdi-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/cdi-dev
>
>
> _______________________________________________
> cdi-dev mailing list
> cdi-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/cdi-dev
More information about the cdi-dev
mailing list