+ Breaking down jetty-cdi into 3 modules
* cdi-core
* cdi-servlet
* cdi-websocket
+ Creating WebSocketScope for cdi-websocket
+ Creating @Produces for jetty websocket api session
and javax.websocket.Session
+ Unit tests for new functionality
+ Verifying ServletContextHandler behavior of Decorators
+ Marking old ServletContextHandler methods as deprecated
+ Updates to DecoratedObjectFactory
+ Removing customized weld scopes/context (for now)
+ Deferring JSR356 ServerContainer endpoint init
till Container.doStart() to allow weld to init properly first
+ Removing JSR356 BasicServerEndpointConfigurator in favor
of ContainerDefaultEndpointConfigurator
+ Only decorating server endpoints if they were created by
ContainerDefaultEndpointConfigurator, all others are trusted
to be complete and injected already.
+ Making use of LeakTrackingByteBufferPool more consistent
+ Using MappedByteBufferPool.Tagged where appropriate in test cases
+ Adding leak count tracking to LeakDetector
+ Adding leak count tracking to LeakTrackingByteBufferPool
+ Renaming websocket LeakTrackingBufferPool to
LeakTrackingBufferPoolRule to reflect junit @Rule usage
+ Making websocket LeakTrackingBufferPoolRule always use
MappedByteBufferPool.Tagged
+ Fixed various grammar concerns
Added the concept of UpgradeFrom and UpgradeTo connections that support
transferring a buffer with content before opening new connection.
Aded EndPoint.update method as utility
+ test performs a client upgrade + 2 websocket frames all at once.
not waiting for the upgrade response before sending those frames.
+ currently set to @Ignore until we can address how to copy this extra
buffer information from the Http side to the WebSocket side.
+ Since SCI adds filters, but init() isn't run till later, that means
the context attribute for the WebSocketUpgradeFilter isn't present
during jsr356 runs. Added ability for manual filter creation to call
setToAttribute() as a pre-init step, allowing the init() itself to
bypass the set to attribute for that specific filter instance.
+ This also means ServletException is now thrown out from the
various configureContext() static methods.
+ After talking it through with Simone, swapping out 'global' init-param
with a bit more robust 'contextAttributeKey' to handle the automatic
context.setAttribute() of the filter itself.
As simply having a filter in the web.xml makes it alive, but nothing
is wired up into it, and accessing the filter instance via the
context metadata seems impossible. So we made the init-param for
'contextAttributeKey' important and required, but with defaulting
and validation checks.
+ Making key also work inside of WEB-INF/web.xml via context params
+ Making WebSocketUpgradeFilter generic enough to be used in a
web.xml descriptor
+ Adding global={bool} init-param on WebSocketUpgradeFilter to aid
library developers and end users more ways to tweak the filter
order
Introduced parameter "dispatchIO" in the relevant factories so that
they can be configured by users and connections will be created
taking into account this parameter.
For less configurable connection factories, this parameter is
currently hardcoded to either true or false depending on the case.
For example, ALPN and NPN connections have it to false, since they
don't do any blocking operation in onFillable().
+ Fixing onOpen context classloader to be that of the context
that started the WebSocketUpgradeFilter (which will be the
same as the WebAppContext in most cases)
* Using Servlet 3.1's ServletContext.addFilter() mechanisms with its
FilterRegistration to encourage the WebSocketUpgradeFilter to be
first in the filter chain.
Note: this is possible, but can be overridden by another call
to the same ServletContext.addFilter() using the same techniques
to put something in front of the WebSocketUpgradeFilter.
+ Fixing onOpen context classloader to be that of the context
that started the WebSocketUpgradeFilter (which will be the
same as the WebAppContext in most cases)
* Using Servlet 3.1's ServletContext.addFilter() mechanisms with its
FilterRegistration to encourage the WebSocketUpgradeFilter to be
first in the filter chain.
Note: this is possible, but can be overridden by another call
to the same ServletContext.addFilter() using the same techniques
to put something in front of the WebSocketUpgradeFilter.