+1 let's move forward!

Otherwise we will spend way too much time with discussions and too less with 
productive hacking ;)

LieGrue,
strub




----- Original Message -----
> From: Christian Kaltepoth <christ...@kaltepoth.de>
> To: dev@deltaspike.apache.org
> Cc: 
> Sent: Tuesday, 11 June 2013, 17:29
> Subject: Re: Servlet module prototype
> 
> Hey all,
> 
> I finished the modifications I proposed in my last mail. The code is now
> split up into different filters and listeners for each job. I think this
> makes the code much cleaner an maintainable. You can have a look at the
> branch here:
> 
> https://github.com/chkal/deltaspike/tree/servlet
> 
> Especially this package:
> 
> https://github.com/chkal/deltaspike/tree/servlet/deltaspike/modules/servlet/impl/src/main/java/org/apache/deltaspike/servlet/impl
> 
> For now I registered all the listeners in web-fragment.xml:
> 
> https://github.com/chkal/deltaspike/blob/servlet/deltaspike/modules/servlet/impl/src/main/resources/META-INF/web-fragment.xml
> 
> If you all agree, I could rebase and merge the current state into the
> Apache repository.
> 
> After I merged it, we could discuss how to implement ways to disable parts
> of the functionality. Either by implementing a dynamic registration using
> ServletInitializers or by using Deactivatable.
> 
> What do you think?
> 
> Christian
> 
> 
> 
> 2013/6/8 Christian Kaltepoth <christ...@kaltepoth.de>
> 
>>  Hey John,
>> 
>>  thank you very much for sharing your thoughts on this. It is very
>>  interesting for me to hear about the feedback your got from Solder users.
>>  And I think we should definitely address the issues you pointed out.
>> 
>>  So my idea would be the following. I could start separating the filter and
>>  the listeners into distinct classes with explicit functions. For example
>>  one filter for managing everything that is required for the injection of
>>  servlet objects and one filter for sending the events.
>> 
>>  After I'm done with this and if everybody agrees on the new structure, 
> I
>>  could merge the current state into the main repository. After that we could
>>  think about and work on an approach to partially disable functionality
>>  which should be easy to implement with this new structure.
>> 
>>  What do you think?
>> 
>> 
>> 
>> 
>>  2013/6/7 John D. Ament <john.d.am...@gmail.com>
>> 
>>  Hi Christian,
>>> 
>>>  Actually I was going to respond this morning but got side tracked.
>>> 
>>>  Anyways, I agree that the servlet module needs to provide all of this
>>>  functionality, however I think we need to make sure that it's more
>>>  scalable
>>>  than the way this worked in solder/seam3.  The biggest gripe I hear 
> from
>>>  people about seam3 was that it was all or nothing.  It was difficult to
>>>  activate only portions of the functionality.  I think we started to do
>>>  that
>>>  in DS with the deactivateable function but there are certain places 
> where
>>>  it makes sense to deactivate in other ways.
>>> 
>>>  What I'm suggesting is that we:
>>> 
>>>  1. Separate the listeners out - can we have two listeners, one for the
>>>  context listener and one for the session listener.
>>>  2. Come up with some way that the filters can be more manageable.  For
>>>  example, maybe I'm only interested in request, not response.  Maybe 
> I only
>>>  want Initialized and not Destroyed.  This way we don't have to fire 
> the
>>>  event every single request.  This is probably a good case for
>>>  deactivatable, but more at the class feature level.
>>>  3. Come up with a way to make this not automatically installed, even if
>>>  you
>>>  include the servlet module in your archive.  if metadata complete is 
> the
>>>  best option, we should just document the use of metadata complete to
>>>  disable the installation.
>>> 
>>>  John
>>> 
>>> 
>>>  On Fri, Jun 7, 2013 at 11:23 AM, Christian Kaltepoth <
>>>  christ...@kaltepoth.de
>>>  > wrote:
>>> 
>>>  > Sorry, I think my mail wasn't very clear. Sorry for the 
> confusion. :)
>>>  >
>>>  > The servlet module provides two features: the injection of servlet
>>>  objects
>>>  > and the propagation of servlet events. It makes sense that the 
> request
>>>  > events can be disabled. But IMHO the producers that allow 
> injection of
>>>  > servlet objects is a fundamental feature of the servlet module 
> without
>>>  any
>>>  > performance overhead and should therefore not be deactivateable.
>>>  >
>>>  > The filter implemented in the servlet modules does two things:
>>>  >
>>>  >    - It stores the request and the response in a ThreadLocal. The
>>>  producer
>>>  >    methods use this ThreadLocal to access the request/response. So 
> the
>>>  >    request/response injection requires this filter to work 
> correctly.
>>>  >    - The filter also propagates the servlet events to the CDI 
> event bus.
>>>  >    This is something that should be deactivatable.
>>>  >
>>>  > The same applies to things like the ServletContextListener. This 
> one
>>>  stores
>>>  > the ServletContext in a map for each context class loader and it 
> sends
>>>  the
>>>  > events for it's construction and destruction to the event bus, 
> while
>>>  only
>>>  > the latter one should be deactivateable.
>>>  >
>>>  > What I wanted to say in my previous mail is that we cannot use a
>>>  > ServletContainerInitializer
>>>  > which register the filter only if the servlet events are not 
> disabled,
>>>  > because this would not only disable the servlet events but also 
> break
>>>  the
>>>  > injection of the request/response into CDI beans.
>>>  >
>>>  > So I think it would make sense to always register the filter using
>>>  > web-fragment.xml. Additionally we could control if the events are 
> fired
>>>  or
>>>  > not using the config resolver approach that you talked about. But 
> the
>>>  > ThreadLocal management should always be active so that the 
> injection of
>>>  > request/response works like expected.
>>>  >
>>>  > To sum it up: IMHO we will _always_ need the filters and the 
> listeners
>>>  in
>>>  > the servlet module, but we should allow to disable certain parts 
> of
>>>  their
>>>  > functionality.
>>>  >
>>>  > I hope this makes everything a bit clearer. :)
>>>  >
>>>  > Christian
>>>  >
>>>  >
>>>  >
>>>  >
>>>  > 2013/6/7 Romain Manni-Bucau <rmannibu...@gmail.com>
>>>  >
>>>  > > If a user deactivate it it means it doesn't it the 
> feature so no need
>>>  of
>>>  > > any thread local. If a module needs it it can just override 
> the
>>>  > > configuration to force it (through config resolver) so i 
> still think
>>>  my
>>>  > > proposal was possible and better than having it always on (if 
> i missed
>>>  > sthg
>>>  > > just push a bit more your explanations please).
>>>  > >
>>>  > > *Romain Manni-Bucau*
>>>  > > *Twitter: @rmannibucau 
> <https://twitter.com/rmannibucau>*
>>>  > > *Blog: **http://rmannibucau.wordpress.com/*<
>>>  > > http://rmannibucau.wordpress.com/>
>>>  > > *LinkedIn: **http://fr.linkedin.com/in/rmannibucau*
>>>  > > *Github: https://github.com/rmannibucau*
>>>  > >
>>>  > >
>>>  > >
>>>  > > 2013/6/7 Christian Kaltepoth <christ...@kaltepoth.de>
>>>  > >
>>>  > > > @Romain:
>>>  > > >
>>>  > > > The filter and the listeners do not only send the events 
> but also
>>>  > manage
>>>  > > > the ThreadLocals required for the producers. So 
> currently it is
>>>  > required
>>>  > > to
>>>  > > > have the filter and the listeners configured for the 
> injection to
>>>  work.
>>>  > > > That's why I think that it makes sense to always 
> have the filter and
>>>  > > > listeners in place and just don't send the events if 
> the user
>>>  disabled
>>>  > > > them. And of cause one could use ConfigResolver for 
> that.
>>>  > > >
>>>  > > > @Mark:
>>>  > > >
>>>  > > > So you say that firing events is expensive even if there 
> are no
>>>  > observers
>>>  > > > listening?
>>>  > > >
>>>  > > > Generally I like the idea of having DeltaSpike 
> automatically detect
>>>  > that
>>>  > > > certain features can be disabled because they are not 
> used. So if
>>>  > nobody
>>>  > > > listens for servlet events, the filter could simply 
> never send them.
>>>  > > >
>>>  > > >
>>>  > > >
>>>  > > >
>>>  > > > 2013/6/7 Gerhard Petracek 
> <gerhard.petra...@gmail.com>
>>>  > > >
>>>  > > > > the general jira-issue for it is [1].
>>>  > > > >
>>>  > > > > regards,
>>>  > > > > gerhard
>>>  > > > >
>>>  > > > > [1] 
> https://issues.apache.org/jira/browse/DELTASPIKE-349
>>>  > > > >
>>>  > > > >
>>>  > > > >
>>>  > > > > 2013/6/7 Mark Struberg <strub...@yahoo.de>
>>>  > > > >
>>>  > > > > >
>>>  > > > > >
>>>  > > > > > Gerhard and me thought about this for quite a 
> few other
>>>  features as
>>>  > > > well.
>>>  > > > > >
>>>  > > > > >
>>>  > > > > > Event firing is indeed a bit expensive. Thus 
> we might add a
>>>  > > > > >
>>>  > > > > >
>>>  > > > > > Map<Class<? extends Deactivatable> 
> /*the 'feature'*/,
>>>  Set<Class<?>>
>>>  > > > > > /*types which get observed*/
>>>  > > > > >
>>>  > > > > > and utilize @Observes ProcessObserverMethod to 
> check whether
>>>  there
>>>  > > is a
>>>  > > > > > need to activate this feature at all.
>>>  > > > > >
>>>  > > > > > In short: if there is no ObserverMethod which 
> @Observes ?
>>>  extends
>>>  > > > > > ServletResponse or ServletResponse then we 
> don't need to fire
>>>  any
>>>  > CDI
>>>  > > > > > event. Not sure if this is needed though or 
> whether the
>>>  Containers
>>>  > > are
>>>  > > > > > smart enough to optimize this away themselfs 
> (with a negative
>>>  cache
>>>  > > > kind
>>>  > > > > of
>>>  > > > > > thingy).
>>>  > > > > >
>>>  > > > > >
>>>  > > > > > LieGrue,
>>>  > > > > > strub
>>>  > > > > >
>>>  > > > > > >________________________________
>>>  > > > > > > From: Christian Kaltepoth 
> <christ...@kaltepoth.de>
>>>  > > > > > >To: dev@deltaspike.apache.org
>>>  > > > > > >Cc: Mark Struberg 
> <strub...@yahoo.de>
>>>  > > > > > >Sent: Friday, 7 June 2013, 8:22
>>>  > > > > > >Subject: Re: Servlet module prototype
>>>  > > > > > >
>>>  > > > > > >
>>>  > > > > > >
>>>  > > > > > >I think Nicklas and John fear that firing 
> events for each
>>>  > > > > > request/response could lead to performance 
> issues!?!
>>>  > > > > > >
>>>  > > > > > >
>>>  > > > > > >But I'm not sure if there will be a 
> noticeable performance
>>>  impact
>>>  > if
>>>  > > > > > there are no observers for the events. I 
> don't think that
>>>  firing an
>>>  > > > event
>>>  > > > > > that nobody observes is expensive.
>>>  > > > > > >
>>>  > > > > > >
>>>  > > > > > >And I also think that Solder didn't 
> provide any way to disable
>>>  > these
>>>  > > > > > events (correct me if I'm wrong). Or has 
> there been any reports
>>>  > > > regarding
>>>  > > > > > Solder's performance?
>>>  > > > > > >
>>>  > > > > > >
>>>  > > > > > >
>>>  > > > > > >2013/6/7 Romain Manni-Bucau 
> <rmannibu...@gmail.com>
>>>  > > > > > >
>>>  > > > > > >Hi
>>>  > > > > > >>
>>>  > > > > > >>in fact i don't get why you would 
> like to be able to
>>>  deactivate
>>>  > it.
>>>  > > > > > >>Basically it is a web *module* so if 
> it is here it is either
>>>  > needed
>>>  > > > by
>>>  > > > > a
>>>  > > > > > >>dep or you explicitely imported it so 
> you want it. So
>>>  basically a
>>>  > > > > > >>configurable (through ConfigResolver)
>>>  ServletContainerInitializer
>>>  > > is
>>>  > > > > just
>>>  > > > > > >>what we need to be able to deactivate 
> not needed listeners.
>>>  Other
>>>  > > > > config
>>>  > > > > > >>can break modules relying on it so it 
> could prevent lib to use
>>>  > this
>>>  > > > > > module.
>>>  > > > > > >>
>>>  > > > > > >>*Romain Manni-Bucau*
>>>  > > > > > >>*Twitter: @rmannibucau 
> <https://twitter.com/rmannibucau>*
>>>  > > > > > >>*Blog: 
> **http://rmannibucau.wordpress.com/*<
>>>  > > > > > http://rmannibucau.wordpress.com/>
>>>  > > > > > >>*LinkedIn: 
> **http://fr.linkedin.com/in/rmannibucau*
>>>  > > > > > >>*Github: 
> https://github.com/rmannibucau*
>>>  > > > > > >>
>>>  > > > > > >>
>>>  > > > > > >>
>>>  > > > > > >>
>>>  > > > > > >>2013/6/7 Christian Kaltepoth 
> <christ...@kaltepoth.de>
>>>  > > > > > >>
>>>  > > > > > >>> The servlet module doesn't 
> work at all without the filter
>>>  and
>>>  > the
>>>  > > > > > >>> listeners. So I think it 
> absolutely makes sense to include
>>>  them
>>>  > > in
>>>  > > > a
>>>  > > > > > >>> web-fragment.xml inside the 
> servlet-impl module. If
>>>  something
>>>  > > like
>>>  > > > > > >>> filter/listener ordering is an 
> issue for users, they can
>>>  still
>>>  > > set
>>>  > > > > > >>> "metadata-complete" and 
> manually add the required entries
>>>  into
>>>  > > > their
>>>  > > > > > own
>>>  > > > > > >>> web.xml. Or they could use 
> <absolute-ordering>.
>>>  > > > > > >>>
>>>  > > > > > >>> But I agree that it should be 
> possible to disable the events
>>>  > (all
>>>  > > > > > events or
>>>  > > > > > >>> perhaps just the request/response 
> events?). The question is
>>>  > which
>>>  > > > way
>>>  > > > > > the
>>>  > > > > > >>> user should use to configure 
> this. Of cause we could also
>>>  use a
>>>  > > > > servlet
>>>  > > > > > >>> context parameter. Something 
> like:
>>>  > > > > > >>>
>>>  > > > > > >>>   <context-param>
>>>  > > > > > >>>
>>>  > > > > >
>>>  > 
> <param-name>org.apache.deltaspike.DISABLE_SERVLET_EVENTS</param-name>
>>>  > > > > > >>>    
> <param-value>true</param-value>
>>>  > > > > > >>>   </context-param>
>>>  > > > > > >>>
>>>  > > > > > >>> But DeltaSpike already provides a 
> mechanism for disabling
>>>  > > features
>>>  > > > > > which is
>>>  > > > > > >>> part of the core module and is 
> already used in various other
>>>  > > > places.
>>>  > > > > > If we
>>>  > > > > > >>> allow users to deactivate 
> features, we should be consistent
>>>  in
>>>  > > how
>>>  > > > > > users
>>>  > > > > > >>> can do it.
>>>  > > > > > >>>
>>>  > > > > > >>> Is it correct that there is 
> currently no implementation of
>>>  > > > > > ClassDeactivator
>>>  > > > > > >>> in DeltaSpike at all? What about 
> adding an implementation
>>>  that
>>>  > > uses
>>>  > > > > > servlet
>>>  > > > > > >>> context parameters to the servlet 
> module? Wouldn't this be a
>>>  > nice
>>>  > > > > > >>> enhancement? This way users could 
> either use "simple"
>>>  servlet
>>>  > > > context
>>>  > > > > > >>> parameters or they could use some 
> other more flexible way if
>>>  > they
>>>  > > > > want
>>>  > > > > > to.
>>>  > > > > > >>>
>>>  > > > > > >>> Christian
>>>  > > > > > >>>
>>>  > > > > > >>>
>>>  > > > > > >>>
>>>  > > > > > >>>
>>>  > > > > > >>> 2013/6/6 John D. Ament 
> <john.d.am...@gmail.com>
>>>  > > > > > >>>
>>>  > > > > > >>> > What if the web-fragment.xml 
> were in a separate JAR?
>>>  > > > > > >>> > Deactivatable is a custom 
> solution, I'd love to avoid
>>>  using
>>>  > it.
>>>  > > > > > >>> >
>>>  > > > > > >>> >
>>>  > > > > > >>> > On Thu, Jun 6, 2013 at 11:03 
> AM, Christian Kaltepoth <
>>>  > > > > > >>> > christ...@kaltepoth.de
>>>  > > > > > >>> > > wrote:
>>>  > > > > > >>> >
>>>  > > > > > >>> > > @John, @Nicklas:
>>>  > > > > > >>> > >
>>>  > > > > > >>> > > I agree that it should 
> be possible to disable the
>>>  servlet
>>>  > > > events.
>>>  > > > > > But I
>>>  > > > > > >>> > > think we should 
> automatically register the filter and
>>>  the
>>>  > > > > listeners
>>>  > > > > > >>> using
>>>  > > > > > >>> > > web-fragment.xml 
> because they are required for the
>>>  > injection
>>>  > > to
>>>  > > > > > work
>>>  > > > > > >>> > > correctly.
>>>  > > > > > >>> > >
>>>  > > > > > >>> > > Isn't this a 
> perfect use case for Deactivatable? We
>>>  could
>>>  > > > simply
>>>  > > > > > >>> define a
>>>  > > > > > >>> > > dummy implementation of 
> Deactivatable which can be used
>>>  to
>>>  > > > > disable
>>>  > > > > > just
>>>  > > > > > >>> > the
>>>  > > > > > >>> > > events. We already do 
> something with GlobalAlternative:
>>>  > > > > > >>> > >
>>>  > > > > > >>> > >
>>>  > > > > > >>> > >
>>>  > > > > > >>> >
>>>  > > > > > >>>
>>>  > > > > >
>>>  > > > >
>>>  > > >
>>>  > >
>>>  >
>>> 
> https://github.com/apache/deltaspike/blob/master/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/exclude/GlobalAlternative.java#L26
>>>  > > > > > >>> > >
>>>  > > > > > >>> > >
>>>  > > > > > >>> > >
>>>  > > > > > >>> >
>>>  > > > > > >>>
>>>  > > > > >
>>>  > > > >
>>>  > > >
>>>  > >
>>>  >
>>> 
> https://github.com/apache/deltaspike/blob/master/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/exclude/extension/ExcludeExtension.java#L91
>>>  > > > > > >>> > >
>>>  > > > > > >>> > > What about this:
>>>  > > > > > >>> > >
>>>  > > > > > >>> > >   public interface 
> ServletEventBridge implements
>>>  > > Deactivatable
>>>  > > > {
>>>  > > > > }
>>>  > > > > > >>> > >
>>>  > > > > > >>> > > Thoughts?
>>>  > > > > > >>> > >
>>>  > > > > > >>> > > Christian
>>>  > > > > > >>> > >
>>>  > > > > > >>> > >
>>>  > > > > > >>> > >
>>>  > > > > > >>> > > 2013/6/6 John D. Ament 
> <john.d.am...@gmail.com>
>>>  > > > > > >>> > >
>>>  > > > > > >>> > > > I'd prefer if 
> we simply didn't include the
>>>  > web-fragment.xml
>>>  > > > and
>>>  > > > > > >>> instead
>>>  > > > > > >>> > > > provided 
> instructions on the wiki on how to enable
>>>  them.
>>>  > > > > > >>> > > >
>>>  > > > > > >>> > > >
>>>  > > > > > >>> > > > On Thu, Jun 6, 
> 2013 at 4:37 AM, Nicklas Karlsson <
>>>  > > > > > nicka...@gmail.com
>>>  > > > > > >>> >
>>>  > > > > > >>> > > > wrote:
>>>  > > > > > >>> > > >
>>>  > > > > > >>> > > > > I would also 
> drop the @Web-annotation, I think. BTW,
>>>  > can
>>>  > > > the
>>>  > > > > > >>> > > > > 
> request/reponse lifecycle events be disabled? I
>>>  would
>>>  > > > assume
>>>  > > > > > that
>>>  > > > > > >>> > there
>>>  > > > > > >>> > > > is
>>>  > > > > > >>> > > > > a lot of 
> firing going off for an ajax-application
>>>  and
>>>  > > they
>>>  > > > > > >>> observers
>>>  > > > > > >>> > > will
>>>  > > > > > >>> > > > > have to be 
> resolved even if there are no
>>>  observers(?)
>>>  > > > > > >>> > > > >
>>>  > > > > > >>> > > > >
>>>  > > > > > >>> > > > > On Thu, Jun 
> 6, 2013 at 11:25 AM, Mark Struberg <
>>>  > > > > > strub...@yahoo.de>
>>>  > > > > > >>> > > > wrote:
>>>  > > > > > >>> > > > >
>>>  > > > > > >>> > > > > > Nice 
> work!
>>>  > > > > > >>> > > > > >
>>>  > > > > > >>> > > > > > The @Web 
> Qualifier looks a bit odd, but will turn
>>>  out
>>>  > > > into
>>>  > > > > > the
>>>  > > > > > >>> > > broader
>>>  > > > > > >>> > > > > > 
> discussion about how to implement features which
>>>  > might
>>>  > > > get
>>>  > > > > > >>> 'added'
>>>  > > > > > >>> > in
>>>  > > > > > >>> > > > > > future 
> specs.
>>>  > > > > > >>> > > > > >
>>>  > > > > > >>> > > > > >
>>>  > > > > > >>> > > > > > LieGrue,
>>>  > > > > > >>> > > > > > strub
>>>  > > > > > >>> > > > > >
>>>  > > > > > >>> > > > > >
>>>  > > > > > >>> > > > > >
>>>  > > > > > >>> > > > > > ----- 
> Original Message -----
>>>  > > > > > >>> > > > > > > 
> From: Christian Kaltepoth <
>>>  christ...@kaltepoth.de>
>>>  > > > > > >>> > > > > > > To: 
> "deltaspike-...@incubator.apache.org" <
>>>  > > > > > >>> > > > > > 
> deltaspike-...@incubator.apache.org>
>>>  > > > > > >>> > > > > > > Cc:
>>>  > > > > > >>> > > > > > > 
> Sent: Thursday, 6 June 2013, 6:56
>>>  > > > > > >>> > > > > > > 
> Subject: Servlet module prototype
>>>  > > > > > >>> > > > > > >
>>>  > > > > > >>> > > > > > > Hey 
> all,
>>>  > > > > > >>> > > > > > >
>>>  > > > > > >>> > > > > > > I 
> spent some time working on a first version of
>>>  the
>>>  > > > > servlet
>>>  > > > > > >>> > module.
>>>  > > > > > >>> > > > All
>>>  > > > > > >>> > > > > > the
>>>  > > > > > >>> > > > > > > 
> basic features are finished now and therefore I
>>>  > think
>>>  > > > its
>>>  > > > > > time
>>>  > > > > > >>> to
>>>  > > > > > >>> > > ask
>>>  > > > > > >>> > > > > for
>>>  > > > > > >>> > > > > > > 
> some feedback.
>>>  > > > > > >>> > > > > > >
>>>  > > > > > >>> > > > > > > I 
> pushed the code to the "servlet" branch on my
>>>  > > github
>>>  > > > > > repo:
>>>  > > > > > >>> > > > > > >
>>>  > > > > > >>> > > > > > >
>>>  https://github.com/chkal/deltaspike/tree/servlet
>>>  > > > > > >>> > > > > > >
>>>  > > > > > >>> > > > > > > The 
> servlet module provides two major features:
>>>  > > > > > >>> > > > > > >
>>>  > > > > > >>> > > > > > > * 
> Injection of servlet various objects
>>>  > > > > > >>> > > > > > > * 
> Servlet lifecycle events
>>>  > > > > > >>> > > > > > >
>>>  > > > > > >>> > > > > > > The 
> producers are using the qualifier @Web to
>>>  avoid
>>>  > > > > > conflicts
>>>  > > > > > >>> > with
>>>  > > > > > >>> > > > CDI
>>>  > > > > > >>> > > > > > 1.1.
>>>  > > > > > >>> > > > > > > We 
> could discuss whether some other name for the
>>>  > > > > qualifier
>>>  > > > > > fits
>>>  > > > > > >>> > > > better.
>>>  > > > > > >>> > > > > > >
>>>  > > > > > >>> > > > > > > See 
> the following classes from the tests to get
>>>  an
>>>  > > idea
>>>  > > > > of
>>>  > > > > > what
>>>  > > > > > >>> > can
>>>  > > > > > >>> > > > be
>>>  > > > > > >>> > > > > > > 
> injected:
>>>  > > > > > >>> > > > > > >
>>>  > > > > > >>> > > > > > >
>>>  > > > > > >>> > > > > >
>>>  > > > > > >>> > > > >
>>>  > > > > > >>> > > >
>>>  > > > > > >>> > >
>>>  > > > > > >>> >
>>>  > > > > > >>>
>>>  > > > > >
>>>  > > > >
>>>  > > >
>>>  > >
>>>  >
>>> 
> https://github.com/chkal/deltaspike/blob/servlet/deltaspike/modules/servlet/impl/src/test/java/org/apache/deltaspike/test/servlet/impl/producer/ServletObjectInjectionBean.java
>>>  > > > > > >>> > > > > > >
>>>  > > > > > >>> > > > > > >
>>>  > > > > > >>> > > > > >
>>>  > > > > > >>> > > > >
>>>  > > > > > >>> > > >
>>>  > > > > > >>> > >
>>>  > > > > > >>> >
>>>  > > > > > >>>
>>>  > > > > >
>>>  > > > >
>>>  > > >
>>>  > >
>>>  >
>>> 
> https://github.com/chkal/deltaspike/blob/servlet/deltaspike/modules/servlet/impl/src/test/java/org/apache/deltaspike/test/servlet/impl/producer/ServletContextInjectionTest.java
>>>  > > > > > >>> > > > > > >
>>>  > > > > > >>> > > > > > > The 
> lifecycle events are fired using the
>>>  qualifiers
>>>  > > > > > >>> @Initialized
>>>  > > > > > >>> > or
>>>  > > > > > >>> > > > > > > 
> @Destroyed just like in Seam Solder. I also
>>>  added
>>>  > the
>>>  > > > > @Web
>>>  > > > > > >>> > > qualifier
>>>  > > > > > >>> > > > to
>>>  > > > > > >>> > > > > > all
>>>  > > > > > >>> > > > > > > 
> events, but we could discuss whether this is
>>>  really
>>>  > > > > > necessary.
>>>  > > > > > >>> > > > > > >
>>>  > > > > > >>> > > > > > > The 
> following classes show which events can be
>>>  > > > observed:
>>>  > > > > > >>> > > > > > >
>>>  > > > > > >>> > > > > > >
>>>  > > > > > >>> > > > > >
>>>  > > > > > >>> > > > >
>>>  > > > > > >>> > > >
>>>  > > > > > >>> > >
>>>  > > > > > >>> >
>>>  > > > > > >>>
>>>  > > > > >
>>>  > > > >
>>>  > > >
>>>  > >
>>>  >
>>> 
> https://github.com/chkal/deltaspike/blob/servlet/deltaspike/modules/servlet/impl/src/test/java/org/apache/deltaspike/test/servlet/impl/event/request/RequestResponseEventsObserver.java
>>>  > > > > > >>> > > > > > >
>>>  > > > > > >>> > > > > > >
>>>  > > > > > >>> > > > > >
>>>  > > > > > >>> > > > >
>>>  > > > > > >>> > > >
>>>  > > > > > >>> > >
>>>  > > > > > >>> >
>>>  > > > > > >>>
>>>  > > > > >
>>>  > > > >
>>>  > > >
>>>  > >
>>>  >
>>> 
> https://github.com/chkal/deltaspike/blob/servlet/deltaspike/modules/servlet/impl/src/test/java/org/apache/deltaspike/test/servlet/impl/event/session/SessionEventsObserver.java
>>>  > > > > > >>> > > > > > >
>>>  > > > > > >>> > > > > > >
>>>  > > > > > >>> > > > > >
>>>  > > > > > >>> > > > >
>>>  > > > > > >>> > > >
>>>  > > > > > >>> > >
>>>  > > > > > >>> >
>>>  > > > > > >>>
>>>  > > > > >
>>>  > > > >
>>>  > > >
>>>  > >
>>>  >
>>> 
> https://github.com/chkal/deltaspike/blob/servlet/deltaspike/modules/servlet/impl/src/test/java/org/apache/deltaspike/test/servlet/impl/event/context/ServletContextEventsObserver.java
>>>  > > > > > >>> > > > > > >
>>>  > > > > > >>> > > > > > > One 
> thing that I'm not quite happy with is the
>>>  way
>>>  > > the
>>>  > > > > > >>> > > ServletContext
>>>  > > > > > >>> > > > > > > 
> injection works. I'm currently using a map that
>>>  > > stores
>>>  > > > > the
>>>  > > > > > >>> > > > > 
> ServletContext
>>>  > > > > > >>> > > > > > > for 
> each context class loader. IMHO this is
>>>  better
>>>  > > than
>>>  > > > > > using
>>>  > > > > > >>> > > > > > > 
> HttpServletRequest.getServletContext() as it
>>>  also
>>>  > > works
>>>  > > > > for
>>>  > > > > > >>> > threads
>>>  > > > > > >>> > > > > > outside
>>>  > > > > > >>> > > > > > > of 
> a request (like schedulers for example). I
>>>  also
>>>  > > > wanted
>>>  > > > > > to
>>>  > > > > > >>> > avoid
>>>  > > > > > >>> > > > > using
>>>  > > > > > >>> > > > > > > the 
> CDI application scope for storing the
>>>  > > > ServletContext
>>>  > > > > to
>>>  > > > > > >>> avoid
>>>  > > > > > >>> > > > > > problems
>>>  > > > > > >>> > > > > > > 
> regarding different implementations of the
>>>  scope in
>>>  > > > > regard
>>>  > > > > > to
>>>  > > > > > >>> EAR
>>>  > > > > > >>> > > > > > > 
> packaging. I would be very interested in hearing
>>>  > your
>>>  > > > > > thoughts
>>>  > > > > > >>> on
>>>  > > > > > >>> > > > this.
>>>  > > > > > >>> > > > > > :)
>>>  > > > > > >>> > > > > > >
>>>  > > > > > >>> > > > > > > One 
> other thing. As I currently don't use any
>>>  > Servlet
>>>  > > > 3.0
>>>  > > > > > >>> > features,
>>>  > > > > > >>> > > > the
>>>  > > > > > >>> > > > > > > 
> module depends on the Servlet 2.5 API. Do you
>>>  think
>>>  > > it
>>>  > > > > > makes
>>>  > > > > > >>> > sense
>>>  > > > > > >>> > > to
>>>  > > > > > >>> > > > > > still
>>>  > > > > > >>> > > > > > > 
> support Servlet 2.5 or should we require at
>>>  least
>>>  > > > Servlet
>>>  > > > > > 3.0?
>>>  > > > > > >>> > > > > > >
>>>  > > > > > >>> > > > > > > 
> Looking forward to your feedback. Especially I
>>>  > would
>>>  > > > like
>>>  > > > > > to
>>>  > > > > > >>> know
>>>  > > > > > >>> > > if
>>>  > > > > > >>> > > > > you
>>>  > > > > > >>> > > > > > > 
> think that the code should be merged into the
>>>  > > upstream
>>>  > > > > > >>> > repository.
>>>  > > > > > >>> > > :)
>>>  > > > > >
>>>  > > > >
>>>  > > >
>>>  > > >
>>>  > > >
>>>  > > > --
>>>  > > > Christian Kaltepoth
>>>  > > > Blog: http://blog.kaltepoth.de/
>>>  > > > Twitter: http://twitter.com/chkal
>>>  > > > GitHub: https://github.com/chkal
>>>  > > >
>>>  > >
>>>  >
>>>  >
>>>  >
>>>  > --
>>>  > Christian Kaltepoth
>>>  > Blog: http://blog.kaltepoth.de/
>>>  > Twitter: http://twitter.com/chkal
>>>  > GitHub: https://github.com/chkal
>>>  >
>>> 
>> 
>> 
>> 
>>  --
>>  Christian Kaltepoth
>>  Blog: http://blog.kaltepoth.de/
>>  Twitter: http://twitter.com/chkal
>>  GitHub: https://github.com/chkal
>> 
>> 
> 
> 
> -- 
> Christian Kaltepoth
> Blog: http://blog.kaltepoth.de/
> Twitter: http://twitter.com/chkal
> GitHub: https://github.com/chkal
>

Reply via email to