+ 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
+ Adding appropriate locale settings to testcases to prevent
machine specific locale from changing the expectations.
Bug: 496006
Also-by: Kristian Rosenvold <kristian@zenior.no>
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
exceptions
+ Making JSR onOpen close and use onError properly, as well we
unwrapping the InvocationTargetException cause as to WHY the call to
onOpen failed.
+ 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.
+ 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
+ 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)
+ Exposing 2 new automatically added userProperties
* "javax.websocket.endpoint.localAddress"
* "javax.websocket.endpoint.remoteAddress"
these are both java.net.InetSocketAddress objects
* 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.
+ Improved test case handling of frame reading (to prevent future
false failures)
+ Improved AbstractWebSocketConnection handling of close -> disconnect
to only trigger on successful write (or failure) of close frame flush
attempt.
+ Flusher close on all forms of disconnect, even half-closed.
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.
them in order and atomically.
Refactored PerMessageDeflateExtension and DeflateFrameExtension
introducing superclass CompressExtension that factors in common
functionalities.
+ 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.
+ Removed WebSocketConfiguration class entirely + annotation handlers
+ Renamed ServerAppliationConfigListener to
WebSocketServerContainerInitializer
+ Embedded jetty code that used to use:
WebSocketContainer.configureContext(context) now uses
WebSocketServerContainerInitializer.configureContext(context)
+ Extensions pre-negotiated via
ServerEndpointConfig.Configurator.getNegotiatedExtensions are not
properly handled.
+ Added JsrBrowserDebugTool (Jsr version of BrowserDebugTool)
+ Copying payload in test cases for comparison reasons, as the reuse of
payloads by the implementation now means that the payload might be
masked by a random client side mask.
+ Cleaning up Abnormal Close handling for idle timeout cases
+ Fixing logging a tag
+ Fixing intermittent test failure in jsr EchoTest
+ If a user provided config is supplied, then that config should
be used for init(EndpointConfig) and other various accesses to
the configuration object. This refactor stops using an internal
EndpointConfig object always and moves the internal config
fields into the JsrSession object instead.
+ Refactored websocket-commons Session creation to be factory based
+ Introduced new org.eclipse.jetty.websocket.common.SessionFactory
+ Made websocket-client and websocket-server use new SessionFactory
+ Introduced JsrSessionFactory to allow for consistent Session creation
even in the Jsr (no more duplciate Session creation)
+ Using JsrSessionFactory in javax-websocket-client-impl
+ Introducing PathMappings to hopefully replace jetty-util's PathMap
+ Using standard ClientEndpointConfig when appropriate.
+ Introducing JettyClientEndpointConfig for annotation based
configurations
+ Renaming EchoSocket used in javax.websocket client testing to
JettyEchoSocket to better indicate that its the Jetty server side
implementation and not the javax.websocket client side socket.
+ Changed IncomingFrames.incomingError() parameter from
WebSocketException to Throwable to match behavior on the JSR