Commit Graph

928 Commits

Author SHA1 Message Date
Lachlan Roberts 0742202ce2 remove setClassLoader from CoreSession interface
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2023-02-16 13:16:00 +11:00
Lachlan b0fa9e20cb
Merge pull request #9357 from eclipse/jetty-12.0.x-9336-ChunksPart
Issue #9336 - remember ContentSources to fail from ChunksPart
2023-02-16 10:40:08 +11:00
Lachlan Roberts 5775887786 Issue #9336 - remember ContentSources to fail from ChunksPart
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2023-02-15 23:24:47 +11:00
gregw 033de8611b Fixed FormAuthenticator redirection
Response redirect now correctly consumes content
2023-02-15 17:48:39 +11:00
Lachlan Roberts 43718f3e52 Merge remote-tracking branch 'origin/jetty-12.0.x' into jetty-12.0.x-websocket-JPMS 2023-02-15 17:12:59 +11:00
Lachlan Roberts e25c936802 remove exporting of internal packages in ee9 & ee10 websocket
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2023-02-15 16:59:29 +11:00
gregw a15af55a56 Merge remote-tracking branch 'origin/jetty-11.0.x' into jetty-12.0.x
Signed-off-by: gregw <gregw@webtide.com>
2023-02-15 15:31:33 +11:00
Jan Bartel b9b26e2a82
Jetty 12 - Restore ee10 tests (#9214)
* Restore jetty-ee10-test-http2-webapp and jetty-ee10-test-integration modules

Co-authored-by: Lachlan Roberts <lachlan@webtide.com>
2023-02-15 14:24:55 +11:00
gregw 015e3d761c Merge remote-tracking branch 'origin/jetty-11.0.x' into jetty-12.0.x
# Conflicts:
#	jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/CookieCutter.java
#	jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/CookieParser.java
#	jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/RFC6265CookieParser.java
#	jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/CookieCutterTest.java
#	jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/CookieParserTest.java
#	jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/RFC6265CookieParserTest.java
#	jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/Cookies.java
#	jetty-http/src/main/java/org/eclipse/jetty/http/HttpCookie.java
#	jetty-http/src/test/java/org/eclipse/jetty/http/CookieCutterLenientTest.java
2023-02-15 14:22:38 +11:00
gregw 0ac3c3f7e6 Merge remote-tracking branch 'origin/jetty-11.0.x' into jetty-12.0.x 2023-02-14 18:09:33 +11:00
Lachlan Roberts ce270cf34b fix remaining JPMS issues in websocket-core
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2023-02-14 17:25:15 +11:00
Lachlan Roberts 1d8e13220a resolve JPMS issues with CoreSession and WebSocketCoreSession
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2023-02-14 15:34:53 +11:00
Olivier Lamy 0387c6ddbc Merge branch 'jetty-11.0.x' into jetty-12.0.x 2023-02-14 09:38:28 +10:00
gregw 4aa6bca630 Merge remote-tracking branch 'origin/jetty-11.0.x' into jetty-12.0.x
# Conflicts:
#	jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/ForwardedRequestCustomizerTest.java
#	jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/Request.java
#	jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/RequestTest.java
2023-02-14 10:07:18 +11:00
Lachlan Roberts cc40a545dc move websocket-core-common messages and util packages out of internal
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2023-02-14 09:43:25 +11:00
Simone Bordet e5b313e379
Jetty 12 - Review client notifiers (#9335)
* Introduced ResponseListeners to reduce per-request allocation.
* Removed ResponseNotifier in favor of ResponseListeners.
* Introduced RequestListeners to reduce the per-request allocation.
* Removed RequestNotifier in favor of RequestListeners.
* Removed unnecessary sharing of HttpRequest.requestListeners.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2023-02-13 17:36:29 +01:00
Simone Bordet 4db0c70735 Fixes #9326 - Rename DecryptedEndPoint to SslEndPoint.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2023-02-09 22:17:51 +01:00
Lachlan Roberts 2d11517dd6 Merge remote-tracking branch 'origin/jetty-12.0.x' into jetty-12.0.x-websocket-autodemanding 2023-02-09 18:22:49 +11:00
Lachlan Roberts 5e72c568d0 #9328 - changes from review
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2023-02-09 18:20:37 +11:00
Lachlan 3259a55ce3
Merge pull request #9287 from eclipse/jetty-12.0.x-multipartCleanups
Issue #9076 - Cleanups and fixes for multipart in Jetty 12
2023-02-09 18:10:01 +11:00
Lachlan 3ed9302c0f
Merge pull request #9235 from eclipse/jetty-12.0.x-9233-core-common-util-cleanup
Issue #9233 - cleanup of websocket-core-common util package
2023-02-09 15:52:21 +11:00
Simone Bordet 83d6e1756e
Merged branch 'jetty-11.0.x' into 'jetty-12.0.x'.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2023-02-08 10:37:31 +01:00
Lachlan Roberts 1e92759578 #9287 - remove unpaired release of Content.Chunk
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2023-02-08 16:51:39 +11:00
Lachlan Roberts d2dcbeba5b Issue #8991 - rename websocket isDemanding() method to isAutoDemanding()
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2023-02-08 14:18:02 +11:00
Lachlan Roberts cb511bed8a Issue #9287 - fix failing tests
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2023-02-08 13:58:18 +11:00
Lachlan Roberts 6950d73fce Merge remote-tracking branch 'origin/jetty-12.0.x' into jetty-12.0.x-multipartCleanups 2023-02-08 11:55:37 +11:00
Ludovic Orban b87f9385c8
Jetty 12: Cleanup `StatisticsHandler` (#9291)
#9145 cleanup statistics

Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2023-02-07 17:43:46 +01:00
Simone Bordet d02932f690
Fixes #9288 - Jetty 12 - Use oej.http.HttpCookie in jetty-client. (#9289)
* Replaced usages of java.net.HttpCookie with oej.http.HttpCookie.
* Moved server-side only methods from HttpCookie to HttpCookieUtils.
* Introduced and implemented oej.http.HttpCookieStore.
* Removed now obsolete oej.util.HttpCookieStore.
* Introduced HttpScheme.isSecure(String), to avoid code duplication.
* Fixed handling of cookie "localhost" domain in HttpClient.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2023-02-07 17:28:01 +01:00
Greg Wilkins f565122571
Redo Handler renaming (#9318)
* Redo Handler renaming

Wrapper to Singleton
BaseWrapper to Wrapper

* Updates from review
2023-02-07 16:41:15 +11:00
Lachlan Roberts d005e975b0 changes f rom review
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2023-02-07 15:47:17 +11:00
Greg Wilkins d901237e07 fixed style
Signed-off-by: Greg Wilkins <gregw@webtide.com>
2023-02-07 08:14:37 +11:00
Greg Wilkins 461c306fcf cleanup TODOs for decoration
Signed-off-by: Greg Wilkins <gregw@webtide.com>
2023-02-07 07:46:03 +11:00
Simone Bordet 5cc07994c0
Issue #9300 - Rename RetainableByteBufferPool to ByteBufferPool
ArrayRetainableByteBufferPool -> ArrayByteBufferPool.
Updated field names.
Updates tests.
Updated *.mod files to not reference RetainableByteBufferPool.
Updated javadocs.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2023-02-06 10:31:14 +01:00
Simone Bordet 44980ebfc3
Merge branch 'issue/9284' of https://github.com/kohlschuetter/jetty.project into kohlschuetter-issue/9284 2023-02-06 10:16:32 +01:00
Greg Wilkins 60a08f5349
Rename Handler Nested & Collection (#9305)
There is now a Handler interface hierarchy:
 + Container is a Handler that has 1 or more contained Handlers.
 + Wrapper is a Container with only 1 handler and a setHandler method.
 + Collection is a Container with n handlers and a addHandler method

class are now:
 + Abstract implements Handler
 + AbstractContainer extends Abstract implements Container
 + BaseWrapper extends AbstractContainer implements Wrapper
 + Sequence extends AbstractContainer implements Collection

 Lots of other associated cleanups
2023-02-06 12:15:35 +11:00
Lachlan Roberts c7e7fd837c Merge remote-tracking branch 'origin/jetty-12.0.x' into jetty-12.0.x-multipartCleanups 2023-02-06 11:18:19 +11:00
Olivier Lamy 377798ff50
fix surefire jpms configuration
Signed-off-by: Olivier Lamy <olamy@apache.org>
2023-02-05 17:10:36 +10:00
Olivier Lamy dedcfe1d22
fix merge
Signed-off-by: Olivier Lamy <olamy@apache.org>
2023-02-05 16:48:22 +10:00
Olivier Lamy 4812eb1c89
Merge branch 'jetty-11.0.x' into jetty-12.0.x-merg 2023-02-05 16:34:58 +10:00
Olivier Lamy a600506155
fix merge
Signed-off-by: Olivier Lamy <olamy@apache.org>
2023-02-05 16:08:11 +10:00
dependabot[bot] 44cd3ee541
Bump maven.surefire.plugin.version from 3.0.0-M5 to 3.0.0-M8 (#9255) 2023-02-05 15:58:03 +10:00
Christian Kohlschütter b8ab66fd1d Rename RetainableByteBufferPool to ByteBufferPool
With issue #9166, ByteBufferPool was removed and replaced by
RetainableByteBufferPool. Since ByteBufferPool was used by
AbstractConnector, this change broke backwards compatibility with
third-party connectors such as junixsocket-jetty.

Since there's no longer any other ByteBufferPool, rename the
RetainableByteBufferPool interface, and thereby not only reinstate
compatibility with existing third-party libraries but also save a few
keystrokes.

https://github.com/eclipse/jetty.project/issues/9284

Signed-off-by: Christian Kohlschütter <christian@kohlschutter.com>
2023-02-04 23:39:29 +01:00
Simone Bordet 9916706b5f
Issue #9293 - Jetty 12 - Relax JPMS dependencies (quic) (#9307)
Relaxed jetty-quic JPMS dependencies.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2023-02-04 14:38:33 +01:00
Simone Bordet c18194b20f
Issue #9293 - Jetty 12 - Relax JPMS dependencies (fcgi) (#9306)
Relaxed jetty-fcgi JPMS dependencies.
Packages generator and parser were not internal,
was just matters of exporting them.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2023-02-04 14:38:08 +01:00
Lachlan Roberts cd47a07463 use non-pooling RetainableByteBufferPool to work around performance bug
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2023-02-04 00:49:59 +11:00
Simone Bordet 55a27fc68c
Issue #9293 - Jetty 12 - Relax JPMS dependencies. (#9296)
Relaxed jetty-http2 and submodules JPMS dependencies.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2023-02-03 10:19:41 +01:00
Simone Bordet ec41480aed
Issue #9293 - Jetty 12 - Relax JPMS dependencies. (#9299)
* Issue #9293 - Jetty 12 - Relax JPMS dependencies.

Relaxed jetty-http3 and submodules JPMS dependencies.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2023-02-03 10:16:29 +01:00
Olivier Lamy 109dd70d67
fix dependency
Signed-off-by: Olivier Lamy <olamy@apache.org>
2023-02-03 19:07:26 +10:00
Simone Bordet 36b41af560
Merge pull request #9294 from eclipse/fix/jetty-12-client-jpms
Issue #9293 - Jetty 12 - Relax JPMS dependencies.
2023-02-03 09:55:35 +01:00
Olivier Lamy 0d485fbe28
this dependency is used in test scope
Signed-off-by: Olivier Lamy <olamy@apache.org>
2023-02-03 18:45:29 +10:00
Lachlan 1144d3a18f
Merge pull request #9234 from eclipse/jetty-12.0.x-websocket-core-server-jpms
Issue #9233 - Fix some JPMS issues for websocket-core
2023-02-03 14:05:34 +11:00
Olivier Lamy b93a115ecd
Jetty 12 - Rename sessions tests with ee# version in package name (#9231)
* rename sessions tests with eeX version in package name as it, we can indentify which test is failing with junit result
* get rid of some duplicate classes

Signed-off-by: Olivier Lamy <olamy@apache.org>
2023-02-03 10:49:44 +10:00
Simone Bordet cd5031b15f
Issue #9293 - Jetty 12 - Relax JPMS dependencies.
Relaxed jetty-client JPMS dependencies.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2023-02-02 19:30:40 +01:00
Greg Wilkins ebc6cca478
Jetty 12 - Added a core Session abstraction (#9223)
* Added a core Session abstraction

Sessions were already a core mechanism, but there was no API for them.
There is now a new Session interface that is available via the Request API.  It is intended only for users of sessions.
The previous concrete class Session has been renamed to ManagedSession and it is used by classes that extend AbstractSessionManager.

* Fixed tests

* Use static method

* Updates from review

* Updates from review

Improved javadoc
used util Attributes interface.
2023-02-02 21:40:17 +11:00
Ludovic Orban b1739aca53 Catch unchecked exceptions / errors thrown during produce to avoid letting the stack trace be logged by the execution strategy
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2023-02-02 10:42:20 +01:00
Joakim Erdfelt 490f86e9a6
Merge remote-tracking branch 'origin/jetty-11.0.x' into jetty-12.0.x 2023-02-01 19:33:43 -06:00
Ludovic Orban e68c827c2d
Fix connection pool's forcible stop (#9280)
* #9275 fix forcible closure of connections upon stopping the connection pool


Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2023-02-02 08:36:00 +11:00
Ludovic Orban 9295f93bd8 #9240 add null checks to methods that can be used on a stopped pool
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2023-02-01 18:43:02 +01:00
Greg Wilkins f4d5741b02 suppress stack
Signed-off-by: Greg Wilkins <gregw@webtide.com>
2023-02-01 16:07:51 +11:00
Lachlan Roberts d66e36b746 consumeAvailable should use number of reads instead of bytes
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2023-02-01 14:59:29 +11:00
Ludovic Orban a22270b4a5
Jetty 12.0.x silence tests' stacktraces (#9225)
* silence stack traces in IdleTimeoutTest by refactoring test + avoid execution of handlers over closed streams

Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2023-02-01 14:43:50 +11:00
Lachlan Roberts 4ffad09335 Merge remote-tracking branch 'origin/jetty-12.0.x' into jetty-12.0.x-9066-MultiPart-getParameters 2023-02-01 12:42:35 +11:00
Lachlan Roberts 88c6f20199 changes from review
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2023-02-01 12:08:38 +11:00
Lachlan Roberts c9004ee68c restore the resolveGenericRef with Class
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2023-02-01 11:27:49 +11:00
Lachlan Roberts 4933ba9aec cleanups of websocket-core-common util package
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2023-01-31 20:34:02 +11:00
Lachlan Roberts 9113624ab4 cleanups of websocket-core-common util package
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2023-01-31 20:26:09 +11:00
Lachlan Roberts 96fc36ca64 fix some jpms issues for websocket-core
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2023-01-31 20:09:51 +11:00
Lachlan Roberts 8133dd6c9e changes from review
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2023-01-31 14:29:42 +11:00
Lachlan Roberts 719c60d70d changes from review
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2023-01-31 11:42:40 +11:00
Greg Wilkins 50a88187fa
Jetty 12 - New HTTP Cookie interface (#9205)
Convert HttpCookie to an interface.
2023-01-31 10:02:28 +11:00
Greg Wilkins c871fa4402
Converted PathMappings to be an AbstractMap (#9213)
This was primarily done to avoid surprise of the previous behaviour of puts for a duplicate key being ignored.
The use of the AbstractMap class now provides javadoc and known/expected behaviour for key methods.
The only significant behaviour change is in the return type of some key methods, with the old/previous value replacing a boolean.
Some stream usage has also been replaced by the more efficient iterator.
2023-01-31 09:19:01 +11:00
Simone Bordet ae43c1f830
Fixed DetectorConnection buffer lifecycle. (#9227)
* Fixed DetectorConnection buffer lifecycle.

Now `detectAndUpgrade()` does not do any buffer lifecycle.
The buffer lifecycle is handled by the callers of `detectAndUpgrade()`.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2023-01-30 16:57:40 +01:00
Simone Bordet af6ecfebfe
Fixes #9210 - Jetty 12 - Review Pool and Pool.Entry (#9211)
* Fixes #9210 - Jetty 12 - Review Pool and Pool.Entry

* Extracted interface Pool, renamed implementation to ConcurrentPool.
* Extracted Pool.Entry as interface.
* Moved StrategyType to ConcurrentPool.
* Made Pool.Factory.wrap() work in order to wrap Pool instances.
* Removed constructors that were explicitly taking Pool parameters, replaced by a single Pool.Factory parameter.
* Added javadocs.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2023-01-30 10:11:29 +01:00
Lachlan Roberts 738712438c changes from review
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2023-01-30 13:20:51 +11:00
Simone Bordet cd732a175c
Review and normalized all Maven module <name> for consistency.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2023-01-27 19:09:30 +01:00
Ludovic Orban 2424c86b34 #9145 fix websocket modules
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2023-01-27 17:44:09 +01:00
Simone Bordet ded18f523d
Fixes #9166 - Jetty 12: review/remove ByteBufferPool (#9195)
* Fixes #9166 - Jetty 12: review/remove ByteBufferPool

* Replaced usages of ByteBufferPool with RetainableByteBufferPool.
* Removed ByteBufferPool and related classes.
* Renamed oej.http2.frames.DataFrame.getData() -> getByteBuffer() for consistency.
* Removed Accumulator.acquire(), and updated code to use RetainableByteBufferPool.acquire() instead.
* Fixed HttpOutput callbacks to correctly call super.onCompleteSuccess() and super.onCompleteFailure().

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2023-01-27 13:40:49 +01:00
Joakim Erdfelt 7f0294d4e5
Jetty 12 - Move test JPMS out of main `module-info.java` (#9203)
* Move test jpms out of main module-info.java
* There's no jetty-core/jetty-security anymore
2023-01-26 09:26:27 -06:00
Joakim Erdfelt 177fc234ef
Removing `@Disabled` on `SecuredRedirectHandlerTest` (#9208)
* Removing @Disabled on `SecuredRedirectHandler`
* Fixing javadoc
2023-01-26 09:26:09 -06:00
Joakim Erdfelt 08b9d6b8d9
Jetty 12 - Fixing simple `@named` virtualhost configuration (#9207)
* Fixing simple `@named` virtualhost configuration
* Fixing javadoc comment
2023-01-25 16:11:45 -06:00
Joakim Erdfelt c3ed8134dd
Adding javadoc 2023-01-25 16:06:35 -06:00
Joakim Erdfelt 81f7031cfe
Jetty 12 - Cleanup Shutdown classes (#9201)
* Fixed ShutdownHandler in jetty-core
* Delete ee9 ShutdownHandler
* Rename GracefulShutdownHandler to just GracefulHandler
* Adding graceful Jetty module
* Improved Javadoc + Token encoding tests
2023-01-25 13:54:53 -06:00
Lachlan Roberts 36e7f71def Merge remote-tracking branch 'origin/jetty-12.0.x' into jetty-12.0.x-9066-MultiPart-getParameters 2023-01-25 14:23:37 +11:00
Lachlan Roberts 2dfe7e6021 fix some more tests in MultiPartServletTest
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2023-01-25 10:49:30 +11:00
Lachlan Roberts d4682f4b85 Fix testMaxRequest size test in MultiPartServletTest
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2023-01-25 10:39:20 +11:00
Joakim Erdfelt 7d8dd946cc
Add and allow plural form of existing args. (#9202)
+ new `--modules=<name>,<name>`
+ new `--libs=<classpath>`
+ updated usage.txt
+ updated warning output hint
2023-01-24 16:02:26 -06:00
Greg Wilkins 39e5667f1d
Jetty-12 Remove usage of HandlerList and reduce usage of Handler.Collection (#9191)
* Remove usage of HandlerList and reduce usage of Handler.Collection

"The best part is no part" - Elon Musk!

The overwhelming usage of `HandlerList` and `Handler.Collection` was for adding the `DefaultHandler` after the main handler.  This PR adds a getter/setter for a `DefaultHandler` on the server, so we no longer need to always create a `Handler.Collection` structure.   This has allowed the deprecated `HandlerList` and `HandlerWrapper` classes to be removed.

In implementing this PR, several problems were found in the calculation of `InvocationType`, not least that it was assumed that an empty `Handler.Collection` was `BLOCKING`.  When this issue was fixed, any dynamic addition of contexts (deployer or SPI server) failed as the `InvocationType` changed.  So this PR also introduces the `isDynamic()` attribute of all `Handler.Container`s.  A dynamic container will always return `BLOCKING` from `getInvocationType()`, as there is always a race with a new handler being added.   A non-dynamic container will return a real `InvocationType`, calculated from its children, but it's mutator methods will ISE if contained handlers are changed.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
Co-authored-by: Jan Bartel <janb@webtide.com>
Co-authored-by: Simone Bordet <simone.bordet@gmail.com>
2023-01-25 08:08:09 +11:00
Joakim Erdfelt 53fc33161d
Remove junit internals usage. 2023-01-24 13:46:48 -06:00
Simone Bordet 8076aa10e7
Fixes implicit narrowing conversion reported in #9166.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2023-01-23 19:51:53 +01:00
Joakim Erdfelt 26a4ee5454
Jetty 12 - Introduce `GracefulShutdownHandler` and Test (#9174)
* Introduce GracefulShutdownHandler and test

+ started with removing `@Disabled` from `GracefulStopTest.java`
+ GracefulShutdownHandler based on Callback manipulation
2023-01-23 09:17:27 -06:00
Joakim Erdfelt 7920102702
Issue #9173 - Make wrapping of `ServletApiResponse` easier (#9175)
* Issue #9173 - Make wrapping of ServletApiResponse easier

* Fixing checkstyle and missing licenses
* Improved HttpCookie with javadoc and attribute handling
2023-01-23 08:23:30 -06:00
Greg Wilkins 99fdd219b7
Jetty 12.0.x 9131 remove path watcher (#9158)
* Reverted to Scanner for PropertyUserStore
* Remove PathWatcher from unassembled fork mode.

Signed-off-by: Greg Wilkins <gregw@webtide.com>
Co-authored-by: Jan Bartel <janb@webtide.com>
2023-01-20 08:03:27 +11:00
Greg Poulos 06efbcaa7c
Jetty 12.0.x document modules (#9151)
* Add documentation in "Standard Modules" section for the jmx module
* Add documentation in "Standard Modules" section for the ee8,9,10-webapp modules
* Use shorter markup tags to transclude documentation from .mod files
* Extract EE version strings into variables
* Replace literal usages of EE version numbers with custom attribute
* Use convention 'eeN' instead of 'eex' in filenames
* Update metadata tag for deploy module documentation
* Update deploy module documentation to discuss EE platform-specific deploy modules
* Add documentation for the resources module
* Add resources module into section table of contents
* Use jetty-home instead of JETTY_HOME as documentation attribute

Co-authored-by: Simone Bordet <simone.bordet@gmail.com>
2023-01-19 19:02:42 +01:00
Joakim Erdfelt fc762aea7d
Remove `@Disabled` from more `jetty-core/jetty-server` tests (#9162)
* Remove @Disabled from ConnectorTimeoutTests
* Remove @Disabled from SlowClientsTest
* Remove @Disabled from SslConnectionFactoryTest
* Remove @Disabled from DetectorConnectionTest
* Disabling quiche from checkstyle
* Removing ConnectorTimeoutTest BlockingTimeout tests
  + The concept of HttpConfiguration.blockingTimeout
     has been removed, these tests are no longer relevant
2023-01-19 10:31:51 -06:00
Joakim Erdfelt a37b8523e5
Jetty 12 - Javadoc cleanup & new inspection profile (#9165)
* Adding intellij-javadoc-inspection.xml for Jetty specific Javadoc inspection profile.
* Javadoc cleanup
2023-01-19 10:31:27 -06:00
Simone Bordet 0a002d7785
Merged branch 'jetty-11.0.x' into 'jetty-12.0.x'.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2023-01-19 15:23:13 +01:00
Ludovic Orban f3c229437a
Add latency recording utility handler (#9172)
* #8069 add latency recording handler

Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2023-01-19 10:27:05 +01:00
Joakim Erdfelt a06d1a29bb
Jetty 12 - Fix for HttpParser quick HTTP Version lookahead (#9171)
+ Removed the array optimized look ahead
+ version lookahead now done with getInt
+ improved test harness to check lf and crlf endings
+ added HTTP as int optimization
+ fixed bug in near miss of field cache

Signed-off-by: Greg Wilkins <gregw@webtide.com>
Co-authored-by: Greg Wilkins <gregw@webtide.com>
2023-01-18 09:37:55 +11:00
Joakim Erdfelt 6d1e244af6
Merge pull request #9136 from kohlschuetter/jetty-12-NativeImageResourcePath2
* util: Add support for GraalVM Native-Image resource:-URIs and Paths

GraalVM Native-Image makes its classpath resources accessible through an
opaque resource: URL scheme.

Add support for this scheme in URIUtil and PathResource.

Automatically create the NativeImageResourceFileSystem when necessary.
Also add a workaround where converting such Native-Image Paths back to
URI would yield the wrong URI (potentially a bug in GraalVM).

https://github.com/eclipse/jetty.project/issues/9116
https://github.com/oracle/graal/issues/5720

* URIUtil: Suppress CodeQL false positive error about path injection

Github CodeQL code scanning reports a high-severity error "Uncontrolled
data used in path expression", because a path depends on a user-provided
value.

This is a false positive.

Suppress the error by annotating a corresponding @SuppressWarnings tag.

Signed-off-by: Christian Kohlschütter <christian@kohlschutter.com>

* URIUtil: Removed unused code

KNOWN_SCHEMES isn't used anywhere.

* PathResource: Selectively enable resource: for GraalVM Native Image

In regular HotSpot VMs, the resource: scheme may be registered by other
clients. However, in GraalVM Native Image, this is used for classpath
resources.

This resource scheme needs to be enabled by default for Native Image
environments so we can support code that is unaware of GraalVM
internals, such as:

URL resourceURL = MyClass.class.getResource("some/resource");
Resource resource = ResourceFactory.root().newResource(resourceURL);

Signed-off-by: Christian Kohlschütter <christian@kohlschutter.com>

* PathResourceFactory: Ignore certain RuntimeExceptions upon init

Ignore FileSystemAlreadyExistsException, ProviderNotFoundException, etc.
that may be thrown upon calling FileSystems.newFileSystem.

Signed-off-by: Christian Kohlschütter <christian@kohlschutter.com>

* PathResource: Work-around false positive CodeQL warning

CodeQL prevents amending the call to Paths.get.

Work-around this by using a separate constructor. The additional benefit
is that URIUtil.correctResourceURI won't need to correct the URI twice.

Signed-off-by: Christian Kohlschütter <christian@kohlschutter.com>

* PathResource: Fix "isAlias" issue with resource: URIs

Fix two more places where Native Image resource: URIs need to be
changed.

Without this change, Resource#isAlias() would return true for such URIs,
and a warning like "BaseResource resource:/some/package/ is aliased to
resource:file:///resources!/some/package/" would be logged.

* Move GraalVM Native-Image code to NativeImagePathResource/-Factory

Keep the GraalVM Native-Image code contained in custom subclasses.

We still enable the "resource:" URL scheme by default if a GraalVM
Native-Image environment is detected via System property. This allows us
to transparently support calls like
ResourceFactory.root().newResource(MyClass.class.getResorce("webapp"))

Signed-off-by: Christian Kohlschütter <christian@kohlschutter.com>

* Refactor Graal native-image resource: handling

Detect the resource: scheme by checking the scheme of a well-known
resource instead of looking at a system property.

Rename NativeImagePathResource* to GraalIssue5720PathResource* and make
these classes package-private.

Signed-off-by: Christian Kohlschütter <christian@kohlschutter.com>

* Only use GraalIssue5720PathResourceFactory when truly needed

Previously, we were always enabling this resource factory for GraalVM
native-image environments.

We now check if that's actually necessary.

We fall back to MountedPathResourceFactory or PathResourceFactory,
depending on whether the URL contains "!/" or not.

Signed-off-by: Christian Kohlschütter <christian@kohlschutter.com>
2023-01-17 13:08:50 -06:00
Greg Wilkins a4ee42944b suppress test stacks 2023-01-17 16:58:55 +11:00
Lachlan Roberts 539113df7c Merge remote-tracking branch 'origin/jetty-12.0.x' into jetty-12.0.x-9066-MultiPart-getParameters 2023-01-17 15:12:38 +11:00
Lachlan Roberts 5bcfeaac09 improvements to multipart
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2023-01-17 14:09:45 +11:00
Greg Wilkins 94991c60c0
Jetty 12 temp directory cleanup (#9153)
+ `Server` now has setter/getter for a temp directory, which can be null
 + `Context` now has a getter for a temp directory, which is never null 
 + Server root Context temp directory is either whatever is set, else a work directory, else java.io.tmpdir
 + WebInfConfiguration will still create a temp directory name, but defers to ContextHandler for creation/persistence of the temp directory
 + temp directory (and BASE) removed from the deployer, as it is now the server temp directory.
2023-01-17 11:44:09 +11:00
Christian Kohlschütter cdea111d3f Only use GraalIssue5720PathResourceFactory when truly needed
Previously, we were always enabling this resource factory for GraalVM
native-image environments.

We now check if that's actually necessary.

We fall back to MountedPathResourceFactory or PathResourceFactory,
depending on whether the URL contains "!/" or not.
2023-01-16 23:27:53 +01:00
Christian Kohlschütter 30ffbcb7e4 Merge remote-tracking branch 'upstream/jetty-12.0.x' into jetty-12-NativeImageResourcePath2 2023-01-16 18:48:04 +01:00
Joakim Erdfelt be3b8f0b9d
Issue #9167 - making assumption in flaky test 2023-01-16 11:33:43 -06:00
Lachlan Roberts 1e20abc902 improvements to multipart
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2023-01-16 19:07:51 +11:00
Olivier Lamy 58f5e468fc
jetty 12.0.x cleanup duplicate osgi pom metadata (#9093)
* fix naming convention, artifactId == directtory, add comment on maven-eclipse-plugin
* cleanup dependencies from jetty-ee9 osgi
* cleanup dependencies from jetty-ee10 osgi
* remove maven-eclipse-plugin configuration
Signed-off-by: Olivier Lamy <olamy@apache.org>
2023-01-16 11:39:37 +10:00
Lachlan Roberts 3816e4b98a fix multipart test cases, add more api to the core MultiPart class
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2023-01-16 11:52:04 +11:00
Joakim Erdfelt 8374860661
Jetty 12 - Add tests in util/resource for alternate FileSystem implementations (#9149)
* Add tests in util/resource for alternate FileSystem implementations
2023-01-13 09:45:42 -06:00
Greg Wilkins 8b3bcc3a50
Cleanup non-retainable `Retainable`s (#9159)
`Retainable`s that return false from `canRetain()` now are noops if `retain()` is called, which allows for a simpler calling convention.
`AsyncContent` has also been reworked to allocate less and be clearer in its use of `canRetain()`.
2023-01-13 10:37:16 +01:00
Simone Bordet 46355c6110
Fixes retainability of special Chunks (#9073)
* Fixes #8993 - Retainability of special Chunks

* Restored Jetty 11's AsyncContentProducer and related classes in jetty-ee9-nested module (src and test).
* Introduced Retainable.canRetain().
* Removed Chunk.isTerminal() and replaced it with alternative method calls.
* Clarified AsyncContent.write() in case of Chunk.Error.
* Removed AsyncContent.write(Chunk, Callback) because it was making the API confusing.
  For example, AsyncContent.close() clashing with write(EOF, NOOP), or
  AsyncContent.fail(x) clashing with write(Chunk.Error, NOOP), etc.
* Improved usage of Chunk.from(..., Retainable).
* Improved usage of Chunk.slice().
* Using from() in MultiPart, rather than duplicating code.
* Fixed MultiPart.Parser.Listener.onPartContent() javadocs.
* Renamed non-retaining Chunk.from() to Chunk.asChunk().
* Removed Chunk.slice() methods, inlining them where necessary.
* Carefully reviewed all usages of read()-like methods that return a Retainable instance to make sure it is released.
* Updated HTTP/2 and HTTP/3 usages of Stream.Data to follow the correct retain/release semantic.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2023-01-13 01:10:56 +01:00
Lachlan Roberts 02f9cc0eb3 fixes to pass new multipart test cases
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2023-01-12 19:21:00 +11:00
Olivier Lamy de1f74b132
Merge branch 'jetty-11.0.x' into jetty-12.0.x 2023-01-12 10:31:05 +08:00
Joakim Erdfelt 3c63ff2dc6
Merge remote-tracking branch 'origin/jetty-12.0.x' into jetty-12.0.x 2023-01-11 08:17:47 -06:00
Joakim Erdfelt dfd214debe
More fundamental test case 2023-01-11 08:17:37 -06:00
Simone Bordet a1c5cefd0d
Reorganization of jetty-client classes. (#9127)
* Reorganization of jetty-client classes.

* Moved oej.client.api to oej.client
* Moved oej.client.util to oej.client
* Moved implementation classes to oej.client.internal
* Moved transports to oej.client.transport
* Moved transport implementation classes to oej.client.transport.internal
* Moved TunnelRequest to oej.client.internal.

* Moved FastCGI transport classes to o.e.j.fcgi.transport
* Moved FastCGI transport implementation classes to o.e.j.fcgi.transport.internal

* Updated WebSocket core client to use only exported, non-internal, oej.client classes.

* Expanded oej.client.Destination APIs:
  - added: getOrigin(), isSecure(), getProxy(), getConnectionPool(), getHttpClient(), send(..).
  - removed: getScheme(), getHost(), getPort() because they don't uniquely identify a Destination anymore (Origin does)
* Moved destination sweeper functionality from HttpDestination to HttpClient.
  HttpDestination does not implement close() anymore, now relies on LifeCycle.stop()
* Moved HttpReceiver.storeCookie() logic to HttpClient.putCookie() to avoid exposing CookieManager.
* Moved HttpClient.getAcceptEncodingField() to ContentDecoder.Factories

* Avoid public/protected Logger instances.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2023-01-11 10:05:43 +01:00
Joakim Erdfelt 03569efb6c
Removing @Disabled from SslUploadTest 2023-01-10 16:27:09 -06:00
Joakim Erdfelt 0a5c143590
Removing @Disabled from jetty-start 2023-01-10 16:16:13 -06:00
Christian Kohlschütter 8d0d3278a6 Refactor Graal native-image resource: handling
Detect the resource: scheme by checking the scheme of a well-known
resource instead of looking at a system property.

Rename NativeImagePathResource* to GraalIssue5720PathResource* and make
these classes package-private.

Signed-off-by: Christian Kohlschütter <christian@kohlschutter.com>
2023-01-10 14:13:13 +01:00
Ludovic Orban 177bafbace #9078 make HttpContent.getByteBuffer() implementations return new ByteBuffer instances and document that contract
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2023-01-10 10:18:55 +01:00
Simone Bordet 8d6734cf78
Fixes #9141 - Thread-safe Content.Chunk#slice (#9142)
* Fixes #9141 - Thread-safe Content.Chunk#slice

* Changed Content.Chunk.slice(int, int, boolean) to have the same parameters as ByteBuffer.slice(int, int) for consistency.
* Updated Chunk.slice(int, int, boolean) javadocs.
* Update code that was calling Chunk.slice(int, int, boolean).

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2023-01-10 09:49:39 +01:00
Joakim Erdfelt b4d274e3d3
Remove `@Disabled` from `jetty-jmx` (#9143)
* Remove @Disabled from jetty-jmx
2023-01-09 15:20:55 -06:00
Joakim Erdfelt 8db7101862
Fixing TypeUtilTest expectation 2023-01-09 10:07:33 -06:00
Joakim Erdfelt ebd45ebb74
Renaming TypeUtilTest.TestClass to .ExampleClass to avoid junit picking it up 2023-01-09 09:42:40 -06:00
Christian Kohlschütter c74ad3cec6 Move GraalVM Native-Image code to NativeImagePathResource/-Factory
Keep the GraalVM Native-Image code contained in custom subclasses.

We still enable the "resource:" URL scheme by default if a GraalVM
Native-Image environment is detected via System property. This allows us
to transparently support calls like
ResourceFactory.root().newResource(MyClass.class.getResorce("webapp"))

Signed-off-by: Christian Kohlschütter <christian@kohlschutter.com>
2023-01-09 16:32:04 +01:00
Ludovic Orban f14c0a5002
Jetty 12.0.x h2c perf improvement: implement equals/hashcode in Stream (#9077)
implement equals/hashcode in H2Stream

Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2023-01-09 10:37:20 +01:00
Christian Kohlschütter a5011d128d PathResource: Fix "isAlias" issue with resource: URIs
Fix two more places where Native Image resource: URIs need to be
changed.

Without this change, Resource#isAlias() would return true for such URIs,
and a warning like "BaseResource resource:/some/package/ is aliased to
resource:file:///resources!/some/package/" would be logged.
2023-01-09 01:12:40 +01:00
Christian Kohlschütter 0bb9d16d7c PathResource: Work-around false positive CodeQL warning
CodeQL prevents amending the call to Paths.get.

Work-around this by using a separate constructor. The additional benefit
is that URIUtil.correctResourceURI won't need to correct the URI twice.

Signed-off-by: Christian Kohlschütter <christian@kohlschutter.com>
2023-01-08 19:21:40 +01:00
Christian Kohlschütter ac1592ec68 PathResourceFactory: Ignore certain RuntimeExceptions upon init
Ignore FileSystemAlreadyExistsException, ProviderNotFoundException, etc.
that may be thrown upon calling FileSystems.newFileSystem.

Signed-off-by: Christian Kohlschütter <christian@kohlschutter.com>
2023-01-08 17:03:32 +01:00
Christian Kohlschütter b5dabf9fdd PathResource: Selectively enable resource: for GraalVM Native Image
In regular HotSpot VMs, the resource: scheme may be registered by other
clients. However, in GraalVM Native Image, this is used for classpath
resources.

This resource scheme needs to be enabled by default for Native Image
environments so we can support code that is unaware of GraalVM
internals, such as:

URL resourceURL = MyClass.class.getResource("some/resource");
Resource resource = ResourceFactory.root().newResource(resourceURL);

Signed-off-by: Christian Kohlschütter <christian@kohlschutter.com>
2023-01-08 16:55:24 +01:00
Christian Kohlschütter 71055615f9 URIUtil: Removed unused code
KNOWN_SCHEMES isn't used anywhere.
2023-01-08 16:25:43 +01:00
Christian Kohlschütter 41c80b148c URIUtil: Suppress CodeQL false positive error about path injection
Github CodeQL code scanning reports a high-severity error "Uncontrolled
data used in path expression", because a path depends on a user-provided
value.

This is a false positive.

Suppress the error by annotating a corresponding @SuppressWarnings tag.

Signed-off-by: Christian Kohlschütter <christian@kohlschutter.com>
2023-01-08 15:27:14 +01:00
Christian Kohlschütter b53e7e063e util: Add support for GraalVM Native-Image resource:-URIs and Paths
GraalVM Native-Image makes its classpath resources accessible through an
opaque resource: URL scheme.

Add support for this scheme in URIUtil and PathResource.

Automatically create the NativeImageResourceFileSystem when necessary.
Also add a workaround where converting such Native-Image Paths back to
URI would yield the wrong URI (potentially a bug in GraalVM).

https://github.com/eclipse/jetty.project/issues/9116
https://github.com/oracle/graal/issues/5720

Signed-off-by: Christian Kohlschütter <christian@kohlschutter.com>
2023-01-08 00:05:16 +01:00
Greg Poulos 1dc175efac
Jetty 12.0.x documentation (#9096)
* fix broken include
* fix demo module example
* add documentation markup to fix documentation build error
* editorial suggestions for installation instructions
* editorial suggestions for quickstart guide
* fix unresolved directive errors
* fix file not found exception thrown during doc build
* editorial suggestions for deployment quickstart, plus some fixed references
* Update documentation/jetty-documentation/src/main/asciidoc/operations-guide/begin/start.adoc

Co-authored-by: Simone Bordet <simone.bordet@gmail.com>
2023-01-06 17:21:46 +01:00
Joakim Erdfelt 250c9409fa
Remove @Disabled on ResourceTest 2023-01-04 14:27:55 -06:00
Joakim Erdfelt c26538ba86
Remove @Disabled on SerializedInvokerTest 2023-01-04 14:27:29 -06:00
Joakim Erdfelt eb8152094d
Remove @Disabled on LifeCycleListenerNestedTest 2023-01-04 14:26:19 -06:00
Joakim Erdfelt 4c1843f2fb
Renaming TestConfiguration to ExampleConfiguration.
+ Name changed to avoid it being picked up by junit runners as a Test case (which this class is not)
2023-01-04 09:33:03 -06:00
Joakim Erdfelt 94ddbbfddd
Removing QueueBenchmarkTest (it should exist as a jmh test anyway) 2023-01-04 09:30:13 -06:00
Joakim Erdfelt f3cbe80395
Removing @Disabled microbenchmark from BufferUtilTest 2023-01-04 09:29:50 -06:00
Joakim Erdfelt ccce29dde8
Removing @Diabled from SocketChannelEndPointTest 2023-01-04 09:27:31 -06:00
Ludovic Orban fcbdab8b3e
Rework client content listeners (#8981)
* Removed DemandedContentListener
* Updated AsyncContentListener signature
* Updated documentation

Signed-off-by: Ludovic Orban <lorban@bitronix.be>
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
Co-authored-by: Simone Bordet <simone.bordet@gmail.com>
2023-01-04 11:01:18 +01:00
Joakim Erdfelt f1b8bf5663
Merge pull request #9122 from eclipse/fix/jetty-12.0.x/remove-client-usage-class
Jetty 12 : Removing client `Usage.java` as the examples have been moved to documentation
2023-01-03 13:29:33 -06:00
Simone Bordet ebbdda61bc
Replaced try/catch with MathUtils.cappedAdd().
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2023-01-03 18:56:50 +01:00
Joakim Erdfelt c2f04f5efc
Merge pull request #9117 from eclipse/fix/jetty-12.0.x/enable-connectionpooltest
Removing `@Disabled` from `ConnectionPoolTest`
2023-01-03 11:10:43 -06:00
Joakim Erdfelt 8abebdbe17
Removing client Usage.java as the examples have been moved to documentation 2023-01-03 11:07:53 -06:00
Dr. Christian Kohlschütter 360bd2ea0a
core: util: TypeUtil: Use method references instead of reflection (#9115)
* core: util: TypeUtil: Use method references instead of reflection

TypeUtil currently uses reflection to convert Strings to primitive/boxed
basic types.

This may not only be a performance problem, but it also prevents
environments like GraalVM native-image to detect required methods
without the help of an agent.

Use method references (Boolean::valueOf, etc.) instead.

Signed-off-by: Christian Kohlschütter <christian@kohlschutter.com>
2023-01-02 14:54:27 -06:00
Joakim Erdfelt 6a942f66d9
Removing @Disabled from HttpCookieTest 2023-01-02 14:31:29 -06:00
Joakim Erdfelt e5a6622f37
Removing @Disabled from ConnectionPoolTest 2023-01-02 11:55:22 -06:00
Greg Wilkins 838091d2be
Alternate DelayedHandler & ThreadLimitHandler implementations #9051 (#9056)
* Improved javadoc
* Refactored ThreadLimitHandler to avoid lambda creation and to always execute
* Refactored DelayedHandler to avoid lambda creation and to execute only if needed
* added modules for the DelayedHandler

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
Signed-off-by: Greg Wilkins <gregw@webtide.com>
Co-authored-by: Simone Bordet <simone.bordet@gmail.com>
2022-12-24 10:49:29 +11:00
Lachlan 0e95953be3
Merge pull request #9043 from eclipse/jetty-12.0.x-httpcontentFactoryCleanup
Create StaticHttpContentFactory and other cleanups
2022-12-23 22:54:38 +11:00
Greg Wilkins 3d4bb492d0 Improved test coverage 2022-12-22 09:51:14 +11:00
Greg Wilkins 2a5fd34716 Suppress expected stack 2022-12-22 09:24:40 +11:00
Greg Wilkins 81b5fa61cf Avoid using `formatted` in getId 2022-12-22 09:22:29 +11:00
Joakim Erdfelt 0485fdf2f3
Fixing FileID.getFileName when dealing with opaque URIs 2022-12-21 14:51:28 -06:00
Joakim Erdfelt ff48442fa0
Narrowing in on possible bug in jar:file:// handling of Resource.getFileName() 2022-12-21 14:39:20 -06:00
Joakim Erdfelt fe74264ecc
Simpler TreeTrie.isEmpty() method (#9075)
Avoid creating (Key)Set to just test for empty.
More test cases
2022-12-21 12:46:08 -06:00
Joakim Erdfelt ce52ffdd33
More meaningful .toString() implementations 2022-12-21 12:14:07 -06:00
Joakim Erdfelt e753f35965
Adding more LOG.debug() 2022-12-21 12:04:22 -06:00
Jan Bartel 1abaeb6cee
Jetty 12.0.x osgi (#9068) 2022-12-21 08:12:44 -06:00
Joakim Erdfelt e9ec1f423c
Merge remote-tracking branch 'origin/jetty-11.0.x' into jetty-12.0.x 2022-12-20 12:56:27 -06:00
Joakim Erdfelt c7e866562f
Enable all jetty-deploy tests (#9058)
* Enable all jetty-deploy tests
2022-12-20 11:40:49 -06:00
Greg Wilkins 12d66f083a Merge remote-tracking branch 'origin/jetty-11.0.x' into jetty-12.0.x 2022-12-20 11:20:39 +11:00
Jan Bartel 721a4c74fa
Jetty 12.0.x ee10 convert cookie (#9057)
* Convert HttpCookie -> Cookie based on compliance mode.
* Fix max-age
* Fix old cookie handling; getCookies return null instead of empty list
2022-12-20 10:22:38 +11:00
Greg Wilkins c18e790858
Jetty 12 handler as boolean processor (#9035)
Alternative Handler architecture.

All Handlers are Processors, which now return a boolean to indicate the request has been accepted.
The request/response/callback are no longer modal, so there is no race with the boolean return.

Optimized PathMappings.
Avoid iterations if only ServletPathSpec instances
Avoid tests for empty mappings.
Better reset implementation
Improve suffix matching
Improve exact matching

Renamed HttpStream.getNanoTimeStamp() to getNanoTime().

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
Co-authored-by: Simone Bordet <simone.bordet@gmail.com>
2022-12-19 16:02:26 +01:00
Lachlan Roberts 06f9e5ec18 Merge remote-tracking branch 'origin/jetty-12.0.x' into jetty-12.0.x-httpcontentFactoryCleanup 2022-12-19 21:46:05 +11:00
Greg Wilkins c55938c3fa Merge remote-tracking branch 'origin/jetty-11.0.x' into jetty-12.0.x 2022-12-17 10:29:34 +11:00
Lachlan Roberts 0f1420fbd7 changes from review
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2022-12-16 17:17:12 +11:00
Joakim Erdfelt 3c4fdad9ce
Enable ExternalSiteTest 2022-12-14 13:43:25 -06:00
Joakim Erdfelt 1cecf13575
Enable ConscryptHTTP2ClientTest 2022-12-14 13:36:59 -06:00
Lachlan Roberts a5817144f6 fix HttpContent.Factory config in ResourceHandlerTest
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2022-12-14 18:16:32 +11:00
Simone Bordet e16b7948b2 Fixes #9038 - Jetty 12 - Review EE10 Http[Input|Output].Interceptor APIs
Removed HttpInput.Interceptor and HttpOutput.Interceptor.
Simplified AsyncContentProducer.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2022-12-13 15:33:27 +01:00
Lachlan Roberts 60656ebb72 make stylesheet final in StaticHttpContentFactory
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2022-12-13 10:48:06 +11:00
Lachlan Roberts 9270e62f78 rename of StaticHttpContentFactory
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2022-12-13 10:44:35 +11:00
Lachlan Roberts abc40afd89 cleanups for HttpContent Factories
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2022-12-13 09:55:55 +11:00
Ludovic Orban 150cad510f improve javadoc and testing + generously comment the surprising implementation
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2022-12-09 19:25:50 +01:00
Simone Bordet d3a0aa281b
Fixed flaky test MultiPartRequestContentTest.
The problem was that sometimes content bytes generated randomically ended with \r, confusing the multipart parser.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2022-12-09 15:58:57 +01:00
Jan Bartel 642d983e01
Issue #8984 Fix dump of Attributes (#9024) 2022-12-09 09:48:55 +11:00
Simone Bordet bc0b4149ff
Clarified HttpReceiver.responseFailure().
Added javadocs to relevant methods in HttpChannel.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2022-12-07 23:50:39 +01:00
Simone Bordet 119996c16f
Merged branch 'jetty-11.0.x' into 'jetty-12.0.x'.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2022-12-07 19:28:05 +01:00
Simone Bordet ee685b23fa
Merged branch 'jetty-11.0.x' into 'jetty-12.0.x'.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2022-12-07 16:23:11 +01:00
Ludovic Orban b244c9f320 fix testFromEmptyByteBufferWithoutReleaser
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2022-12-06 22:52:12 +01:00
Joakim Erdfelt 2d9c735d63
Merge remote-tracking branch 'origin/jetty-11.0.x' into jetty-12.0.x 2022-12-06 14:38:53 -06:00
Ludovic Orban 017b6c1391 fcgi and ContentTransformer bug fixes
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2022-12-06 20:04:30 +01:00
Ludovic Orban 42186bff18 #8993: Disallow creating new chunks with an empty ByteBuffer to make Chunk.isTerminal() contract stricter
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2022-12-06 19:48:17 +01:00
Joakim Erdfelt 45d0b68850
Jetty 12 - Fix `GzipHandler` handling of chunked and `Content-Length` (#8927)
* Jetty 12 - Enabling ContentLengthTest.testGzippedContentLengthAddedByServer
* Restoring HttpReceiver
* Fixing RequestTest
* Issue #8927 - Cleanup of GzipResponse with eye on RFC-1952 behaviors
* Issue #8927 - Set FINISHED state
* Fixing HEAD from HTTP/2 and HTTP/3
* Adding requested javadoc
2022-12-06 12:32:01 -06:00
Joakim Erdfelt 95fd8adeb8
Jetty 12 - Issue #8999 - Remove FileID.isArchive() from ResourceFactory (#9002)
* Issue #8999 - Remove FileID.isArchive() from ResourceFactory
* Remove FileID.isArchive() from URIUtil.toJarFileUri
2022-12-06 12:31:12 -06:00
Simone Bordet d5054667df
Improved locking for HttpReceiver.ContentSource. (#9007)
* Improved locking for HttpReceiver.ContentSource.

Improved response failure code path.
Now either responseFailure() must be called, or exchange.responseComplete() followed by HttpReceiver.abort().

Fixed failAndClose() for HTTP/2 and HTTP/3: the connection must not be closed, stream.reset() is sufficient.

Fixed flaky test HttpClientDemandTest.testTwoListenersWithDifferentDemand().

Fixed DistributionTests.testVirtualThreadPool().

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2022-12-06 15:09:48 +01:00
Greg Wilkins e682f73d54
Cleanup of TypeUtil and ContextHandler stop/start (#8998)
* Extracted some non controversial cleanups from another mega PR:

 + TypeUtil class shortname used more often and includes trailing digits
 + Fixed direct stopping/starting of a nested ContextHandler
 + Fixed null path handling in nested context
 + more tests for all of the above

* Extracted some non controversial cleanups from another mega PR:

Fixed nested doStart and doStop

* Extracted some non controversial cleanups from another mega PR:

Fixed DistributionTests
2022-12-06 15:43:31 +11:00
Greg Wilkins 9711b04e00 More generous test timeouts
Signed-off-by: Greg Wilkins <gregw@webtide.com>
2022-12-05 16:27:41 +11:00
Simone Bordet 346a59197b
Merged branch 'jetty-11.0.x' into 'jetty-12.0.x'.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2022-12-01 18:04:54 +01:00
Simone Bordet 9f4bc5e5e2
Added test to external server via HttpClientTransportOverHTTP3.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2022-12-01 11:06:33 +01:00
Ludovic Orban 63f1126abc offer EOF data when header frame has the last flag set to true before calling notifyHeaders()
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2022-11-29 09:31:49 +01:00
Ludovic Orban 12e48a7241 replace FSM with SerializedInvoker
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2022-11-29 09:31:49 +01:00
Greg Wilkins eec5e69079
Converted writeTrailers to a static method (#8940)
Co-authored-by: Simone Bordet <simone.bordet@gmail.com>
2022-11-29 15:08:36 +11:00
Greg Wilkins 011a7267de
Cleanup ContextHandler (#8928)
* Cleanup ContextHandler

Extracted some of the goodness from #8793:
 + Clear enter/exit scope methods rather than opaque suppliers and Runnables
 + Removed overloading of "Context" class name to avoid accidental usage of wrong type.
 + Less holding onto request/response as fields

* Cleanup ContextHandler

fixed test with no server

* Updates from review.
2022-11-25 14:27:39 +11:00
Greg Wilkins 09594361a1
Jetty-12 Rewrite RuleProcessor (#8934)
* Rewrite RuleProcessor

This decouples the rewrite module from the `WrapperProcessor` class, which is being considered for significant refactoring or removal.
Having a module specific version of that class allows better code readability and a more appropriate API that avoids duplication request instances.

* Fixed javadoc

* Updates from review.

* Updates from review.
2022-11-25 14:27:21 +11:00
Lachlan a0a8acd8b9
Merge pull request #8935 from eclipse/jetty-12.0.x-byteranges
Re-enable DefaultServletRangesTest and fix byte ranges for ee10
2022-11-25 10:27:33 +11:00
Greg Wilkins ca3055423a
Mutable server MimeTypes (#8933)
Make the MimeTypes available from the server mutable.
Context MimeTypes are now wrappers over the server MimeTypes, so configuration at the server level is inherited by all contexts.
2022-11-24 16:57:29 +11:00