* Issue #3705 - notify WebSocket framehandler on client upgrade failure
getFrameHandler on the ClientUpgradeRequest no longer takes
the upgrade response, the response must be set later if it is
required by the framehandler implementation
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
* Issue #3705 - changes from review
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
* Issue #3705 - throw if FrameHandler could not be created
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
* wip
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
* Issue #3705 - count down the onOpen latch in NetworkFuzzer
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
* Issue #3705 - WebSocket Session CompletableFuture refactor
- sessionFutures for jetty and javax are now implemented using the
futureCoreSession which will occur after onOpen
- the request and response are set on the FrameHandler before the
upgrade
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
correctly detect when a message has exceeded the max size in the sink
forward changes to the input buffer size to the connection in WSChannel
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
ExtensionConfig is now interface in jetty-websocket-api and
implemented in jetty-websocket-common, for its static methods it now
uses a ExtensionConfig.Parser found by the ServiceLoader
the api tests were moved to jetty-websocket-tests
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
rename WebSocketSessionImpl to WebSocketSession
remove SessionListener which is unused and replaced by
WebSocketSessionListener
Signed-off-by: lachan-roberts <lachlan@webtide.com>
invoke the close handle in onClosed instead of onCloseFrame in
JettyWebSocketFrameHandler
in both frame handlers replace usage of getClass().getName()
with getClass().getSimpleName() to increase the amount of characters
from the original exception which can fit in the close frame message
Signed-off-by: lachan-roberts <lachlan@webtide.com>
+ Jetty WebSocket API now tracks Sessions and will close them on
lifecycle stop
+ Javax WebSocket API now tracks Sessions and will close them on
lifecycle stop
+ Adding Jetty WebSocket tests for proper close / session tracking
+ Disabling tests that need triage
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
Reviewed module-info.java files.
For those that have a "requires static" added a comment about
why the dependency is optional.
Rearranged directives in alphabetical order.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
succeed callback when you do not have a message sink
OnWebSocketFrame annotation should take an API frame not a core frame
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
Jetty and Javax ClientUpgradeRequests no longer use the combination of
the the onOpenFuture and the futureCoreSession and instead use only
the CompletableFuture future given to the FrameHandler onOpen
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
Changes after review:
+ removed Adaptor from FrameHandler, so all non test usages of
FrameHandler now use async API.
+ Fixed sequencing of multiple async operation so callback is notified
after completion (created more Callback.from utilities for this)
+ fixed import order
Signed-off-by: Greg Wilkins <gregw@webtide.com>
Gave onOpen, onError and onClose callback signatures
Illegal to ask for demand prior to onOpen success
added tests for various onOpen scenarios
Signed-off-by: Greg Wilkins <gregw@webtide.com>
Improve ws error handling by splitting processError into handling for
errors from the network and errors from the application.
Signed-off-by: Greg Wilkins <gregw@webtide.com>
Improve on #3167 with major refactor of the context initialization of
websocket:
+ The Javax and Jetty sides are more symmetric - both use shared
filter and mapping.
+ Regularised usage of beans rather than attributes for ws components
+ Customization is now part of the mapping, so ws are configured by
how they were mapped and not by who does the upgrade.
+ Filter still can be configured to customize defaults
+ Servlet can be configured to customize any ws mappings added via the
servlet
There is still some strangeness as the WebSocketServlet is mostly
generic, yet can only map Jetty API websockets.
Signed-off-by: Greg Wilkins <gregw@webtide.com>
Fixes#2978 - Add module-info to relevant Jetty modules.
Added module-info.java for Jetty modules that are not test modules.
Moved jetty-http test utility classes to new module "jetty-http-tools".
Removed generation of test-jar from websocket-core.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>