openwebbeans-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Romain Manni-Bucau <rmannibu...@gmail.com>
Subject Re: Question on CDI Events and its observers
Date Wed, 01 Oct 2014 12:09:02 GMT
each instance will get a single event if I understood your example



Romain Manni-Bucau
Twitter: @rmannibucau
Blog: http://rmannibucau.wordpress.com/
LinkedIn: http://fr.linkedin.com/in/rmannibucau
Github: https://github.com/rmannibucau

2014-10-01 13:41 GMT+02:00 Lars-Fredrik Smedberg <itsmeden@gmail.com>:

> Hi again Mark and Romain
>
>
> When looking at your previous answers and starting to do a POC I need to
> ask again to be sure...
>
> Assume the following scenario
>
> - 3 parallell requests/threads
>
> - T1 injects a @RequestScoped Controller C1
> - T2 injects a @RequestScoped Controller C1
> - T3 does some other work
>
> Then
>
> - T1 calls a method on C1 which fires an event E, T1 @Observes E in a
> @RequestScoped bean
> - T2 calls a method on C2 which also fires an event E, T2 @Observes E in a
> @RequestScoped bean
>
> Question
>
> - Will T2 observe E fired from T1 and vice versa or will they only observe
> E fired from within their own thread/request?
>
>
> Regards
> LF
>
>
>
>
> On Sun, Sep 21, 2014 at 9:40 AM, Lars-Fredrik Smedberg <itsmeden@gmail.com
> > wrote:
>
>> Thanks for your answers..
>>
>> Have a nice weekend
>>
>> Regards
>> LF
>>
>> On Sun, Sep 21, 2014 at 1:41 AM, Romain Manni-Bucau <
>> rmannibucau@gmail.com> wrote:
>>
>>>
>>> 2014-09-21 1:19 GMT+02:00 Lars-Fredrik Smedberg <itsmeden@gmail.com>:
>>>
>>>> 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 <
>>>> rmannibucau@gmail.com> 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 <itsmeden@gmail.com>:
>>>>> > @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 <
>>>>> rmannibucau@gmail.com>
>>>>> > 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 <itsmeden@gmail.com
>>>>> >:
>>>>> >> > @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
>>>>> >> > <rmannibucau@gmail.com>
>>>>> >> > 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 <
>>>>> itsmeden@gmail.com>:
>>>>> >> >> > @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
>>>>> >> >> > <rmannibucau@gmail.com>
>>>>> >> >> > 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
>>>>> >> >> >> <itsmeden@gmail.com>:
>>>>> >> >> >> > @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
>>>>> >> >> >> > <rmannibucau@gmail.com>
>>>>> >> >> >> > 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
>>>>> >> >> >> >> <itsmeden@gmail.com>:
>>>>> >> >> >> >> > 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
>>>>> >> >> >> >> > <struberg@yahoo.de>
>>>>> >> >> >> >> > wrote:
>>>>> >> >> >> >> >>
>>>>> >> >> >> >> >> s/mathing/matching/g
>>>>> >> >> >> >> >>
>>>>> >> >> >> >> >>
>>>>> >> >> >> >> >>
>>>>> >> >> >> >> >>
>>>>> >> >> >> >> >> > On Saturday, 20 September
2014, 7:46, Mark Struberg
>>>>> >> >> >> >> >> > <struberg@yahoo.de>
>>>>> >> >> >> >> >> > 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
>>>>> >> >> >> >> >> > <rmannibucau@gmail.com>
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
>>>>> >> >> >> >> >> > <itsmeden@gmail.com>:
>>>>> >> >> >> >> >> >>>   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 itsmeden@gmail.com, 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 itsmeden@gmail.com,
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 itsmeden@gmail.com, 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 itsmeden@gmail.com, 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 itsmeden@gmail.com, 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 itsmeden@gmail.com, 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 itsmeden@gmail.com, 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 itsmeden@gmail.com, 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 itsmeden@gmail.com, and destroy all copies of this
> message and any attachments.
>

Mime
View raw message