Which point of my argumentation chain? 
Which sentence?
Which section in the spec does get injured?

LieGrue,
strub

--- Gurkan Erdogdu <[email protected]> schrieb am Di, 13.4.2010:

> Von: Gurkan Erdogdu <[email protected]>
> Betreff: Re: svn commit: r933348 - in 
> /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept:
>   ApplicationScopedBeanIntereptorHandler.java 
> DependentScopedBeanInterceptorHandler.java  InterceptorHandler.java 
> NormalScopedBeanInterceptorHand
> An: [email protected]
> Datum: Dienstag, 13. April, 2010 10:57 Uhr
> Your points are not aligned with
> specification. You have viewed a different perspective on
> using CContexts from how TCK and OWB are implemented .
> 
> :)
> 
> 
> 
> ________________________________
> From: Mark Struberg <[email protected]>
> To: [email protected]
> Sent: Tue, April 13, 2010 11:38:18 AM
> Subject: Re: svn commit: r933348 - in
> /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept: 
> ApplicationScopedBeanIntereptorHandler.java
> DependentScopedBeanInterceptorHandler.java 
> InterceptorHandler.java NormalScopedBeanInterceptorHand
> 
> Hoi!
> 
> The problem is not that CreationalContext is not thread
> safe, but that NormalScopedBeanInterceptorHandler is not
> thread safe if you store the CreationalContext as member
> variable :)
> 
> And yes, I'm eating the provided CreationalContext for
> NormalScoped bean proxies, because in my opinion it must not
> get used. The argument: 
> 
> 1.) All contextual instances created within a
> CreationalContext hierarchy chain will get stored _within_
> that CreationalContext (for later being able to #destroy()
> them)
> 
> 2.) The CreationalContext will gets stored along with the
> uppermost contextual instance into the Context (the one who
> triggered Contextual#create(CreationalContext)), as an
> example in the JSF ViewMap (ViewScopedContext)
> 
> 3.) Only @Dependent objects must get stored in the same
> CreationalContext hierarchy, because they need to get stored
> on the same storage.
> 
> 4.) injected @NormalScoped contextual instances must _NOT_
> get added to the parents CreationalContext hierarchy chain,
> because otherwise this would lead to storing them alongside
> with the uppermost contextual instances CreationalContext.
> So if a @ViewScoped BeanV gets an @ApplicationScoped BeanA
> injected, a reference to BeanA would get stored in the
> ViewMap. And since BeanA is not serializable (application
> scoped beans most likely aren't) this did lead to the known
> serialization problems we faced.
> 
> Imo a @NormalScoped bean _always_ breaks the
> CreationalContext hierarchy chain and _always_ gets it's own
> one.
> 
> I think the whole wording of the CreationalContext in the
> spec is a bit obsolete and thus misleading now. This is from
> an area where we didn't have the mandatory proxying
> requisite in the spec - but never got cleared up properly.
> 
> LieGrue,
> strub
> 
> 
> --- Gurkan Erdogdu <[email protected]>
> schrieb am Di, 13.4.2010:
> 
> > Von: Gurkan Erdogdu <[email protected]>
> > Betreff: Re: svn commit: r933348 - in
> /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept: 
> ApplicationScopedBeanIntereptorHandler.java
> DependentScopedBeanInterceptorHandler.java 
> InterceptorHandler.java NormalScopedBeanInterceptorHand
> > An: [email protected]
> > Datum: Dienstag, 13. April, 2010 10:11 Uhr
> > Hi;
> > 
> > CreationalContext is a thread safe, you have to
> provide
> > thread safety when running multiple threads and the
> most
> > important object in CreationalContext is
> objectInstance and
> > its thread safe. 
> > 
> > There is no problem I have seen. Also, your solution
> eats
> > client provided CreatinalContext because you create
> > CreationalContext instead of using client's CC.
> > 
> > >>>But there is only ONE instance of
> > MailService#user! And this will got 
> > hit by 10.000 requests from different users
> concurrently.
> > What is the problem here? Where is the location that 
> > CreationalContext is updated by multiple threads and
> not
> > thread safe?
> > 
> > So, I really do no understand why you insist on
> keeping
> > wrong code there via some assumptions. It will have
> some
> > thread safe problem of CreationalContext but it needs
> > updating not changing logic.
> > 
> > --Gurkan
> > 
> > 
> > 
> > 
> > ________________________________
> > From: Mark Struberg <[email protected]>
> > To: [email protected]
> > Sent: Tue, April 13, 2010 9:35:04 AM
> > Subject: Re: svn commit: r933348 - in
> >
> /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept:
> 
> > ApplicationScopedBeanIntereptorHandler.java
> > DependentScopedBeanInterceptorHandler.java 
> > InterceptorHandler.java
> NormalScopedBeanInterceptorHand
> > 
> > Gurkan, it's really easy
> > 
> > the method chain is 
> > NormalScopedBeanInterceptorHandler#invoke
> >   -> super.invoke
> >     ->
> > NormalScopedBeanInterceptorHandler#aroundInvoke
> > 
> > and all those functions pass their information NOT by
> > parameter (super.invoke does it partly) but directly
> access
> > NormalScopedBeanInterceptorHandler#creationalContext.
> > 
> > So since the MethodHandler from an @ApplicationScoped
> or
> > @SessionScoped bean may easily get invoked in parallel
> from
> > multiple threads, they WILL override each other!
> > 
> > There is nothing we need to proof with a unit test
> because
> > a) this is clear as water
> > b) such concurrency problems are really hard to proof
> in a
> > unit test (you can only 'likely' produce them because
> we
> > have no control over thread timing
> > 
> > The Situation where this may easily occur (and it did
> > already pretty often on my 4-core workstation and in
> > production).
> > 
> > I already posted an example:
> > 
> > 
> > @SessionScoped public class User [
> >   public String getEmail()..
> > }
> > 
> > @ApplicationScoped class MailService {
> >   private @Inject User usr;
> > 
> >   public void sendMail(String content)
> {
> >     sendInternal(user.getEmail(),
> content);
> >   }
> > }
> > 
> > 
> > Now imagine you use this MailService in a JSF backing
> bean
> > 
> > @RequestScoped
> > class MailFormBean {
> >   private @Inject MailService mailSvc;
> >   private String content;
> >   ...
> > 
> >   public send() {
> >     mailSvc.sendMail(content);
> >   }
> > }
> > 
> > And now consider a webserver with 10.000 different
> users
> > clicking on the send button at the same time...
> > 
> > ALL those MailFormBean instances will use the same
> instance
> > of MailService since this is @ApplicationScoped,
> right?
> > And the MailService#user is a proxy to the User, still
> ok?
> > But there is only ONE instance of MailService#user!
> And
> > this will got hit by 10.000 requests from different
> users
> > concurrently.
> > 
> > That's why my change simply passes the
> CreationalContext
> > around as parameter.
> > 
> > I will go on and revert the change back.
> > 
> > LieGrue,
> > strub
> > 
> > --- Gurkan Erdogdu <[email protected]>
> > schrieb am Di, 13.4.2010:
> > 
> > > Von: Gurkan Erdogdu <[email protected]>
> > > Betreff: Re: svn commit: r933348 - in
> >
> /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept:
> 
> > ApplicationScopedBeanIntereptorHandler.java
> > DependentScopedBeanInterceptorHandler.java 
> > InterceptorHandler.java
> NormalScopedBeanInterceptorHand
> > > An: [email protected]
> > > Datum: Dienstag, 13. April, 2010 00:18 Uhr
> > > As long as the CreationalContext
> > > related with the bean is in the
> > > AbstractContext#CreationalContextMap, no thread
> can
> > > override it, just use
> > > old creational context.
> > > 
> > > 2010/4/13 Gurkan Erdogdu <[email protected]>
> > > 
> > > > >>>....But if in the meantime
> _another_
> > > thread overwrites this
> > > > NormalScopedBeanInterceptorHan
> > > > >>>dler.creationalContext (by using
> the
> > same
> > > proxy instance), then we get
> > > > into troubles.
> > > >
> > > > Where is the location of this code, i.e
> > _another_
> > > thread overwrites this
> > > >
> > NormalScopedBeanInterceptorHandler.creationalContext
> > > >
> > > > Thanks;
> > > >
> > > > --Gurkan
> > > >
> > > >
> > > > 2010/4/13 Mark Struberg <[email protected]>
> > > >
> > > > This makes no difference, really.
> > > >> The problem is that we store a
> > CreationalContext
> > > as a member in
> > > >> NormalScopedBeanInterceptorHandler. And
> > subsequent
> > > function calls rely on
> > > >> it. But if in the meantime _another_
> thread
> > > overwrites this
> > > >>
> > >
> NormalScopedBeanInterceptorHandler.creationalContext
> > (by
> > > using the same
> > > >> proxy instance), then we get into
> troubles.
> > > >>
> > > >> Tbis is hard to debug and write tests
> for,
> > but
> > > this is really obvious from
> > > >> looking at the code. And I already had
> this
> > > problem in my apps. It's not
> > > >> funny to randomly pickup instances from
> > other
> > > sessions...
> > > >>
> > > >> LieGrue,
> > > >> strub
> > > >>
> > > >> --- Gurkan Erdogdu <[email protected]>
> > > schrieb am Mo, 12.4.2010:
> > > >>
> > > >> > Von: Gurkan Erdogdu <[email protected]>
> > > >> > Betreff: Re: svn commit: r933348 -
> in
> > > >>
> > >
> >
> /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept:
> > > >>
> ApplicationScopedBeanIntereptorHandler.java
> > > >>
> DependentScopedBeanInterceptorHandler.java 
> > > InterceptorHandler.java
> > > >> NormalScopedBeanInterceptorHand
> > > >> > An: [email protected]
> > > >> > Datum: Montag, 12. April, 2010
> 22:29
> > Uhr
> > > >> > Please look at AbstractContext,
> > > >> > creationalContextMap#putIfAbsent
> call
> > > >> >
> > > >> > 2010/4/12 Mark Struberg <[email protected]>
> > > >> >
> > > >> > > Sorry, I think we need to
> rollback
> > the
> > > rollback, since
> > > >> > this re-introduces
> > > >> > > really heavy concurrency
> problems.
> > > >> > >
> > > >> > > @SessionScoped public class
> User [
> > > >> > >  public String
> getEmail()..
> > > >> > > }
> > > >> > >
> > > >> > > @ApplicationScoped class
> > MailService {
> > > >> > >  private @Inject User
> usr;
> > > >> > >
> > > >> > >  public void
> sendMail(String
> > > content) {
> > > >> > >   
> > > sendInternal(user.getEmail(), content);
> > > >> > >  }
> > > >> > > }
> > > >> > >
> > > >> > > now, with this change whenever
> 2
> > threads
> > > (from 2
> > > >> > sessions of a webserver)
> > > >> > > invoke sendMail and hit the
> > > user.getEmail() the
> > > >> > >
> NormalScopedBeanInterceptorHandler
> > gets
> > > called and
> > > >> > those 2 threads override
> > > >> > > each other the
> > > >> > > private transient
> > > >> >
> > > WeakReference<CreationalContext<?>>
> > > >> > creationalContext =
> > > >> > > null;
> > > >> > > because there is only one
> single
> > proxy
> > > instance being
> > > >> > used by those 2
> > > >> > > threads.
> > > >> > >
> > > >> > > Got me?
> > > >> > >
> > > >> > > LieGrue,
> > > >> > > strub
> > > >> > >
> > > >> > > --- [email protected]
> > > >> > <[email protected]>
> > > >> > schrieb am Mo, 12.4.2010:
> > > >> > >
> > > >> > > > Von: [email protected]
> > > >> > <[email protected]>
> > > >> > > > Betreff: svn commit:
> r933348 -
> > in
> > > >> > >
> > > >> >
> > > >>
> > >
> >
> /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept:
> > > >> > >
> > > ApplicationScopedBeanIntereptorHandler.java
> > > >> > >
> > > DependentScopedBeanInterceptorHandler.java
> > > >> > InterceptorHandler.java
> > > >> > >
> > NormalScopedBeanInterceptorHandler.java
> > > >> > > > An: [email protected]
> > > >> > > > Datum: Montag, 12.
> April,
> > 2010
> > > 20:20 Uhr
> > > >> > > > Author: gerdogdu
> > > >> > > > Date: Mon Apr 12
> 18:20:06
> > 2010
> > > >> > > > New Revision: 933348
> > > >> > > >
> > > >> > > > URL: http://svn.apache.org/viewvc?rev=933348&view=rev
> > > >> > > > Log:
> > > >> > > > [OWB-351] OWB picks up
> > > @SessionScoped contextual
> > > >> > instances
> > > >> > > > from expired sessions.
> > Corrects
> > > eating client
> > > >> > provided
> > > >> > > > creational context via
> > > BeanManager#getReference
> > > >> > > >
> > > >> > > > Modified:
> > > >> > > >
> > > >> > > >
> > > >> > >
> > > >> >
> > > >>
> > >
> >
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/ApplicationScopedBeanIntereptorHandler.java
> > > >> > > >
> > > >> > > >
> > > >> > >
> > > >> >
> > > >>
> > >
> >
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/DependentScopedBeanInterceptorHandler.java
> > > >> > > >
> > > >> > > >
> > > >> > >
> > > >> >
> > > >>
> > >
> >
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorHandler.java
> > > >> > > >
> > > >> > > >
> > > >> > >
> > > >> >
> > > >>
> > >
> >
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/NormalScopedBeanInterceptorHandler.java
> > > >> > > >
> > > >> > > > Modified:
> > > >> > > >
> > > >> > >
> > > >> >
> > > >>
> > >
> >
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/ApplicationScopedBeanIntereptorHandler.java
> > > >> > > > URL:
> > > >> > >
> > > >> http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/ApplicationScopedBeanIntereptorHandler.java?rev=933348&r1=933347&r2=933348&view=diff
> > > >> > > >
> > > >> > >
> > > >> >
> > > >>
> > >
> >
> ==============================================================================
> > > >> > > > ---
> > > >> > > >
> > > >> > >
> > > >> >
> > > >>
> > >
> >
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/ApplicationScopedBeanIntereptorHandler.java
> > > >> > > > (original)
> > > >> > > > +++
> > > >> > > >
> > > >> > >
> > > >> >
> > > >>
> > >
> >
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/ApplicationScopedBeanIntereptorHandler.java
> > > >> > > > Mon Apr 12 18:20:06 2010
> > > >> > > > @@ -21,7 +21,6 @@
> package
> > > >> > org.apache.webbeans.intercept;
> > > >> > > >  import
> > > >> >
> > > javax.enterprise.context.spi.CreationalContext;
> > > >> > > >
> > > >> > > >  import
> > > >> >
> org.apache.webbeans.component.OwbBean;
> > > >> > > > -import
> > > >> > > >
> > > >> >
> > >
> >
> org.apache.webbeans.context.creational.CreationalContextImpl;
> > > >> > > >
> > > >> > > >
> > > >> > > >  /**
> > > >> > > > @@ -43,7 +42,7 @@ public
> > class
> > > >> > ApplicationScopedBeanIntere
> > > >> > > >      /**
> > > >> > > >   
> >    *
> > > Creates a new
> > > >> > handler.
> > > >> > > >   
> >    *
> > > @param bean
> > > >> > bean
> > > >> > > > - 
>    *
> > @param
> > > >> > creationalContext
> > > >> > > > creational context
> > > >> > > > + 
>    *
> > @param
> > > >> > creationalContext
> > > >> > > > creaitonal context
> > > >> > > >   
> >    */
> > > >> > > >     
> public
> > > >> > > >
> > > >> >
> > >
> >
> ApplicationScopedBeanIntereptorHandler(OwbBean<?>
> > > >> > > > bean,
> > CreationalContext<?>
> > > >> > creationalContext)
> > > >> > > >      {
> > > >> > > > @@ -53,11 +52,11 @@
> public
> > class
> > > >> > > >
> ApplicationScopedBeanIntere
> > > >> > > >      /**
> > > >> > > >   
> >    *
> > > {...@inheritdoc}
> > > >> > > >   
> >    */
> > > >> > > > -    protected
> > Object
> > > >> > > >
> > > getContextualInstance(OwbBean<Object>
> > > >> > bean,
> > > >> > > >
> > CreationalContextImpl<?>
> > > >> > creationalContext)
> > > >> > > > +    protected
> > Object
> > > >> > > >
> > > getContextualInstance(OwbBean<Object>
> > > >> > bean)
> > > >> > > >      {
> > > >> > > >     
> >    
> > > if
> > > >> > (cachedInstance
> > > >> > > > == null)
> > > >> > > >     
> >    
> > > {
> > > >> > > > -
> > > >> > cachedInstance =
> > > >> > > >
> > super.getContextualInstance(bean,
> > > >> > creationalContext);
> > > >> > > > +
> > > >> > cachedInstance =
> > > >> > > >
> > super.getContextualInstance(bean);
> > > >> > > >     
> >    
> > > }
> > > >> > > >
> > > >> > > >     
> >    
> > > return
> > > >> > > > cachedInstance;
> > > >> > > >
> > > >> > > > Modified:
> > > >> > > >
> > > >> > >
> > > >> >
> > > >>
> > >
> >
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/DependentScopedBeanInterceptorHandler.java
> > > >> > > > URL:
> > > >> > >
> > > >> http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/DependentScopedBeanInterceptorHandler.java?rev=933348&r1=933347&r2=933348&view=diff
> > > >> > > >
> > > >> > >
> > > >> >
> > > >>
> > >
> >
> ==============================================================================
> > > >> > > > ---
> > > >> > > >
> > > >> > >
> > > >> >
> > > >>
> > >
> >
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/DependentScopedBeanInterceptorHandler.java
> > > >> > > > (original)
> > > >> > > > +++
> > > >> > > >
> > > >> > >
> > > >> >
> > > >>
> > >
> >
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/DependentScopedBeanInterceptorHandler.java
> > > >> > > > Mon Apr 12 18:20:06 2010
> > > >> > > > @@ -67,12 +67,10 @@
> public
> > class
> > > >> > > >
> DependentScopedBeanIntercep
> > > >> > > >      /**
> > > >> > > >   
> >    *
> > > {...@inheritdoc}
> > > >> > > >   
> >    */
> > > >> > > > -    protected
> > Object
> > > >> > callAroundInvokes(Method
> > > >> > > > proceed, Object[]
> arguments,
> > > >> > List<InterceptorData>
> > > >> > > > stack,
> > > >> > > > -
> > > >> > > >
> > > >> > > >
> > > >> > > >   
> > > CreationalContextImpl<?> cc)
> > > >> > > > -    throws
> > Exception
> > > >> > > > +    protected
> > Object
> > > >> > callAroundInvokes(Method
> > > >> > > > proceed, Object[]
> arguments,
> > > >> > List<InterceptorData>
> > > >> > > > stack) throws Exception
> > > >> > > >      {
> > > >> > > >
> > > >> > > >   
> > InvocationContextImpl
> > > impl = new
> > > >> > > >
> > InvocationContextImpl(this.bean,
> > > >> > this.actualInstance
> > > >> > > > ,proceed, arguments,
> stack,
> > > >> > InterceptorType.AROUND_INVOKE);
> > > >> > > > -
> > > >> > > >
> > impl.setCreationalContext(cc);
> > > >> > > > +
> > > >> > > >
> > > impl.setCreationalContext(creationalContext);
> > > >> > > >
> > > >> > > >     
> >    
> > > return
> > > >> > > > impl.proceed();
> > > >> > > >      }
> > > >> > > >
> > > >> > > > Modified:
> > > >> > > >
> > > >> > >
> > > >> >
> > > >>
> > >
> >
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorHandler.java
> > > >> > > > URL:
> > > >> > >
> > > >> http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorHandler.java?rev=933348&r1=933347&r2=933348&view=diff
> > > >> > > >
> > > >> > >
> > > >> >
> > > >>
> > >
> >
> ==============================================================================
> > > >> > > > ---
> > > >> > > >
> > > >> > >
> > > >> >
> > > >>
> > >
> >
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorHandler.java
> > > >> > > > (original)
> > > >> > > > +++
> > > >> > > >
> > > >> > >
> > > >> >
> > > >>
> > >
> >
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorHandler.java
> > > >> > > > Mon Apr 12 18:20:06 2010
> > > >> > > > @@ -169,13 +169,11 @@
> public
> > > abstract class
> > > >> > > > InterceptorHandler
> > > >> > > >   
> >    *
> > > @param method
> > > >> > business method
> > > >> > > >   
> >    *
> > > @param proceed
> > > >> > proceed method
> > > >> > > >   
> >    *
> > > @param arguments
> > > >> > method arguments
> > > >> > > > - 
>    *
> > @param
> > > >> > creationalContext bean
> > > >> > > > creational context
> > > >> > > > + 
>    *
> > @param
> > > >> > ownerCreationalContext
> > > >> > > > bean creational context
> > > >> > > >   
> >    *
> > > @return method
> > > >> > result
> > > >> > > >   
> >    *
> > > @throws
> > > >> > Exception for exception
> > > >> > > >   
> >    */
> > > >> > > > -    public
> Object
> > > invoke(Object
> > > >> > instance, Method
> > > >> > > > method, Method proceed,
> > Object[]
> > > arguments,
> > > >> > > > -
> > > >> > > >
> > > >> > > >   
> > > CreationalContextImpl<?>
> > > >> > > > creationalContext)
> > > >> > > > -    throws
> > Exception
> > > >> > > > +    public
> Object
> > > invoke(Object
> > > >> > instance, Method
> > > >> > > > method, Method proceed,
> > Object[]
> > > arguments,
> > > >> > > >
> > CreationalContextImpl<?>
> > > >> > ownerCreationalContext)
> > > >> > > > throws Exception
> > > >> > > >      {
> > > >> > > >     
> >    
> > > //Result of
> > > >> > > > invocation
> > > >> > > >     
> >    
> > > Object result
> > > >> > =
> > > >> > > > null;
> > > >> > > > @@ -212,7 +210,7 @@
> public
> > abstract
> > > class
> > > >> > > > InterceptorHandler
> > > >> > > >
> > > >> > > >
> > > >> > > >
> > > >> >
> > >
> >
> ((ProxyObject)delegate).setHandler(this.delegateHandler);
> > > >> > > >
> > > >> > > >
> > > >> > > >     
> >    
> > > // Gets
> > > >> > component
> > > >> > > > decorator stack
> > > >> > > > -
> > > >> > > >     
> > >    decorators
> > > >> > =
> > > >> > > >
> > > >> >
> > >
> >
> WebBeansDecoratorConfig.getDecoratorStack(injectionTarget,
> > > >> > > > instance, delegate,
> > > creationalContext);
> > > >> > > >
> > > >> > > >
> > > >> > > > +
> > > >> > > >     
> > >    decorators
> > > >> > =
> > > >> > > >
> > > >> >
> > >
> >
> WebBeansDecoratorConfig.getDecoratorStack(injectionTarget,
> > > >> > > > instance, delegate,
> > > ownerCreationalContext);
> > > >> > > >
> > > >> > > >
> > > >> > > >
> > > >> > > >     
> >    
> > > //Sets
> > > >> > decorator
> > > >> > > > stack of delegate
> > > >> > > >
> > > >> > > >
> > > >> > > >
> > > >> >
> > > this.delegateHandler.setDecorators(decorators);
> > > >> > > >
> > > >> > > >
> > > >> > > > @@ -249,10 +247,7 @@
> public
> > > abstract class
> > > >> > > > InterceptorHandler
> > > >> > > >
> > > >> > > >     
> >    
> > > // Call Around
> > > >> > > > Invokes
> > > >> > > >
> > > >> > > >     
> >    
> > > if
> > > >> > > >
> > > >> > >
> > > >> >
> > > >>
> > >
> >
> (WebBeansUtil.isContainsInterceptorMethod(this.interceptedMethodMap.get(method),
> > > >> > > >
> > InterceptorType.AROUND_INVOKE))
> > > >> > > >
> > > >> > > >     
> >    
> > > {
> > > >> > > > -
> > > >> > > >
> > > >> >    return
> > > >> > > >
> callAroundInvokes(method,
> > > arguments,
> > > >> > > > -
> > > >> > > >
> > > >> > > >
> > > >> > > >
> > > >> > > >
> > > >> > >
> > > >> >
> > > >>
> > >
> >
> InterceptorUtil.getInterceptorMethods(this.interceptedMethodMap.get(method),
> > > >> > > > -
> > > >> > > >
> > > >> > > >
> > > >> > > >
> > > >> > > >
> > > >> > > >
> > > >> > > >
> > InterceptorType.AROUND_INVOKE),
> > > >> > > > -
> > > >> > > >
> > > >> > > >
> > > >> > > > 
> > >    creationalContext);
> > > >> > > > +
> > > >> > > >
> > > >> >    return
> > > >> > > >
> callAroundInvokes(method,
> > > arguments,
> > > >> > > >
> > > >> > >
> > > >> >
> > > >>
> > >
> >
> InterceptorUtil.getInterceptorMethods(this.interceptedMethodMap.get(method),
> > > >> > > >
> > InterceptorType.AROUND_INVOKE));
> > > >> > > >
> > > >> > > >     
> >    
> > > }
> > > >> > > >
> > > >> > > >
> > > >> > > >
> > > >> > > >      }
> > > >> > > > @@ -307,9 +302,7 @@
> public
> > abstract
> > > class
> > > >> > > > InterceptorHandler
> > > >> > > >   
> >    *
> > > @return return
> > > >> > of method
> > > >> > > >   
> >    *
> > > @throws
> > > >> > Exception for any exception
> > > >> > > >   
> >    */
> > > >> > > > -    protected
> > abstract
> > > Object
> > > >> > > > callAroundInvokes(Method
> > > interceptedMethod,
> > > >> > Object[]
> > > >> > > > arguments,
> > > >> > > > -
> > > >> > > >
> > > >> > > >
> > > >> > > >
> List<InterceptorData>
> > stack,
> > > >> > > >
> > CreationalContextImpl<?>
> > > >> > creationalContext)
> > > >> > > > -    throws
> > Exception;
> > > >> > > > +    protected
> > abstract
> > > Object
> > > >> > > > callAroundInvokes(Method
> > > interceptedMethod,
> > > >> > Object[]
> > > >> > > > arguments,
> > > List<InterceptorData> stack)
> > > >> > throws
> > > >> > > > Exception;
> > > >> > > >
> > > >> > > >      /**
> > > >> > > >   
> >    *
> > > >> > > >
> > > >> > > > Modified:
> > > >> > > >
> > > >> > >
> > > >> >
> > > >>
> > >
> >
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/NormalScopedBeanInterceptorHandler.java
> > > >> > > > URL:
> > > >> > >
> > > >> http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/NormalScopedBeanInterceptorHandler.java?rev=933348&r1=933347&r2=933348&view=diff
> > > >> > > >
> > > >> > >
> > > >> >
> > > >>
> > >
> >
> ==============================================================================
> > > >> > > > ---
> > > >> > > >
> > > >> > >
> > > >> >
> > > >>
> > >
> >
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/NormalScopedBeanInterceptorHandler.java
> > > >> > > > (original)
> > > >> > > > +++
> > > >> > > >
> > > >> > >
> > > >> >
> > > >>
> > >
> >
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/NormalScopedBeanInterceptorHandler.java
> > > >> > > > Mon Apr 12 18:20:06 2010
> > > >> > > > @@ -18,6 +18,7 @@
> > > >> > > >   */
> > > >> > > >  package
> > > org.apache.webbeans.intercept;
> > > >> > > >
> > > >> > > > +import
> > > java.lang.ref.WeakReference;
> > > >> > > >  import
> > > java.lang.reflect.Method;
> > > >> > > >  import
> java.util.List;
> > > >> > > >
> > > >> > > > @@ -42,6 +43,9 @@ public
> > class
> > > >> > NormalScopedBeanInterceptor
> > > >> > > >     
> /**Serial
> > id*/
> > > >> > > >     
> private
> > static
> > > final long
> > > >> > > > serialVersionUID = 1L;
> > > >> > > >
> > > >> > > > +   
> /**Creational
> > > context*/
> > > >> > > > +    private
> > transient
> > > >> > > >
> > > WeakReference<CreationalContext<?>>
> > > >> > > > creationalContext =
> null;
> > > >> > > > +
> > > >> > > >      /**
> > > >> > > >   
> >    *
> > > Creates a new
> > > >> > bean instance
> > > >> > > >   
> >    *
> > > @param bean
> > > >> > bean
> > > >> > > > @@ -50,6 +54,7 @@ public
> > class
> > > >> > NormalScopedBeanInterceptor
> > > >> > > >     
> public
> > > >> > > >
> > > >> >
> > >
> NormalScopedBeanInterceptorHandler(OwbBean<?>
> > bean,
> > > >> > > >
> CreationalContext<?>
> > > creationalContext)
> > > >> > > >      {
> > > >> > > >     
> >    
> > > super(bean);
> > > >> > > > +
> > > >> > this.creationalContext = new
> > > >> > > >
> > > >> >
> > >
> >
> WeakReference<CreationalContext<?>>(creationalContext);
> > > >> > > >      }
> > > >> > > >
> > > >> > > >      /**
> > > >> > > > @@ -58,38 +63,21 @@
> public
> > class
> > > >> > > >
> NormalScopedBeanInterceptor
> > > >> > > >     
> @Override
> > > >> > > >     
> public
> > Object
> > > invoke(Object
> > > >> > > > instance, Method method,
> > Method
> > > proceed, Object[]
> > > >> > arguments)
> > > >> > > > throws Exception
> > > >> > > >      {
> > > >> > > > -
> > > >> > CreationalContextImpl<?>
> > > >> > > > creationalContext =
> null;
> > > >> > > > -
> > > >> > > > -   
> >    
> > > //Context of the
> > > >> > bean
> > > >> > > > -   
> >    
> > > Context
> > > >> > webbeansContext =
> > > >> > > >
> > > getBeanManager().getContext(bean.getScope());
> > > >> > > > -
> > > >> > > > -   
>    
> > if
> > > (webbeansContext
> > > >> > instanceof
> > > >> > > > AbstractContext)
> > > >> > > > -   
>    
> > {
> > > >> > > > -
> > > >> > > > creationalContext =
> > > >> > (CreationalContextImpl<?>)
> > > >> > > >
> > > >> >
> > >
> >
> ((AbstractContext)webbeansContext).getCreationalContext(bean);
> > > >> > > > -   
>    
> > }
> > > >> > > > -   
>    
> > if
> > > >> > (creationalContext ==
> > > >> > > > null)
> > > >> > > > -   
>    
> > {
> > > >> > > > - 
>    
> >    
> > >   // if
> > > >> > there was
> > > >> > > > no CreationalContext set
> from
> > > external, we create
> > > >> > a new one
> > > >> > > > -
> > > >> > > > creationalContext =
> > > >> > (CreationalContextImpl<?>)
> > > >> > > >
> > > >> >
> > >
> >
> CreationalContextFactory.getInstance().getCreationalContext(bean);
> > > >> > > > -   
>    
> > }
> > > >> > > > -
> > > >> > > >     
> >    
> > > //Get instance
> > > >> > from
> > > >> > > > context
> > > >> > > > -   
> >    
> > > Object
> > > >> > webbeansInstance =
> > > >> > > >
> > > getContextualInstance((OwbBean<Object>)
> > > >> > this.bean,
> > > >> > > > creationalContext);
> > > >> > > > +   
> >    
> > > Object
> > > >> > webbeansInstance =
> > > >> > > >
> > > getContextualInstance((OwbBean<Object>)
> > > >> > this.bean);
> > > >> > > >
> > > >> > > >     
> >    
> > > //Call super
> > > >> > > > -   
> >    
> > > return
> > > >> > > >
> > super.invoke(webbeansInstance,
> > > method, proceed,
> > > >> > arguments,
> > > >> > > > creationalContext);
> > > >> > > > +   
> >    
> > > return
> > > >> > > >
> > super.invoke(webbeansInstance,
> > > method, proceed,
> > > >> > arguments,
> > > >> > > >
> > (CreationalContextImpl<?>)
> > > >> > > >
> > this.creationalContext.get());
> > > >> > > >      }
> > > >> > > >
> > > >> > > >      /**
> > > >> > > >   
> >    *
> > > {...@inheritdoc}
> > > >> > > >   
> >    */
> > > >> > > > -    protected
> > Object
> > > >> > callAroundInvokes(Method
> > > >> > > > proceed, Object[]
> arguments,
> > > >> > List<InterceptorData>
> > > >> > > > stack,
> > > CreationalContextImpl<?>
> > > >> > creationalContext)
> > > >> > > > -    throws
> > Exception
> > > >> > > > +    protected
> > Object
> > > >> > callAroundInvokes(Method
> > > >> > > > proceed, Object[]
> arguments,
> > > >> > List<InterceptorData>
> > > >> > > > stack) throws Exception
> > > >> > > >      {
> > > >> > > > -
> > > >> > InvocationContextImpl impl =
> > > >> > > > new
> > > InvocationContextImpl(this.bean,
> > > >> > > > -
> > > >> > > >
> > > >> > > >
> > > >> > > >
> > > >> > > >
> > > >> >
> > > getContextualInstance((OwbBean<Object>)
> > > >> > > > this.bean,
> > creationalContext),
> > > >> > > > +
> > > >> > InvocationContextImpl impl =
> > > >> > > > new
> > > InvocationContextImpl(this.bean,
> > > >> > > >
> > > getContextualInstance((OwbBean<Object>)
> > > >> > this.bean),
> > > >> > > >
> > > >> > > >
> > > >> > > >
> > > >> > > >
> > > >> > > > proceed, arguments,
> stack,
> > > >> > InterceptorType.AROUND_INVOKE);
> > > >> > > > -
> > > >> > > >
> > > impl.setCreationalContext(creationalContext);
> > > >> > > > +
> > > >> > > >
> > > >> >
> > >
> impl.setCreationalContext(creationalContext.get());
> > > >> > > >
> > > >> > > >     
> >    
> > > return
> > > >> > > > impl.proceed();
> > > >> > > >
> > > >> > > > @@ -99,10 +87,9 @@
> public
> > class
> > > >> > > >
> NormalScopedBeanInterceptor
> > > >> > > >      /**
> > > >> > > >   
> >    *
> > > Gets instance
> > > >> > from context.
> > > >> > > >   
> >    *
> > > @param bean bean
> > > >> > instance
> > > >> > > > - 
>    *
> > @param
> > > >> > creationalContext
> > > >> > > >   
> >    *
> > > @return the
> > > >> > underlying contextual
> > > >> > > > instance, either cached
> or
> > resolved
> > > from the
> > > >> > context
> > > >> > > >   
> >    */
> > > >> > > > -    protected
> > Object
> > > >> > > >
> > > getContextualInstance(OwbBean<Object>
> > > >> > bean,
> > > >> > > >
> > CreationalContextImpl<?>
> > > >> > creationalContext)
> > > >> > > > +    protected
> > Object
> > > >> > > >
> > > getContextualInstance(OwbBean<Object>
> > > >> > bean)
> > > >> > > >      {
> > > >> > > >     
> >    
> > > Object
> > > >> > > > webbeansInstance = null;
> > > >> > > >
> > > >> > > > @@ -117,8 +104,22 @@
> public
> > class
> > > >> > > >
> NormalScopedBeanInterceptor
> > > >> > > >
> > > >> > return
> > > >> > > > webbeansInstance;
> > > >> > > >     
> >    
> > > }
> > > >> > > >
> > > >> > > > +   
>    
> > if
> > > (webbeansContext
> > > >> > instanceof
> > > >> > > > AbstractContext)
> > > >> > > > +   
>    
> > {
> > > >> > > > +
> > > >> > > >
> CreationalContext<?> cc
> > =
> > > >> > > >
> > > >> >
> > >
> >
> ((AbstractContext)webbeansContext).getCreationalContext(bean);
> > > >> > > > + 
>    
> >    
> > >   if (cc
> > > >> > != null)
> > > >> > > > + 
>    
> >    
> > >   {
> > > >> > > > +
> > > >> > > > creationalContext = new
> > > >> > > >
> > > >> >
> > >
> WeakReference<CreationalContext<?>>(cc);
> > > >> > > > + 
>    
> >    
> > >   }
> > > >> > > > +   
>    
> > }
> > > >> > > > +   
>    
> > if
> > > >> > (creationalContext ==
> > > >> > > > null)
> > > >> > > > +   
>    
> > {
> > > >> > > > + 
>    
> >    
> > >   // if
> > > >> > there was
> > > >> > > > no CreationalContext set
> from
> > > external, we create
> > > >> > a new one
> > > >> > > > +
> > > >> > > > creationalContext = new
> > > >> > > >
> > > >> > >
> > > >> >
> > > >>
> > >
> >
> WeakReference<CreationalContext<?>>(CreationalContextFactory.getInstance().getCreationalContext(bean));
> > > >> > > > +   
>    
> > }
> > > >> > > > +
> > > >> > > >     
> >    
> > > // finally, we
> > > >> > > > create a new contextual
> > instance
> > > >> > > > -   
> >    
> > > webbeansInstance =
> > > >> > > >
> > > >> >
> > >
> >
> webbeansContext.get((Contextual<Object>)this.bean,
> > > >> > > >
> > (CreationalContext<Object>)
> > > >> > creationalContext);
> > > >> > > > +   
> >    
> > > webbeansInstance =
> > > >> > > >
> > > >> >
> > >
> >
> webbeansContext.get((Contextual<Object>)this.bean,
> > > >> > > >
> > (CreationalContext<Object>)
> > > >> > creationalContext.get());
> > > >> > > >
> > > >> > > >     
> >    
> > > return
> > > >> > > > webbeansInstance;
> > > >> > > >      }
> > > >> > > >
> > > >> > > >
> > > >> > > >
> > > >> > >
> > > >> > >
> > >
> __________________________________________________
> > > >> > > Do You Yahoo!?
> > > >> > > Sie sind Spam leid? Yahoo!
> Mail
> > verfügt
> > > über einen
> > > >> > herausragenden Schutz
> > > >> > > gegen Massenmails.
> > > >> > > http://mail.yahoo.com
> > > >> > >
> > > >> >
> > > >> >
> > > >> >
> > > >> > --
> > > >> > Gurkan Erdogdu
> > > >> > http://gurkanerdogdu.blogspot.com
> > > >> >
> > > >>
> > > >>
> > > >>
> > >
> __________________________________________________
> > > >> Do You Yahoo!?
> > > >> Sie sind Spam leid? Yahoo! Mail
> verfügt
> > über
> > > einen herausragenden Schutz
> > > >> gegen Massenmails.
> > > >> http://mail.yahoo.com
> > > >>
> > > >
> > > >
> > > >
> > > > --
> > > > Gurkan Erdogdu
> > > > http://gurkanerdogdu.blogspot.com
> > > >
> > > 
> > > 
> > > 
> > > -- 
> > > Gurkan Erdogdu
> > > http://gurkanerdogdu.blogspot.com
> > > 
> > 
> > __________________________________________________
> > Do You Yahoo!?
> > Sie sind Spam leid? Yahoo! Mail verfügt über einen
> > herausragenden Schutz gegen Massenmails. 
> > http://mail.yahoo.com
> > 
> > 
> > 
> >      
> >
> ___________________________________________________________________
> > Yahoo! Türkiye açıldı!  http://yahoo.com.tr
> > İnternet üzerindeki en iyi içeriği Yahoo!
> Türkiye
> > sizlere sunuyor!
> 
> __________________________________________________
> Do You Yahoo!?
> Sie sind Spam leid? Yahoo! Mail verfügt über einen
> herausragenden Schutz gegen Massenmails. 
> http://mail.yahoo.com
> 
> 
> 
>      
> ___________________________________________________________________
> Yahoo! Türkiye açıldı!  http://yahoo.com.tr
> İnternet üzerindeki en iyi içeriği Yahoo! Türkiye
> sizlere sunuyor!

__________________________________________________
Do You Yahoo!?
Sie sind Spam leid? Yahoo! Mail verfügt über einen herausragenden Schutz gegen 
Massenmails. 
http://mail.yahoo.com

Reply via email to