cool, txs!

Will review those 2 new modules (bv + servlet) later today.

LieGrue,
strub




----- Original Message -----
> From: Christian Kaltepoth <christ...@kaltepoth.de>
> To: dev@deltaspike.apache.org
> Cc: 
> Sent: Thursday, 13 June 2013, 7:09
> Subject: Re: Servlet module prototype
> 
> I just pushed the code upstream.
> 
> I'll close the issues I created for tracking the basic requirements for the
> module. We can then create new ones for everything we want to implement on
> top of that.
> 
> 
> 
> 
> 2013/6/11 John D. Ament <john.d.am...@gmail.com>
> 
>>  +1 as well, looks good to me.
>> 
>> 
>>  On Tue, Jun 11, 2013 at 12:12 PM, Mark Struberg <strub...@yahoo.de> 
> wrote:
>> 
>>  > +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
>>  > >
>>  >
>> 
> 
> 
> 
> -- 
> Christian Kaltepoth
> Blog: http://blog.kaltepoth.de/
> Twitter: http://twitter.com/chkal
> GitHub: https://github.com/chkal
>

Reply via email to