Thanks for your answers.. Have a nice weekend
Regards LF On Sun, Sep 21, 2014 at 1:41 AM, Romain Manni-Bucau <[email protected]> wrote: > > 2014-09-21 1:19 GMT+02:00 Lars-Fredrik Smedberg <[email protected]>: > >> When you say "...which shares nothing with your controller by >> default..." you mean that I have to let the observer inject the controller, >> I assume the controller needs to be atleast @RequestScoped as well (and not >> dependent)... >> > > dependent in a requestscoped bean an work but i guess you are right > > >> >> Could I also pass the controller as part of the actual event.... such as >> fire(new MyEvent(this)) inside the controller? >> >> > yes but then you dont have the cdi proxy anymore if you had one (can be ok > or not depending what you use of it, ie scope only or not) > > >> What you mean by "...not through the observer itself (even if possible >> if you get the observer injected but then the observer pattern is >> broken)..." >> >> > if the sender knows about the observer then you just call the method and > forget about events > > > >> Regards >> LF >> >> >> >> On Sun, Sep 21, 2014 at 1:08 AM, Romain Manni-Bucau < >> [email protected]> wrote: >> >>> 1. yes or later (depend your impl actually) >>> 2. yes but the bean is the observer which shares nothing with your >>> controller by default >>> 3. same as 2 but yes >>> 4. true, that's most of the time what is the best since you pass the >>> state through the event or an injection, not through the observer >>> itself (even if possible if you get the observer injected but then the >>> observer pattern is broken) >>> >>> >>> Romain Manni-Bucau >>> Twitter: @rmannibucau >>> Blog: http://rmannibucau.wordpress.com/ >>> LinkedIn: http://fr.linkedin.com/in/rmannibucau >>> Github: https://github.com/rmannibucau >>> >>> >>> 2014-09-21 0:55 GMT+02:00 Lars-Fredrik Smedberg <[email protected]>: >>> > @Romain >>> > >>> > Maybe I'm slow or the hour is late :).... just so that I get it all: >>> > >>> > 1. I assume the actual CDI event is fired e.g. in the start method of >>> > MyRequestController, correct? >>> > 2. If I only observe MyEvent in a @RequestScoped bean I assume that no >>> other >>> > parallell ongoing request will see/observe the same event, correct? >>> > 3. I assume that I could also observe the event in a @SessionScoped >>> bean and >>> > the event would atleast be kept within the same session, correct? >>> > 4. If I observe MyEvent in an @ApplicationScoped bean I assume that >>> > particular bean will receive all events fired? >>> > >>> > >>> > >>> > On Sun, Sep 21, 2014 at 12:43 AM, Romain Manni-Bucau < >>> [email protected]> >>> > wrote: >>> >> >>> >> public class MyRequestController { >>> >> void stopAll() {} >>> >> } >>> >> >>> >> >>> >> class Observer { >>> >> @Inject MyRequestController controller; >>> >> >>> >> >>> >> void observes(@Observes MyEvent event ) { controller.stopAll(); } >>> >> } >>> >> >>> >> public class MyServlet extends HttpServlet { >>> >> @Inject MyRequestController controller; >>> >> void service(req, resp) { >>> >> controller.start(....); >>> >> } >>> >> } >>> >> >>> >> >>> >> Romain Manni-Bucau >>> >> Twitter: @rmannibucau >>> >> Blog: http://rmannibucau.wordpress.com/ >>> >> LinkedIn: http://fr.linkedin.com/in/rmannibucau >>> >> Github: https://github.com/rmannibucau >>> >> >>> >> >>> >> 2014-09-21 0:36 GMT+02:00 Lars-Fredrik Smedberg <[email protected]>: >>> >> > @Romain >>> >> > >>> >> > Could you please give me a short example (psuedo code)... not quite >>> sure >>> >> > if >>> >> > I get it... >>> >> > >>> >> > Thanks >>> >> > LF >>> >> > >>> >> > On Sun, Sep 21, 2014 at 12:26 AM, Romain Manni-Bucau >>> >> > <[email protected]> >>> >> > wrote: >>> >> >> >>> >> >> what I usually do is to either get injected in the observer or >>> pass as >>> >> >> event parameter something related to the request. Can be your >>> 'request >>> >> >> processor' >>> >> >> >>> >> >> >>> >> >> Romain Manni-Bucau >>> >> >> Twitter: @rmannibucau >>> >> >> Blog: http://rmannibucau.wordpress.com/ >>> >> >> LinkedIn: http://fr.linkedin.com/in/rmannibucau >>> >> >> Github: https://github.com/rmannibucau >>> >> >> >>> >> >> >>> >> >> 2014-09-21 0:20 GMT+02:00 Lars-Fredrik Smedberg < >>> [email protected]>: >>> >> >> > @Romain >>> >> >> > >>> >> >> > By "request scoped event" you mean that all @Observes methods for >>> >> >> > that >>> >> >> > particular event is in @RequestScoped beans or is it possible to >>> fire >>> >> >> > events >>> >> >> > so they are only visible to the current request? >>> >> >> > >>> >> >> > >>> >> >> > On Sun, Sep 21, 2014 at 12:06 AM, Romain Manni-Bucau >>> >> >> > <[email protected]> >>> >> >> > wrote: >>> >> >> >> >>> >> >> >> oh sorry, read async (the habit). In this case a request scoped >>> even >>> >> >> >> should work >>> >> >> >> >>> >> >> >> >>> >> >> >> Romain Manni-Bucau >>> >> >> >> Twitter: @rmannibucau >>> >> >> >> Blog: http://rmannibucau.wordpress.com/ >>> >> >> >> LinkedIn: http://fr.linkedin.com/in/rmannibucau >>> >> >> >> Github: https://github.com/rmannibucau >>> >> >> >> >>> >> >> >> >>> >> >> >> 2014-09-20 23:51 GMT+02:00 Lars-Fredrik Smedberg >>> >> >> >> <[email protected]>: >>> >> >> >> > @Romain >>> >> >> >> > >>> >> >> >> > Its an synchronous task, not async. How can I then make sure >>> no >>> >> >> >> > events >>> >> >> >> > are >>> >> >> >> > shared between requests? (or did I misunderstand your answer >>> >> >> >> > perhaps?) >>> >> >> >> > >>> >> >> >> > Regards >>> >> >> >> > LF >>> >> >> >> > >>> >> >> >> > On Sat, Sep 20, 2014 at 11:48 PM, Romain Manni-Bucau >>> >> >> >> > <[email protected]> >>> >> >> >> > wrote: >>> >> >> >> >> >>> >> >> >> >> if that's async then you have no guarantee out of the box >>> that it >>> >> >> >> >> will >>> >> >> >> >> work, I wouldn't bet on it without being bound to a >>> particular >>> >> >> >> >> container >>> >> >> >> >> >>> >> >> >> >> >>> >> >> >> >> Romain Manni-Bucau >>> >> >> >> >> Twitter: @rmannibucau >>> >> >> >> >> Blog: http://rmannibucau.wordpress.com/ >>> >> >> >> >> LinkedIn: http://fr.linkedin.com/in/rmannibucau >>> >> >> >> >> Github: https://github.com/rmannibucau >>> >> >> >> >> >>> >> >> >> >> >>> >> >> >> >> 2014-09-20 23:35 GMT+02:00 Lars-Fredrik Smedberg >>> >> >> >> >> <[email protected]>: >>> >> >> >> >> > Hi Romain and Mark >>> >> >> >> >> > >>> >> >> >> >> > I was exploring the thoughts of using CDI Events to perform >>> >> >> >> >> > something >>> >> >> >> >> > like >>> >> >> >> >> > this. >>> >> >> >> >> > >>> >> >> >> >> > 1. In a request start a syncrhonous task >>> >> >> >> >> > 2. The task would at some points during the process (not >>> >> >> >> >> > always, >>> >> >> >> >> > depends >>> >> >> >> >> > on >>> >> >> >> >> > some business decisions) send events that the starter of >>> the >>> >> >> >> >> > task >>> >> >> >> >> > could >>> >> >> >> >> > observe and possible change the outcome of the task. >>> >> >> >> >> > 3. When the task is finished the request that started it >>> >> >> >> >> > returns >>> >> >> >> >> > an >>> >> >> >> >> > answer >>> >> >> >> >> > to the client >>> >> >> >> >> > >>> >> >> >> >> > Another way would be to create normal listeners (normal >>> e.g. as >>> >> >> >> >> > used >>> >> >> >> >> > in >>> >> >> >> >> > Swing, addActionListener...) >>> >> >> >> >> > >>> >> >> >> >> > Is the CDI Event way something to consider (seems more >>> >> >> >> >> > elegant)? I >>> >> >> >> >> > would >>> >> >> >> >> > not >>> >> >> >> >> > want observers of different requests (threads) see each >>> others >>> >> >> >> >> > events. >>> >> >> >> >> > >>> >> >> >> >> > Regards >>> >> >> >> >> > LF >>> >> >> >> >> > >>> >> >> >> >> > >>> >> >> >> >> > >>> >> >> >> >> > >>> >> >> >> >> > >>> >> >> >> >> > >>> >> >> >> >> > >>> >> >> >> >> > On Sat, Sep 20, 2014 at 7:46 AM, Mark Struberg >>> >> >> >> >> > <[email protected]> >>> >> >> >> >> > wrote: >>> >> >> >> >> >> >>> >> >> >> >> >> s/mathing/matching/g >>> >> >> >> >> >> >>> >> >> >> >> >> >>> >> >> >> >> >> >>> >> >> >> >> >> >>> >> >> >> >> >> > On Saturday, 20 September 2014, 7:46, Mark Struberg >>> >> >> >> >> >> > <[email protected]> >>> >> >> >> >> >> > wrote: >>> >> >> >> >> >> > > Yes all beans which are in active contests and have a >>> >> >> >> >> >> > > mathing >>> >> >> >> >> >> > > observer >>> >> >> >> >> >> > > method. >>> >> >> >> >> >> > >>> >> >> >> >> >> > >>> >> >> >> >> >> > How does it work: >>> >> >> >> >> >> > >>> >> >> >> >> >> > 1.) We collect all ObserverMethods which match the type >>> and >>> >> >> >> >> >> > generics >>> >> >> >> >> >> > info >>> >> >> >> >> >> > >>> >> >> >> >> >> > 2.) From those ObserverMethods we filter out all which >>> do >>> >> >> >> >> >> > not >>> >> >> >> >> >> > fit >>> >> >> >> >> >> > the >>> >> >> >> >> >> > qualifier >>> >> >> >> >> >> > >>> >> >> >> >> >> > 3.) Then we iterate over all the ObserverMethods and do >>> the >>> >> >> >> >> >> > following >>> >> >> >> >> >> > >>> >> >> >> >> >> > 3.1) if the Scope of the bean containing the >>> ObserverMethod >>> >> >> >> >> >> > is >>> >> >> >> >> >> > not >>> >> >> >> >> >> > active -> >>> >> >> >> >> >> > skip it. (this can happen if you e.g. have a >>> SessionScoped >>> >> >> >> >> >> > bean >>> >> >> >> >> >> > in >>> >> >> >> >> >> > an >>> >> >> >> >> >> > @Scheduled >>> >> >> >> >> >> > management thread) >>> >> >> >> >> >> > >>> >> >> >> >> >> > 3.2) if there is already a Contextual Instance in the >>> >> >> >> >> >> > Context >>> >> >> >> >> >> > of >>> >> >> >> >> >> > the >>> >> >> >> >> >> > Scope we >>> >> >> >> >> >> > call the observer method on that instance. >>> >> >> >> >> >> > >>> >> >> >> >> >> > 3.3.) if there is NO active Contextual Instance of the >>> bean >>> >> >> >> >> >> > containing >>> >> >> >> >> >> > the >>> >> >> >> >> >> > observer method yet and the @Observes has >>> >> >> >> >> >> > javax.enterprise.event.Reception.ALWAYS (which is the >>> >> >> >> >> >> > default) >>> >> >> >> >> >> > then >>> >> >> >> >> >> > we >>> >> >> >> >> >> > will >>> >> >> >> >> >> > first create the Contextual Instance and then call the >>> >> >> >> >> >> > method. >>> >> >> >> >> >> > >>> >> >> >> >> >> > 3.4) ATTENTION: There is a special rule for @Dependent >>> >> >> >> >> >> > scoped >>> >> >> >> >> >> > beans. >>> >> >> >> >> >> > For >>> >> >> >> >> >> > those >>> >> >> >> >> >> > we must create a NEW instance every time and after the >>> >> >> >> >> >> > observer >>> >> >> >> >> >> > method >>> >> >> >> >> >> > returns >>> >> >> >> >> >> > we will throw the instance away immediately. >>> >> >> >> >> >> > If you have a @Dependent bean injected into some other >>> >> >> >> >> >> > normalscoped >>> >> >> >> >> >> > beans then >>> >> >> >> >> >> > CDI will NOT invoke the observer methods on those >>> instances! >>> >> >> >> >> >> > Which >>> >> >> >> >> >> > effectively >>> >> >> >> >> >> > renders observing events in @Dependent beans pretty much >>> >> >> >> >> >> > useless. >>> >> >> >> >> >> > Just >>> >> >> >> >> >> > as a side >>> >> >> >> >> >> > note... >>> >> >> >> >> >> > >>> >> >> >> >> >> > >>> >> >> >> >> >> > LieGrue, >>> >> >> >> >> >> > strub >>> >> >> >> >> >> > >>> >> >> >> >> >> > >>> >> >> >> >> >> > >>> >> >> >> >> >> > >>> >> >> >> >> >> >> On Friday, 19 September 2014, 23:09, Romain >>> Manni-Bucau >>> >> >> >> >> >> > <[email protected]> wrote: >>> >> >> >> >> >> >> > Hi >>> >> >> >> >> >> >> >>> >> >> >> >> >> >> basically the scope will be the one of the observing >>> bean. >>> >> >> >> >> >> >> There >>> >> >> >> >> >> >> is >>> >> >> >> >> >> >> no >>> >> >> >> >> >> >> filter by scope in notification triggering. >>> >> >> >> >> >> >> >>> >> >> >> >> >> >> >>> >> >> >> >> >> >> Romain Manni-Bucau >>> >> >> >> >> >> >> Twitter: @rmannibucau >>> >> >> >> >> >> >> Blog: http://rmannibucau.wordpress.com/ >>> >> >> >> >> >> >> LinkedIn: http://fr.linkedin.com/in/rmannibucau >>> >> >> >> >> >> >> Github: https://github.com/rmannibucau >>> >> >> >> >> >> >> >>> >> >> >> >> >> >> >>> >> >> >> >> >> >> >>> >> >> >> >> >> >> 2014-09-19 22:00 GMT+02:00 Lars-Fredrik Smedberg >>> >> >> >> >> >> > <[email protected]>: >>> >> >> >> >> >> >>> Hi! >>> >> >> >> >> >> >>> >>> >> >> >> >> >> >>> When firing an CDI-Event, beans in what scope will >>> be >>> >> >> >> >> >> >>> able >>> >> >> >> >> >> >>> to >>> >> >> >> >> >> >>> @Observe >>> >> >> >> >> >> > it? >>> >> >> >> >> >> >>> Is it @ApplicationScoped, @SessionScoped belonging >>> to >>> >> >> >> >> >> >>> the >>> >> >> >> >> >> >>> same >>> >> >> >> >> >> >>> session >>> >> >> >> >> >> > as >>> >> >> >> >> >> >>> the one it was fired from and @RequestScoped >>> belonging >>> >> >> >> >> >> >>> to >>> >> >> >> >> >> >>> the >>> >> >> >> >> >> >>> same >>> >> >> >> >> >> > thread >>> >> >> >> >> >> >> as >>> >> >> >> >> >> >>> the one it was fired from? (We do not use any JSF >>> and >>> >> >> >> >> >> > @ConversationScoped >>> >> >> >> >> >> >>> beans). >>> >> >> >> >> >> >>> >>> >> >> >> >> >> >>> Could someone clarify this and if possible point to >>> some >>> >> >> >> >> >> >>> specs >>> >> >> >> >> >> >>> and >>> >> >> >> >> >> > chapters >>> >> >> >> >> >> >>> for me to read about it in more detail? I did look >>> in >>> >> >> >> >> >> >>> JSR299 >>> >> >> >> >> >> >>> but >>> >> >> >> >> >> >>> I >>> >> >> >> >> >> > might >>> >> >> >> >> >> >>> have overlooked it. >>> >> >> >> >> >> >>> >>> >> >> >> >> >> >>> Thanks >>> >> >> >> >> >> >>> Lars-Fredrik >>> >> >> >> >> >> >>> >>> >> >> >> >> >> >>> -- >>> >> >> >> >> >> >>> Med vänlig hälsning / Best regards >>> >> >> >> >> >> >>> >>> >> >> >> >> >> >>> Lars-Fredrik Smedberg >>> >> >> >> >> >> >>> >>> >> >> >> >> >> >>> STATEMENT OF CONFIDENTIALITY: >>> >> >> >> >> >> >>> The information contained in this electronic >>> message and >>> >> >> >> >> >> >>> any >>> >> >> >> >> >> >>> attachments to this message are intended for the >>> >> >> >> >> >> >>> exclusive >>> >> >> >> >> >> >>> use >>> >> >> >> >> >> >>> of >>> >> >> >> >> >> >>> the >>> >> >> >> >> >> >>> address(es) and may contain confidential or >>> privileged >>> >> >> >> >> >> >>> information. >>> >> >> >> >> >> >>> If >>> >> >> >> >> >> >>> you are not the intended recipient, please notify >>> >> >> >> >> >> >>> Lars-Fredrik >>> >> >> >> >> >> > Smedberg >>> >> >> >> >> >> >>> immediately at [email protected], and destroy all >>> >> >> >> >> >> >>> copies >>> >> >> >> >> >> >>> of >>> >> >> >> >> >> >>> this >>> >> >> >> >> >> >>> message and any attachments. >>> >> >> >> >> >> >> >>> >> >> >> >> >> > >>> >> >> >> >> > >>> >> >> >> >> > >>> >> >> >> >> > >>> >> >> >> >> > >>> >> >> >> >> > -- >>> >> >> >> >> > Med vänlig hälsning / Best regards >>> >> >> >> >> > >>> >> >> >> >> > Lars-Fredrik Smedberg >>> >> >> >> >> > >>> >> >> >> >> > STATEMENT OF CONFIDENTIALITY: >>> >> >> >> >> > The information contained in this electronic message and >>> any >>> >> >> >> >> > attachments to this message are intended for the exclusive >>> use >>> >> >> >> >> > of >>> >> >> >> >> > the >>> >> >> >> >> > address(es) and may contain confidential or privileged >>> >> >> >> >> > information. >>> >> >> >> >> > If >>> >> >> >> >> > you are not the intended recipient, please notify >>> Lars-Fredrik >>> >> >> >> >> > Smedberg >>> >> >> >> >> > immediately at [email protected], and destroy all copies >>> of >>> >> >> >> >> > this >>> >> >> >> >> > message and any attachments. >>> >> >> >> > >>> >> >> >> > >>> >> >> >> > >>> >> >> >> > >>> >> >> >> > -- >>> >> >> >> > Med vänlig hälsning / Best regards >>> >> >> >> > >>> >> >> >> > Lars-Fredrik Smedberg >>> >> >> >> > >>> >> >> >> > STATEMENT OF CONFIDENTIALITY: >>> >> >> >> > The information contained in this electronic message and any >>> >> >> >> > attachments to this message are intended for the exclusive >>> use of >>> >> >> >> > the >>> >> >> >> > address(es) and may contain confidential or privileged >>> >> >> >> > information. >>> >> >> >> > If >>> >> >> >> > you are not the intended recipient, please notify Lars-Fredrik >>> >> >> >> > Smedberg >>> >> >> >> > immediately at [email protected], and destroy all copies of >>> this >>> >> >> >> > message and any attachments. >>> >> >> > >>> >> >> > >>> >> >> > >>> >> >> > >>> >> >> > -- >>> >> >> > Med vänlig hälsning / Best regards >>> >> >> > >>> >> >> > Lars-Fredrik Smedberg >>> >> >> > >>> >> >> > STATEMENT OF CONFIDENTIALITY: >>> >> >> > The information contained in this electronic message and any >>> >> >> > attachments to this message are intended for the exclusive use >>> of the >>> >> >> > address(es) and may contain confidential or privileged >>> information. >>> >> >> > If >>> >> >> > you are not the intended recipient, please notify Lars-Fredrik >>> >> >> > Smedberg >>> >> >> > immediately at [email protected], and destroy all copies of >>> this >>> >> >> > message and any attachments. >>> >> > >>> >> > >>> >> > >>> >> > >>> >> > -- >>> >> > Med vänlig hälsning / Best regards >>> >> > >>> >> > Lars-Fredrik Smedberg >>> >> > >>> >> > STATEMENT OF CONFIDENTIALITY: >>> >> > The information contained in this electronic message and any >>> >> > attachments to this message are intended for the exclusive use of >>> the >>> >> > address(es) and may contain confidential or privileged information. >>> If >>> >> > you are not the intended recipient, please notify Lars-Fredrik >>> Smedberg >>> >> > immediately at [email protected], and destroy all copies of this >>> >> > message and any attachments. >>> > >>> > >>> > >>> > >>> > -- >>> > Med vänlig hälsning / Best regards >>> > >>> > Lars-Fredrik Smedberg >>> > >>> > STATEMENT OF CONFIDENTIALITY: >>> > The information contained in this electronic message and any >>> > attachments to this message are intended for the exclusive use of the >>> > address(es) and may contain confidential or privileged information. If >>> > you are not the intended recipient, please notify Lars-Fredrik Smedberg >>> > immediately at [email protected], and destroy all copies of this >>> > message and any attachments. >>> >> >> >> >> -- >> Med vänlig hälsning / Best regards >> >> Lars-Fredrik Smedberg >> >> STATEMENT OF CONFIDENTIALITY: >> The information contained in this electronic message and any >> attachments to this message are intended for the exclusive use of the >> address(es) and may contain confidential or privileged information. If >> you are not the intended recipient, please notify Lars-Fredrik Smedberg >> immediately at [email protected], and destroy all copies of this >> message and any attachments. >> > > -- Med vänlig hälsning / Best regards Lars-Fredrik Smedberg STATEMENT OF CONFIDENTIALITY: The information contained in this electronic message and any attachments to this message are intended for the exclusive use of the address(es) and may contain confidential or privileged information. If you are not the intended recipient, please notify Lars-Fredrik Smedberg immediately at [email protected], and destroy all copies of this message and any attachments.
