+ 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.
exceptions
+ Making JSR onOpen close and use onError properly, as well we
unwrapping the InvocationTargetException cause as to WHY the call to
onOpen failed.
+ Adding testcase for Decoder.TextStream and lots of short messages with
order indicator (for the order in which they were sent)
Test case validates that all of the messages were received, not that
they were in any particular order (as the use of Streaming prevents
reliable ordering)
+ Adding defensive copy of callable array in order to prevent any
possibility of concurrency issues with streams and dispatched
calls.
+ Default SslContextFactory initialized
+ Setting for trustAll configurable via System property
"org.eclipse.jetty.websocket.jsr356.ssl-trust-all"={bool}
Introduced the automatic batch mode, akin to Jetty 8's WebSocket
implementation.
Now, if there are no more frames to process, and the previous frames
have been aggregated, FrameFlusher auto-flushes the aggregated frames.
This simplifies applications because they don't need to call flush()
explicitly.
Refactored FrameFlusher to handle aggregation of frames to support
JSR 356's batch mode.
Now FrameFlusher can aggregate frames as long as the FlushMode they
were sent is AUTO. When a frame that has FlushMode SEND arrives,
it will trigger the flush of the aggregate buffer (and eventually
also other queued frames).
A special BINARY frame is used to implement explicit flush()
invocations.
Refactored OutgoingFrames.outgoingFrame() to take an additional
parameter, FlushMode. This is in preparation for handling this new
parameter in FrameFlusher.
+ Expanding testing of PongMessage
+ Ensuring that .addMessage(MessageHandler.Whole<PongMessage>) works
+ Ensuring that ping or pong messages all goto assigned message
handler for PongMessage, for both extends Endpoint and
annotated @OnMessage
+ Correcting @OnMessage handling of max message size for TEXT/BINARY
from both @ClientEndpoint and @ServerEndpoint usage
+ Testcases to prevent regression.
+ Adding fallback lookup using isAssignable(type) if basic map based
lookup fails first. Remembers successful isAssignable(type) match
for future lookups via basic map approach.
+ Extensions pre-negotiated via
ServerEndpointConfig.Configurator.getNegotiatedExtensions are not
properly handled.
+ Added JsrBrowserDebugTool (Jsr version of BrowserDebugTool)