2785 Commits

Author SHA1 Message Date
Lachlan Roberts
3e33b35d82 Issue #3170 - WebSocketProxy cleanup
removing old versions of the proxy frame handler
adding licence headers

Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2019-02-19 09:38:28 +11:00
Lachlan Roberts
4aa52c2f43 Issue #3170 - Improved testing for WebSocketProxy
- Added test cases to test failures in and around the WebSocketProxy
and how it handles them.

- In WebSocketChannel.sendFrame() we were using a null cause for
closeConnection, we are now extracting the cause from the
AbnormalCloseStatus. This was resulting in onError not being called
when there was actually an error and an AbnormalCloseStatus.

Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2019-02-19 09:29:28 +11:00
Lachlan Roberts
001bc8f296 Issue #3170 - WebSocketProxy separate actions from the state changes
only do state changes inside synchronized blocks, remember what action
to do and only do this outside of the synchronized block

Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2019-02-19 09:29:28 +11:00
Lachlan Roberts
ace5e7bbe2 Issue #3170 - Redesign on the WebSocketProxy
- Redesigned the proxy into a new class called WebSocketProxy containing
a Client2Proxy FrameHandler and a Server2Proxy FrameHandler

- WebSocketProxy uses synchronized blocks with an enum state instead
of the previous compare and sets

- Created a new test similar to ProxyFrameHandlerTest to test the new
WebSocketProxy

Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2019-02-19 09:29:28 +11:00
Lachlan Roberts
bace5cf82c Issue #3170 - ProxyFrameHandler race between onOpen and onError
- Introduced an EMPTY_SESSION in the ProxyFrameHandler as a terminal
state to know whether a FailedCoreSession has been handled

- Use while(true) loops to do the compareAndSet in ProxyFrameHandler

- Improved the tests for the proxy so that it tests the frames received
at every state (ie Client Proxy and Server)

Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2019-02-19 09:29:28 +11:00
Lachlan Roberts
bc3df4fd28 Issue #3170 - stop WebSocketCoreClient on close or failure
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2019-02-19 09:29:28 +11:00
Lachlan Roberts
55f82ceeec Issue #3170 - WebSocket Proxy handle error and failure conditions
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2019-02-19 09:29:28 +11:00
Lachlan Roberts
c1e3e57f03 Issue #3170 - WebSocket Proxy PoC
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2019-02-19 09:29:28 +11:00
Simone Bordet
83b53f102c
Merge pull request #3336 from eclipse/jetty-10.0.x-3290-websocket-close
Jetty 10.0.x #3290 websocket close
2019-02-18 10:49:33 +01:00
Simone Bordet
85bc84b122 Issue #3341 - XmlHttpClientProvider
Updated comment referencing old class name.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2019-02-18 10:40:32 +01:00
Simone Bordet
42290828a6
Merge pull request #3357 from lachlan-roberts/jetty-10.0.x-3341-HttpClientProvider
Issue #3341 - WebSocket HttpClientProvider
2019-02-18 10:37:08 +01:00
Greg Wilkins
c14df16494
Merge pull request #3335 from lachlan-roberts/jetty-10.0.x-3290-websocket-close
Issue #3290 - FrameFlusher and WebSocket close fixes
2019-02-18 07:30:19 +09:00
Greg Wilkins
a4a6bd03e7
Fix from review
use the new close(Throwable) in endpoint
2019-02-17 18:11:23 +09:00
Lachlan Roberts
d8b5f0e1b3 Issue #3341 - HttpClientProvider changes from review
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2019-02-15 18:31:53 +11:00
Lachlan Roberts
149620598d Issue #3341 - change HttpClientProvider to interface
- HttpClientProvider is now an interface which defines a default method
newHttpClient, its static get() method get will attempt to use the
XmlHttpClientProvider to create a client, and if this fails to give a
non null client it will be created with the default newHttpClient method

Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2019-02-14 16:13:43 +11:00
Lachlan Roberts
c6fd7a616f Issue #3341 - Use HttpClientProvider in WebSocketCoreClient
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2019-02-14 12:19:00 +11:00
Simone Bordet
b9f89af847 Fixes #3320 - Review Jetty 10 module-info.java.
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>
2019-02-08 17:30:27 +01:00
Simone Bordet
6f7e1e3c48 Fixes #3333 - Jetty 10 standalone cannot start on the module-path.
Added --add-modules=ALL-MODULE-PATH by default because now Jetty has
proper JPMS modules and when starting in standalone mode only the
org.eclipse.jetty.xml module will be in the module graph - while
before automatic modules where added to the module graph implicitly.

Added --add-reads=ALL-UNNAMED to the websocket module to allow the
websocket implementation to access method handles of application
classes (the websocket endpoints) that live in the web application
classloader (which forms an unnamed module).

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2019-02-07 17:48:17 +01:00
Greg Wilkins
3d096c9e99 Merge branch 'jetty-10.0.x-3290-websocket-close' of https://github.com/lachlan-roberts/jetty.project into jetty-10.0.x-3290-websocket-close
Signed-off-by: Greg Wilkins <gregw@webtide.com>
2019-02-07 14:17:25 +11:00
Lachlan Roberts
c86bf2e57f Issue #3290 - review changes, javadoc and todos
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2019-02-07 14:09:23 +11:00
Greg Wilkins
11dfe70fc2 Add a Throwable case to EndPoint and Connection onClose notifications
Signed-off-by: Greg Wilkins <gregw@webtide.com>
2019-02-07 11:55:40 +11:00
Lachlan Roberts
1709c90286 Issue #3290 - fixing issues with WebSocketClose
introduce channelState check in the catch in WSChannel sendFrame
to guard from multiple closes

WebSocketConnection fillAndParse will now try to read until EOF

removed state change in the isOutputOpen check in webSocketChannelState
to as we do the state change in the catch block in WSChannel

added and improved WebSocketCloseTest to test more cases

Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2019-02-07 09:58:43 +11:00
Lachlan Roberts
ff1f3ca3be Issue #3290 - WebSocket read and writer error handling
when the WSConnection reads EOF it now notifies the WSChannel
the channel instead of handling it locally

fixed FlusherFlusher failure issues

fixed issue with the WebSocketCloseTest expecting close reason

Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2019-02-07 09:58:08 +11:00
Simone Bordet
cd488c2d7d Merged branch 'jetty-10.0.x' into 'jetty-10.0.x-3162_jetty_servlet_api'.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2019-02-04 23:11:32 +01:00
Simone Bordet
33f314e9f5 Issue #3162 - Use Jetty specific Servlet API jar.
Updated to jetty-servlet-api:4.0.1, based on javax.servlet 4.0.1.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2019-02-04 18:51:51 +01:00
Lachlan Roberts
bfcb890ab2 Issue #3298 - rename typo in JettyWebSocketTest name
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2019-02-04 15:05:15 +11:00
Lachlan Roberts
77b7e275cc Issue #3298 - fix to pom file
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2019-02-04 14:54:27 +11:00
Lachlan Roberts
6a98cc0bd2 Issue #3298 - bug fixes for jetty websockets
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>
2019-01-31 22:24:09 +11:00
Lachlan Roberts
bd4f9b30fc Issue #3298 - cleanup of CompletableFutures for WebSocket upgrades
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>
2019-01-31 11:13:05 +11:00
Joakim Erdfelt
c30c8d4339 Merge remote-tracking branch 'origin/jetty-10.0.x' into jetty-10.0.x-3162_jetty_servlet_api
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>

# Conflicts:
#	jetty-client/pom.xml
#	jetty-http/pom.xml
#	jetty-http2/http2-client/pom.xml
#	jetty-http2/http2-http-client-transport/pom.xml
#	jetty-http2/http2-server/pom.xml
#	jetty-osgi/test-jetty-osgi/pom.xml
#	jetty-osgi/test-jetty-osgi/src/test/config/etc/jetty-with-custom-class.xml
#	jetty-osgi/test-jetty-osgi/src/test/config/etc/jetty.xml
#	jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestJettyOSGiBootHTTP2Conscrypt.java
#	jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestJettyOSGiBootWithAnnotations.java
#	jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestJettyOSGiBootWithJavaxWebSocket.java
#	jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestJettyOSGiBootWithWebSocket.java
#	jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestOSGiUtil.java
#	jetty-quickstart/pom.xml
#	jetty-servlets/pom.xml
#	jetty-util/pom.xml
#	jetty-websocket/javax-websocket-client/pom.xml
#	jetty-websocket/javax-websocket-server/pom.xml
#	jetty-websocket/jetty-websocket-server/pom.xml
#	pom.xml
2019-01-30 11:56:58 -06:00
Lachlan Roberts
684dcd1693 Merge remote-tracking branch 'eclipse/jetty-10.0.x' into jetty-10.0.x-3298-completableFutures 2019-01-30 15:00:01 +11:00
Lachlan Roberts
78dc801153 WebSocketMapping Refactor - add javadoc for WebSocketComponents
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2019-01-30 14:02:50 +11:00
Lachlan Roberts
deaaa0bf30 Merge remote-tracking branch 'eclipse/jetty-10.0.x' into jetty-10.0.x-websocketmapping-refactor 2019-01-30 13:49:10 +11:00
Lachlan Roberts
b4bd5980aa Issue #3298 - Refactor of upgrade request class names
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2019-01-30 10:00:56 +11:00
Lachlan Roberts
b0aec2b26e fix bug in WebSocketMapping failing isInstance test
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2019-01-29 15:26:16 +11:00
Greg Wilkins
f5751618bd Issue #3290 async onOpen, onClose and onError
Fixed OSGi tests.

Signed-off-by: Greg Wilkins <gregw@webtide.com>
2019-01-29 13:08:35 +11:00
Lachlan Roberts
8c5d421b5b remove unnecessary imports in jetty-websocket-tests
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2019-01-29 12:03:53 +11:00
Greg Wilkins
cf0eaecbdc Merge remote-tracking branch 'origin/jetty-10.0.x' into jetty-10.0.x-3290-websocket-onOpen
Signed-off-by: Greg Wilkins <gregw@webtide.com>
2019-01-29 10:59:08 +11:00
Greg Wilkins
1d9e7b7613
Merge pull request #3199 from lachlan-roberts/jetty-10.0.x-3139-npe-websocket-sci
Issue #3139 - NPE in WebSocketContainerInitializer for jetty10
2019-01-29 10:56:59 +11:00
Greg Wilkins
3ad584eaef Issue #3290 async onOpen, onClose and onError
Changes after review:
 + failure to send abnormal close closes connection prior to failing
   callback.

Signed-off-by: Greg Wilkins <gregw@webtide.com>
2019-01-29 10:45:54 +11:00
Greg Wilkins
6f7395c8f0 Issue #3290 async onOpen, onClose and onError
Changes after review:
 + fixed import order

Signed-off-by: Greg Wilkins <gregw@webtide.com>
2019-01-29 10:38:12 +11:00
Greg Wilkins
84d74ba1de Issue #3290 async onOpen, onClose and onError
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>
2019-01-29 10:33:37 +11:00
Lachlan Roberts
402d756ea5 rename websocket-tests module to jetty-websocket-tests
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2019-01-29 10:29:38 +11:00
Greg Wilkins
1171d7c8d7 Merge remote-tracking branch 'origin/jetty-10.0.x' into jetty-10.0.x-3290-websocket-onOpen 2019-01-26 18:16:30 +11:00
Greg Wilkins
8b93922d08 Issue #3290 async onOpen, onClose and onError
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>
2019-01-26 15:34:50 +11:00
Lachlan Roberts
aa1d6ff9cd WebSocketMapping refactor changes from review
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2019-01-25 17:11:27 +11:00
Lachlan Roberts
a8a5e50579 Issue #3139 ContextHandler must be set on server before configureContext
If configure context is called with a context that does not yet have
a server, we should just throw an ISE. This is better than having a
different configuration result depending on if the context has been set
been added to the handler tree or not.

Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2019-01-25 17:05:26 +11:00
Olivier Lamy
6145fd7468
Issue #3166 add autobahn testsuite running via autobahn maven plugin (#3292)
Issue #3166 Add autobahn profile to automatically run autobahn test suite in Jenkins
2019-01-25 15:10:24 +10:00
Lachlan Roberts
0c85b3138f rename of WebSocketResources to WebSocketComponents
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2019-01-25 11:57:03 +11:00
Lachlan Roberts
b2f2a16aed Merge branch 'jetty-10.0.x-websocketmapping-refactor' of https://github.com/lachlan-roberts/jetty.project into jetty-10.0.x-websocketmapping-refactor 2019-01-25 11:38:40 +11:00