From 4830fd15e94492b3ac4eb5ed772d7746a92d2a49 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Wed, 6 Jun 2018 16:42:54 -0500 Subject: [PATCH 01/88] Updating to version 9.2.25.v20180606 --- VERSION.txt | 8 +++++++- aggregates/jetty-all/pom.xml | 2 +- apache-jsp/pom.xml | 2 +- apache-jstl/pom.xml | 2 +- examples/async-rest/async-rest-jar/pom.xml | 2 +- examples/async-rest/async-rest-webapp/pom.xml | 2 +- examples/async-rest/pom.xml | 2 +- examples/embedded/pom.xml | 2 +- examples/pom.xml | 2 +- jetty-alpn/jetty-alpn-client/pom.xml | 2 +- jetty-alpn/jetty-alpn-server/pom.xml | 2 +- jetty-alpn/pom.xml | 2 +- jetty-annotations/pom.xml | 2 +- jetty-ant/pom.xml | 2 +- jetty-cdi/pom.xml | 2 +- jetty-client/pom.xml | 2 +- jetty-continuation/pom.xml | 2 +- jetty-deploy/pom.xml | 2 +- jetty-distribution/pom.xml | 2 +- jetty-fcgi/fcgi-client/pom.xml | 2 +- jetty-fcgi/fcgi-server/pom.xml | 2 +- jetty-fcgi/pom.xml | 2 +- jetty-http-spi/pom.xml | 2 +- jetty-http/pom.xml | 2 +- jetty-io/pom.xml | 2 +- jetty-jaas/pom.xml | 2 +- jetty-jaspi/pom.xml | 2 +- jetty-jmx/pom.xml | 2 +- jetty-jndi/pom.xml | 2 +- jetty-jsp/pom.xml | 2 +- jetty-jspc-maven-plugin/pom.xml | 2 +- jetty-maven-plugin/pom.xml | 2 +- jetty-monitor/pom.xml | 2 +- jetty-nosql/pom.xml | 2 +- jetty-osgi/jetty-osgi-alpn/pom.xml | 2 +- jetty-osgi/jetty-osgi-boot-jsp/pom.xml | 2 +- jetty-osgi/jetty-osgi-boot-warurl/pom.xml | 2 +- jetty-osgi/jetty-osgi-boot/pom.xml | 2 +- jetty-osgi/jetty-osgi-httpservice/pom.xml | 2 +- jetty-osgi/pom.xml | 2 +- jetty-osgi/test-jetty-osgi-context/pom.xml | 2 +- jetty-osgi/test-jetty-osgi-webapp/pom.xml | 2 +- jetty-osgi/test-jetty-osgi/pom.xml | 2 +- jetty-plus/pom.xml | 2 +- jetty-proxy/pom.xml | 2 +- jetty-quickstart/pom.xml | 2 +- jetty-rewrite/pom.xml | 2 +- jetty-runner/pom.xml | 2 +- jetty-security/pom.xml | 2 +- jetty-server/pom.xml | 2 +- jetty-servlet/pom.xml | 2 +- jetty-servlets/pom.xml | 2 +- jetty-spdy/pom.xml | 2 +- jetty-spdy/spdy-alpn-tests/pom.xml | 2 +- jetty-spdy/spdy-client/pom.xml | 2 +- jetty-spdy/spdy-core/pom.xml | 2 +- jetty-spdy/spdy-example-webapp/pom.xml | 2 +- jetty-spdy/spdy-http-client-transport/pom.xml | 2 +- jetty-spdy/spdy-http-common/pom.xml | 2 +- jetty-spdy/spdy-http-server/pom.xml | 2 +- jetty-spdy/spdy-server/pom.xml | 2 +- jetty-spring/pom.xml | 2 +- jetty-start/pom.xml | 2 +- jetty-util-ajax/pom.xml | 2 +- jetty-util/pom.xml | 2 +- jetty-webapp/pom.xml | 2 +- jetty-websocket/javax-websocket-client-impl/pom.xml | 2 +- jetty-websocket/javax-websocket-server-impl/pom.xml | 2 +- jetty-websocket/pom.xml | 2 +- jetty-websocket/websocket-api/pom.xml | 2 +- jetty-websocket/websocket-client/pom.xml | 2 +- jetty-websocket/websocket-common/pom.xml | 2 +- jetty-websocket/websocket-server/pom.xml | 2 +- jetty-websocket/websocket-servlet/pom.xml | 2 +- jetty-xml/pom.xml | 2 +- pom.xml | 2 +- tests/pom.xml | 2 +- tests/test-continuation/pom.xml | 2 +- tests/test-integration/pom.xml | 2 +- tests/test-jmx/jmx-webapp-it/pom.xml | 2 +- tests/test-jmx/jmx-webapp/pom.xml | 2 +- tests/test-jmx/pom.xml | 2 +- tests/test-loginservice/pom.xml | 2 +- tests/test-quickstart/pom.xml | 2 +- tests/test-sessions/pom.xml | 2 +- tests/test-sessions/test-hash-sessions/pom.xml | 2 +- tests/test-sessions/test-jdbc-sessions/pom.xml | 2 +- tests/test-sessions/test-mongodb-sessions/pom.xml | 2 +- tests/test-sessions/test-sessions-common/pom.xml | 2 +- tests/test-webapps/pom.xml | 2 +- tests/test-webapps/test-jaas-webapp/pom.xml | 2 +- tests/test-webapps/test-jetty-webapp/pom.xml | 2 +- tests/test-webapps/test-jndi-webapp/pom.xml | 2 +- tests/test-webapps/test-mock-resources/pom.xml | 2 +- tests/test-webapps/test-proxy-webapp/pom.xml | 2 +- tests/test-webapps/test-servlet-spec/pom.xml | 2 +- .../test-servlet-spec/test-container-initializer/pom.xml | 2 +- .../test-servlet-spec/test-spec-webapp/pom.xml | 2 +- .../test-servlet-spec/test-web-fragment/pom.xml | 2 +- tests/test-webapps/test-webapp-rfc2616/pom.xml | 2 +- 100 files changed, 106 insertions(+), 100 deletions(-) diff --git a/VERSION.txt b/VERSION.txt index 5f76c236137..1013951088a 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1,4 +1,10 @@ -jetty-9.2.25-SNAPSHOT +jetty-9.2.25.v20180606 - 06 June 2018 + + 2114 Fix NPE in JettyHttpServerProvider + + 2135 Android 8.1 needs direct buffers for SSL/TLS to work + + 2529 HttpParser cleanup + + 2603 WebSocket ByteAccumulator initialized with wrong maximum + + 2604 WebSocket ByteAccumulator should report sizes in + MessageTooLargeException jetty-9.2.24.v20180105 - 05 January 2018 + 2065 Backport #347 to Jetty 9.2.x diff --git a/aggregates/jetty-all/pom.xml b/aggregates/jetty-all/pom.xml index 5c3678a795d..af2e0e56167 100644 --- a/aggregates/jetty-all/pom.xml +++ b/aggregates/jetty-all/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 ../../pom.xml 4.0.0 diff --git a/apache-jsp/pom.xml b/apache-jsp/pom.xml index c88650c52ac..10a1fb444d9 100644 --- a/apache-jsp/pom.xml +++ b/apache-jsp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 apache-jsp diff --git a/apache-jstl/pom.xml b/apache-jstl/pom.xml index d5c618e371e..75b076e74f2 100644 --- a/apache-jstl/pom.xml +++ b/apache-jstl/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 apache-jstl diff --git a/examples/async-rest/async-rest-jar/pom.xml b/examples/async-rest/async-rest-jar/pom.xml index 15d7ffc9415..54d070cb166 100644 --- a/examples/async-rest/async-rest-jar/pom.xml +++ b/examples/async-rest/async-rest-jar/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty example-async-rest - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 org.eclipse.jetty.example-async-rest diff --git a/examples/async-rest/async-rest-webapp/pom.xml b/examples/async-rest/async-rest-webapp/pom.xml index b0c6f033ed7..ba63eaed5ae 100644 --- a/examples/async-rest/async-rest-webapp/pom.xml +++ b/examples/async-rest/async-rest-webapp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty example-async-rest - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 org.eclipse.jetty.example-async-rest diff --git a/examples/async-rest/pom.xml b/examples/async-rest/pom.xml index 634bf3cf1da..5d460853633 100644 --- a/examples/async-rest/pom.xml +++ b/examples/async-rest/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.examples examples-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 ../pom.xml 4.0.0 diff --git a/examples/embedded/pom.xml b/examples/embedded/pom.xml index a22184fdef7..4fe89817a1d 100644 --- a/examples/embedded/pom.xml +++ b/examples/embedded/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.examples examples-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 ../pom.xml 4.0.0 diff --git a/examples/pom.xml b/examples/pom.xml index 74d8b501eaf..100ec14f587 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 ../pom.xml org.eclipse.jetty.examples diff --git a/jetty-alpn/jetty-alpn-client/pom.xml b/jetty-alpn/jetty-alpn-client/pom.xml index 3963e78e211..cd02dbd744a 100644 --- a/jetty-alpn/jetty-alpn-client/pom.xml +++ b/jetty-alpn/jetty-alpn-client/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-alpn-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-alpn-client diff --git a/jetty-alpn/jetty-alpn-server/pom.xml b/jetty-alpn/jetty-alpn-server/pom.xml index 65b067b0d89..75d03dad6eb 100644 --- a/jetty-alpn/jetty-alpn-server/pom.xml +++ b/jetty-alpn/jetty-alpn-server/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-alpn-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-alpn-server diff --git a/jetty-alpn/pom.xml b/jetty-alpn/pom.xml index f1c144f91f4..29742cc06a1 100644 --- a/jetty-alpn/pom.xml +++ b/jetty-alpn/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-alpn-parent diff --git a/jetty-annotations/pom.xml b/jetty-annotations/pom.xml index 4fcad3f1955..e64862d7218 100644 --- a/jetty-annotations/pom.xml +++ b/jetty-annotations/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-annotations diff --git a/jetty-ant/pom.xml b/jetty-ant/pom.xml index 724ce21d9f8..eeb25f75f98 100644 --- a/jetty-ant/pom.xml +++ b/jetty-ant/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-ant diff --git a/jetty-cdi/pom.xml b/jetty-cdi/pom.xml index 99a19e7784a..9afb5ece660 100644 --- a/jetty-cdi/pom.xml +++ b/jetty-cdi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-cdi diff --git a/jetty-client/pom.xml b/jetty-client/pom.xml index f48ec8b897b..90b50095a94 100644 --- a/jetty-client/pom.xml +++ b/jetty-client/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 diff --git a/jetty-continuation/pom.xml b/jetty-continuation/pom.xml index 6eca3ac1a40..dc298b21676 100644 --- a/jetty-continuation/pom.xml +++ b/jetty-continuation/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-continuation diff --git a/jetty-deploy/pom.xml b/jetty-deploy/pom.xml index c9f9dd2c742..d024f27e4d0 100644 --- a/jetty-deploy/pom.xml +++ b/jetty-deploy/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-deploy diff --git a/jetty-distribution/pom.xml b/jetty-distribution/pom.xml index a5c8e58b074..ab0a86109d1 100644 --- a/jetty-distribution/pom.xml +++ b/jetty-distribution/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 jetty-distribution Jetty :: Distribution Assemblies diff --git a/jetty-fcgi/fcgi-client/pom.xml b/jetty-fcgi/fcgi-client/pom.xml index 0327bcb5c65..4c9df6c7631 100644 --- a/jetty-fcgi/fcgi-client/pom.xml +++ b/jetty-fcgi/fcgi-client/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.fcgi fcgi-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 diff --git a/jetty-fcgi/fcgi-server/pom.xml b/jetty-fcgi/fcgi-server/pom.xml index c6123a1720a..5e7cd432fa1 100644 --- a/jetty-fcgi/fcgi-server/pom.xml +++ b/jetty-fcgi/fcgi-server/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.fcgi fcgi-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 diff --git a/jetty-fcgi/pom.xml b/jetty-fcgi/pom.xml index b9d6cef2a9f..b998572abf7 100644 --- a/jetty-fcgi/pom.xml +++ b/jetty-fcgi/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 diff --git a/jetty-http-spi/pom.xml b/jetty-http-spi/pom.xml index f472d74c509..ac0e92bc7f5 100644 --- a/jetty-http-spi/pom.xml +++ b/jetty-http-spi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-http-spi diff --git a/jetty-http/pom.xml b/jetty-http/pom.xml index 80c95701855..d1752dd243e 100644 --- a/jetty-http/pom.xml +++ b/jetty-http/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-http diff --git a/jetty-io/pom.xml b/jetty-io/pom.xml index 454f77c6726..9ac1f8d0b2d 100644 --- a/jetty-io/pom.xml +++ b/jetty-io/pom.xml @@ -2,7 +2,7 @@ jetty-project org.eclipse.jetty - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-io diff --git a/jetty-jaas/pom.xml b/jetty-jaas/pom.xml index b1d9175233a..0e7ee80bc38 100644 --- a/jetty-jaas/pom.xml +++ b/jetty-jaas/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-jaas diff --git a/jetty-jaspi/pom.xml b/jetty-jaspi/pom.xml index 4b6c832444b..14ec5883538 100644 --- a/jetty-jaspi/pom.xml +++ b/jetty-jaspi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-jaspi diff --git a/jetty-jmx/pom.xml b/jetty-jmx/pom.xml index 5063254a3b0..b6dea02a252 100644 --- a/jetty-jmx/pom.xml +++ b/jetty-jmx/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-jmx diff --git a/jetty-jndi/pom.xml b/jetty-jndi/pom.xml index 98b4f8203d0..121bf1dcbfd 100644 --- a/jetty-jndi/pom.xml +++ b/jetty-jndi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-jndi diff --git a/jetty-jsp/pom.xml b/jetty-jsp/pom.xml index 8501f075d96..f95902adfb0 100644 --- a/jetty-jsp/pom.xml +++ b/jetty-jsp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-jsp diff --git a/jetty-jspc-maven-plugin/pom.xml b/jetty-jspc-maven-plugin/pom.xml index a612da5f032..6b02000b133 100644 --- a/jetty-jspc-maven-plugin/pom.xml +++ b/jetty-jspc-maven-plugin/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-jspc-maven-plugin diff --git a/jetty-maven-plugin/pom.xml b/jetty-maven-plugin/pom.xml index e0f4d51545b..a58b681390f 100644 --- a/jetty-maven-plugin/pom.xml +++ b/jetty-maven-plugin/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-maven-plugin diff --git a/jetty-monitor/pom.xml b/jetty-monitor/pom.xml index 35abd3a11d1..2ef66081d3a 100644 --- a/jetty-monitor/pom.xml +++ b/jetty-monitor/pom.xml @@ -19,7 +19,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-monitor diff --git a/jetty-nosql/pom.xml b/jetty-nosql/pom.xml index ae10b41e544..3fc27823a4f 100644 --- a/jetty-nosql/pom.xml +++ b/jetty-nosql/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-nosql diff --git a/jetty-osgi/jetty-osgi-alpn/pom.xml b/jetty-osgi/jetty-osgi-alpn/pom.xml index 0d6c6554412..6196dd2c036 100644 --- a/jetty-osgi/jetty-osgi-alpn/pom.xml +++ b/jetty-osgi/jetty-osgi-alpn/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-osgi-alpn diff --git a/jetty-osgi/jetty-osgi-boot-jsp/pom.xml b/jetty-osgi/jetty-osgi-boot-jsp/pom.xml index cc7de7f6c3c..f520362fd75 100644 --- a/jetty-osgi/jetty-osgi-boot-jsp/pom.xml +++ b/jetty-osgi/jetty-osgi-boot-jsp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-osgi-boot-jsp diff --git a/jetty-osgi/jetty-osgi-boot-warurl/pom.xml b/jetty-osgi/jetty-osgi-boot-warurl/pom.xml index 795ebfc4617..4ee73967df7 100644 --- a/jetty-osgi/jetty-osgi-boot-warurl/pom.xml +++ b/jetty-osgi/jetty-osgi-boot-warurl/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 ../pom.xml 4.0.0 diff --git a/jetty-osgi/jetty-osgi-boot/pom.xml b/jetty-osgi/jetty-osgi-boot/pom.xml index 7e3f6d13284..2ad55d1ba40 100644 --- a/jetty-osgi/jetty-osgi-boot/pom.xml +++ b/jetty-osgi/jetty-osgi-boot/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-osgi-boot diff --git a/jetty-osgi/jetty-osgi-httpservice/pom.xml b/jetty-osgi/jetty-osgi-httpservice/pom.xml index 84d5b836332..46c7c703127 100644 --- a/jetty-osgi/jetty-osgi-httpservice/pom.xml +++ b/jetty-osgi/jetty-osgi-httpservice/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-httpservice diff --git a/jetty-osgi/pom.xml b/jetty-osgi/pom.xml index cfd9c18c6ac..d8107f1ab6f 100644 --- a/jetty-osgi/pom.xml +++ b/jetty-osgi/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 org.eclipse.jetty.osgi jetty-osgi-project diff --git a/jetty-osgi/test-jetty-osgi-context/pom.xml b/jetty-osgi/test-jetty-osgi-context/pom.xml index 432486a2ff5..506669f3b03 100644 --- a/jetty-osgi/test-jetty-osgi-context/pom.xml +++ b/jetty-osgi/test-jetty-osgi-context/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 test-jetty-osgi-context diff --git a/jetty-osgi/test-jetty-osgi-webapp/pom.xml b/jetty-osgi/test-jetty-osgi-webapp/pom.xml index dcee1aab6b7..3794a0c208c 100644 --- a/jetty-osgi/test-jetty-osgi-webapp/pom.xml +++ b/jetty-osgi/test-jetty-osgi-webapp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 ../pom.xml 4.0.0 diff --git a/jetty-osgi/test-jetty-osgi/pom.xml b/jetty-osgi/test-jetty-osgi/pom.xml index 645fcc008ea..4d499bfa859 100644 --- a/jetty-osgi/test-jetty-osgi/pom.xml +++ b/jetty-osgi/test-jetty-osgi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 ../pom.xml 4.0.0 diff --git a/jetty-plus/pom.xml b/jetty-plus/pom.xml index 7296b0bf0f0..517c845c499 100644 --- a/jetty-plus/pom.xml +++ b/jetty-plus/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-plus diff --git a/jetty-proxy/pom.xml b/jetty-proxy/pom.xml index 1b808ba9ce1..c9d2aec5414 100644 --- a/jetty-proxy/pom.xml +++ b/jetty-proxy/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-proxy diff --git a/jetty-quickstart/pom.xml b/jetty-quickstart/pom.xml index 6f4ea12e2e3..b13eaae3158 100644 --- a/jetty-quickstart/pom.xml +++ b/jetty-quickstart/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 org.eclipse.jetty diff --git a/jetty-rewrite/pom.xml b/jetty-rewrite/pom.xml index 9a528b8417a..14d62e98f35 100644 --- a/jetty-rewrite/pom.xml +++ b/jetty-rewrite/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-rewrite diff --git a/jetty-runner/pom.xml b/jetty-runner/pom.xml index 5eb2b8c5a8b..44d71816c53 100644 --- a/jetty-runner/pom.xml +++ b/jetty-runner/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-runner diff --git a/jetty-security/pom.xml b/jetty-security/pom.xml index aecf4965537..74a7461abaa 100644 --- a/jetty-security/pom.xml +++ b/jetty-security/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-security diff --git a/jetty-server/pom.xml b/jetty-server/pom.xml index f1e71d497a5..57b542f9e21 100644 --- a/jetty-server/pom.xml +++ b/jetty-server/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-server diff --git a/jetty-servlet/pom.xml b/jetty-servlet/pom.xml index c0946468d4e..b3009326a63 100644 --- a/jetty-servlet/pom.xml +++ b/jetty-servlet/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-servlet diff --git a/jetty-servlets/pom.xml b/jetty-servlets/pom.xml index c2d2f212970..fb723984a49 100644 --- a/jetty-servlets/pom.xml +++ b/jetty-servlets/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-servlets diff --git a/jetty-spdy/pom.xml b/jetty-spdy/pom.xml index fd9504c9d92..b4abc54ce93 100644 --- a/jetty-spdy/pom.xml +++ b/jetty-spdy/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 diff --git a/jetty-spdy/spdy-alpn-tests/pom.xml b/jetty-spdy/spdy-alpn-tests/pom.xml index 6d63403d755..081d694f982 100644 --- a/jetty-spdy/spdy-alpn-tests/pom.xml +++ b/jetty-spdy/spdy-alpn-tests/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 diff --git a/jetty-spdy/spdy-client/pom.xml b/jetty-spdy/spdy-client/pom.xml index cd0170a8ee4..606b83877c9 100644 --- a/jetty-spdy/spdy-client/pom.xml +++ b/jetty-spdy/spdy-client/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 diff --git a/jetty-spdy/spdy-core/pom.xml b/jetty-spdy/spdy-core/pom.xml index 24b7a99b807..e7577e82723 100644 --- a/jetty-spdy/spdy-core/pom.xml +++ b/jetty-spdy/spdy-core/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 diff --git a/jetty-spdy/spdy-example-webapp/pom.xml b/jetty-spdy/spdy-example-webapp/pom.xml index 7844f4fad99..dd09968c5c8 100644 --- a/jetty-spdy/spdy-example-webapp/pom.xml +++ b/jetty-spdy/spdy-example-webapp/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 spdy-example-webapp diff --git a/jetty-spdy/spdy-http-client-transport/pom.xml b/jetty-spdy/spdy-http-client-transport/pom.xml index 63d92c1bd32..4375088443f 100644 --- a/jetty-spdy/spdy-http-client-transport/pom.xml +++ b/jetty-spdy/spdy-http-client-transport/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 diff --git a/jetty-spdy/spdy-http-common/pom.xml b/jetty-spdy/spdy-http-common/pom.xml index a1f8856faf1..2b829884b29 100644 --- a/jetty-spdy/spdy-http-common/pom.xml +++ b/jetty-spdy/spdy-http-common/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 diff --git a/jetty-spdy/spdy-http-server/pom.xml b/jetty-spdy/spdy-http-server/pom.xml index 00e72e16a7b..bad678c2285 100644 --- a/jetty-spdy/spdy-http-server/pom.xml +++ b/jetty-spdy/spdy-http-server/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 spdy-http-server diff --git a/jetty-spdy/spdy-server/pom.xml b/jetty-spdy/spdy-server/pom.xml index 4fdf66a24c2..42498b73e2d 100644 --- a/jetty-spdy/spdy-server/pom.xml +++ b/jetty-spdy/spdy-server/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 diff --git a/jetty-spring/pom.xml b/jetty-spring/pom.xml index e313e44271e..86c584c02a6 100644 --- a/jetty-spring/pom.xml +++ b/jetty-spring/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-spring diff --git a/jetty-start/pom.xml b/jetty-start/pom.xml index bf0a681a33d..b0fed5e2bbb 100644 --- a/jetty-start/pom.xml +++ b/jetty-start/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-start diff --git a/jetty-util-ajax/pom.xml b/jetty-util-ajax/pom.xml index 4ffb82a374c..ad96aa04cd8 100644 --- a/jetty-util-ajax/pom.xml +++ b/jetty-util-ajax/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-util-ajax diff --git a/jetty-util/pom.xml b/jetty-util/pom.xml index 0832030661b..3a089eba951 100644 --- a/jetty-util/pom.xml +++ b/jetty-util/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-util diff --git a/jetty-webapp/pom.xml b/jetty-webapp/pom.xml index ab5a73ae9fb..394f1fe26a2 100644 --- a/jetty-webapp/pom.xml +++ b/jetty-webapp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-webapp diff --git a/jetty-websocket/javax-websocket-client-impl/pom.xml b/jetty-websocket/javax-websocket-client-impl/pom.xml index b90280b9c5b..07bfe454af4 100644 --- a/jetty-websocket/javax-websocket-client-impl/pom.xml +++ b/jetty-websocket/javax-websocket-client-impl/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 diff --git a/jetty-websocket/javax-websocket-server-impl/pom.xml b/jetty-websocket/javax-websocket-server-impl/pom.xml index 6e1bbb5a26f..fd931fe45c6 100644 --- a/jetty-websocket/javax-websocket-server-impl/pom.xml +++ b/jetty-websocket/javax-websocket-server-impl/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 diff --git a/jetty-websocket/pom.xml b/jetty-websocket/pom.xml index a247c5b2968..1fac39b3463 100644 --- a/jetty-websocket/pom.xml +++ b/jetty-websocket/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 diff --git a/jetty-websocket/websocket-api/pom.xml b/jetty-websocket/websocket-api/pom.xml index 2b48e948ff1..a65aa3e7ab0 100644 --- a/jetty-websocket/websocket-api/pom.xml +++ b/jetty-websocket/websocket-api/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 diff --git a/jetty-websocket/websocket-client/pom.xml b/jetty-websocket/websocket-client/pom.xml index 8bd09b409b8..40c904a75f7 100644 --- a/jetty-websocket/websocket-client/pom.xml +++ b/jetty-websocket/websocket-client/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 diff --git a/jetty-websocket/websocket-common/pom.xml b/jetty-websocket/websocket-common/pom.xml index f03a66accd2..7c7cada0030 100644 --- a/jetty-websocket/websocket-common/pom.xml +++ b/jetty-websocket/websocket-common/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 diff --git a/jetty-websocket/websocket-server/pom.xml b/jetty-websocket/websocket-server/pom.xml index 951c676b9db..b1310dab328 100644 --- a/jetty-websocket/websocket-server/pom.xml +++ b/jetty-websocket/websocket-server/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 diff --git a/jetty-websocket/websocket-servlet/pom.xml b/jetty-websocket/websocket-servlet/pom.xml index e48aee37e30..e44289a2a21 100644 --- a/jetty-websocket/websocket-servlet/pom.xml +++ b/jetty-websocket/websocket-servlet/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 diff --git a/jetty-xml/pom.xml b/jetty-xml/pom.xml index eca99ca9690..a66997eddff 100644 --- a/jetty-xml/pom.xml +++ b/jetty-xml/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jetty-xml diff --git a/pom.xml b/pom.xml index 0496e8214eb..53115a6ad08 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ 23 jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 Jetty :: Project http://www.eclipse.org/jetty pom diff --git a/tests/pom.xml b/tests/pom.xml index e491d3edcff..4aeaa341ab3 100644 --- a/tests/pom.xml +++ b/tests/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty jetty-project - 9.2.25-SNAPSHOT + 9.2.25.v20180606 ../pom.xml org.eclipse.jetty.tests diff --git a/tests/test-continuation/pom.xml b/tests/test-continuation/pom.xml index 5a293942953..421fc6b97dd 100644 --- a/tests/test-continuation/pom.xml +++ b/tests/test-continuation/pom.xml @@ -20,7 +20,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 ../pom.xml 4.0.0 diff --git a/tests/test-integration/pom.xml b/tests/test-integration/pom.xml index c7b2ea7483b..8cc1d8b4790 100644 --- a/tests/test-integration/pom.xml +++ b/tests/test-integration/pom.xml @@ -20,7 +20,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 test-integration diff --git a/tests/test-jmx/jmx-webapp-it/pom.xml b/tests/test-jmx/jmx-webapp-it/pom.xml index 594f1faeb3c..daee1a18246 100644 --- a/tests/test-jmx/jmx-webapp-it/pom.xml +++ b/tests/test-jmx/jmx-webapp-it/pom.xml @@ -20,7 +20,7 @@ org.eclipse.jetty.tests test-jmx-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 jmx-webapp-it diff --git a/tests/test-jmx/jmx-webapp/pom.xml b/tests/test-jmx/jmx-webapp/pom.xml index 2eb5b01fa6a..a19c438ccfe 100644 --- a/tests/test-jmx/jmx-webapp/pom.xml +++ b/tests/test-jmx/jmx-webapp/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests test-jmx-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 jmx-webapp war diff --git a/tests/test-jmx/pom.xml b/tests/test-jmx/pom.xml index 985a84e1624..e854299ace3 100644 --- a/tests/test-jmx/pom.xml +++ b/tests/test-jmx/pom.xml @@ -20,7 +20,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 4.0.0 test-jmx-parent diff --git a/tests/test-loginservice/pom.xml b/tests/test-loginservice/pom.xml index 943186912b4..28b9e739ad4 100644 --- a/tests/test-loginservice/pom.xml +++ b/tests/test-loginservice/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 test-loginservice Jetty Tests :: Login Service diff --git a/tests/test-quickstart/pom.xml b/tests/test-quickstart/pom.xml index db1a7a2a0a4..7c3a63444ed 100644 --- a/tests/test-quickstart/pom.xml +++ b/tests/test-quickstart/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 ../pom.xml 4.0.0 diff --git a/tests/test-sessions/pom.xml b/tests/test-sessions/pom.xml index 7a70a0c8067..4e2b488cb66 100644 --- a/tests/test-sessions/pom.xml +++ b/tests/test-sessions/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 test-sessions-parent Jetty Tests :: Sessions :: Parent diff --git a/tests/test-sessions/test-hash-sessions/pom.xml b/tests/test-sessions/test-hash-sessions/pom.xml index d56855097fa..874c40c5327 100644 --- a/tests/test-sessions/test-hash-sessions/pom.xml +++ b/tests/test-sessions/test-hash-sessions/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 test-hash-sessions Jetty Tests :: Sessions :: Hash diff --git a/tests/test-sessions/test-jdbc-sessions/pom.xml b/tests/test-sessions/test-jdbc-sessions/pom.xml index 3002d8395c9..3c5f30863a9 100644 --- a/tests/test-sessions/test-jdbc-sessions/pom.xml +++ b/tests/test-sessions/test-jdbc-sessions/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 test-jdbc-sessions Jetty Tests :: Sessions :: JDBC diff --git a/tests/test-sessions/test-mongodb-sessions/pom.xml b/tests/test-sessions/test-mongodb-sessions/pom.xml index 974d72dbf8a..df65ff85f9e 100644 --- a/tests/test-sessions/test-mongodb-sessions/pom.xml +++ b/tests/test-sessions/test-mongodb-sessions/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 test-mongodb-sessions Jetty Tests :: Sessions :: Mongo diff --git a/tests/test-sessions/test-sessions-common/pom.xml b/tests/test-sessions/test-sessions-common/pom.xml index a062c51d023..bdfbf77dfdd 100644 --- a/tests/test-sessions/test-sessions-common/pom.xml +++ b/tests/test-sessions/test-sessions-common/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 test-sessions-common Jetty Tests :: Sessions :: Common diff --git a/tests/test-webapps/pom.xml b/tests/test-webapps/pom.xml index b51e8c593e6..b0e0f982cc5 100644 --- a/tests/test-webapps/pom.xml +++ b/tests/test-webapps/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 ../pom.xml test-webapps-parent diff --git a/tests/test-webapps/test-jaas-webapp/pom.xml b/tests/test-webapps/test-jaas-webapp/pom.xml index 44c8ce8fde6..2580405f1b2 100644 --- a/tests/test-webapps/test-jaas-webapp/pom.xml +++ b/tests/test-webapps/test-jaas-webapp/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 test-jaas-webapp Jetty Tests :: WebApp :: JAAS diff --git a/tests/test-webapps/test-jetty-webapp/pom.xml b/tests/test-webapps/test-jetty-webapp/pom.xml index 1663ae3429e..f999633862f 100644 --- a/tests/test-webapps/test-jetty-webapp/pom.xml +++ b/tests/test-webapps/test-jetty-webapp/pom.xml @@ -20,7 +20,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 ../pom.xml 4.0.0 diff --git a/tests/test-webapps/test-jndi-webapp/pom.xml b/tests/test-webapps/test-jndi-webapp/pom.xml index f692707834b..c02f2ae5ac3 100644 --- a/tests/test-webapps/test-jndi-webapp/pom.xml +++ b/tests/test-webapps/test-jndi-webapp/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 test-jndi-webapp Jetty Tests :: WebApp :: JNDI diff --git a/tests/test-webapps/test-mock-resources/pom.xml b/tests/test-webapps/test-mock-resources/pom.xml index 86f8c79a872..3af0e8d2a29 100644 --- a/tests/test-webapps/test-mock-resources/pom.xml +++ b/tests/test-webapps/test-mock-resources/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 Jetty Tests :: WebApp :: Mock Resources test-mock-resources diff --git a/tests/test-webapps/test-proxy-webapp/pom.xml b/tests/test-webapps/test-proxy-webapp/pom.xml index 0656ea27759..13f7c8b65ac 100644 --- a/tests/test-webapps/test-proxy-webapp/pom.xml +++ b/tests/test-webapps/test-proxy-webapp/pom.xml @@ -20,7 +20,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 ../pom.xml 4.0.0 diff --git a/tests/test-webapps/test-servlet-spec/pom.xml b/tests/test-webapps/test-servlet-spec/pom.xml index 799f8eb17a9..a24df1a6e95 100644 --- a/tests/test-webapps/test-servlet-spec/pom.xml +++ b/tests/test-webapps/test-servlet-spec/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 test-servlet-spec-parent Jetty Tests :: Spec Test WebApp :: Parent diff --git a/tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml b/tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml index 788971ce193..70c78f6b9ec 100644 --- a/tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml +++ b/tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-servlet-spec-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 test-container-initializer jar diff --git a/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml b/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml index c7c51d7c9e2..e2ba8810101 100644 --- a/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml +++ b/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-servlet-spec-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 Jetty Tests :: Webapps :: Spec Webapp test-spec-webapp diff --git a/tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml b/tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml index f089cd10ab7..9ecd50971e0 100644 --- a/tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml +++ b/tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-servlet-spec-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 Jetty Tests :: WebApp :: Servlet Spec :: Fragment Jar org.eclipse.jetty.tests diff --git a/tests/test-webapps/test-webapp-rfc2616/pom.xml b/tests/test-webapps/test-webapp-rfc2616/pom.xml index 7d61146c82b..a39137eef2b 100644 --- a/tests/test-webapps/test-webapp-rfc2616/pom.xml +++ b/tests/test-webapps/test-webapp-rfc2616/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.2.25-SNAPSHOT + 9.2.25.v20180606 test-webapp-rfc2616 Jetty Tests :: WebApp :: RFC2616 From 0e6c91b6043a033c65d8d0c33d66c87f6bece60a Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Wed, 6 Jun 2018 18:54:58 -0500 Subject: [PATCH 02/88] Updating to version 9.2.26-SNAPSHOT --- VERSION.txt | 2 ++ aggregates/jetty-all/pom.xml | 2 +- apache-jsp/pom.xml | 2 +- apache-jstl/pom.xml | 2 +- examples/async-rest/async-rest-jar/pom.xml | 2 +- examples/async-rest/async-rest-webapp/pom.xml | 2 +- examples/async-rest/pom.xml | 2 +- examples/embedded/pom.xml | 2 +- examples/pom.xml | 2 +- jetty-alpn/jetty-alpn-client/pom.xml | 2 +- jetty-alpn/jetty-alpn-server/pom.xml | 2 +- jetty-alpn/pom.xml | 2 +- jetty-annotations/pom.xml | 2 +- jetty-ant/pom.xml | 2 +- jetty-cdi/pom.xml | 2 +- jetty-client/pom.xml | 2 +- jetty-continuation/pom.xml | 2 +- jetty-deploy/pom.xml | 2 +- jetty-distribution/pom.xml | 2 +- jetty-fcgi/fcgi-client/pom.xml | 2 +- jetty-fcgi/fcgi-server/pom.xml | 2 +- jetty-fcgi/pom.xml | 2 +- jetty-http-spi/pom.xml | 2 +- jetty-http/pom.xml | 2 +- jetty-io/pom.xml | 2 +- jetty-jaas/pom.xml | 2 +- jetty-jaspi/pom.xml | 2 +- jetty-jmx/pom.xml | 2 +- jetty-jndi/pom.xml | 2 +- jetty-jsp/pom.xml | 2 +- jetty-jspc-maven-plugin/pom.xml | 2 +- jetty-maven-plugin/pom.xml | 2 +- jetty-monitor/pom.xml | 2 +- jetty-nosql/pom.xml | 2 +- jetty-osgi/jetty-osgi-alpn/pom.xml | 2 +- jetty-osgi/jetty-osgi-boot-jsp/pom.xml | 2 +- jetty-osgi/jetty-osgi-boot-warurl/pom.xml | 2 +- jetty-osgi/jetty-osgi-boot/pom.xml | 2 +- jetty-osgi/jetty-osgi-httpservice/pom.xml | 2 +- jetty-osgi/pom.xml | 2 +- jetty-osgi/test-jetty-osgi-context/pom.xml | 2 +- jetty-osgi/test-jetty-osgi-webapp/pom.xml | 2 +- jetty-osgi/test-jetty-osgi/pom.xml | 2 +- jetty-plus/pom.xml | 2 +- jetty-proxy/pom.xml | 2 +- jetty-quickstart/pom.xml | 2 +- jetty-rewrite/pom.xml | 2 +- jetty-runner/pom.xml | 2 +- jetty-security/pom.xml | 2 +- jetty-server/pom.xml | 2 +- jetty-servlet/pom.xml | 2 +- jetty-servlets/pom.xml | 2 +- jetty-spdy/pom.xml | 2 +- jetty-spdy/spdy-alpn-tests/pom.xml | 2 +- jetty-spdy/spdy-client/pom.xml | 2 +- jetty-spdy/spdy-core/pom.xml | 2 +- jetty-spdy/spdy-example-webapp/pom.xml | 2 +- jetty-spdy/spdy-http-client-transport/pom.xml | 2 +- jetty-spdy/spdy-http-common/pom.xml | 2 +- jetty-spdy/spdy-http-server/pom.xml | 2 +- jetty-spdy/spdy-server/pom.xml | 2 +- jetty-spring/pom.xml | 2 +- jetty-start/pom.xml | 2 +- jetty-util-ajax/pom.xml | 2 +- jetty-util/pom.xml | 2 +- jetty-webapp/pom.xml | 2 +- jetty-websocket/javax-websocket-client-impl/pom.xml | 2 +- jetty-websocket/javax-websocket-server-impl/pom.xml | 2 +- jetty-websocket/pom.xml | 2 +- jetty-websocket/websocket-api/pom.xml | 2 +- jetty-websocket/websocket-client/pom.xml | 2 +- jetty-websocket/websocket-common/pom.xml | 2 +- jetty-websocket/websocket-server/pom.xml | 2 +- jetty-websocket/websocket-servlet/pom.xml | 2 +- jetty-xml/pom.xml | 2 +- pom.xml | 2 +- tests/pom.xml | 2 +- tests/test-continuation/pom.xml | 2 +- tests/test-integration/pom.xml | 2 +- tests/test-jmx/jmx-webapp-it/pom.xml | 2 +- tests/test-jmx/jmx-webapp/pom.xml | 2 +- tests/test-jmx/pom.xml | 2 +- tests/test-loginservice/pom.xml | 2 +- tests/test-quickstart/pom.xml | 2 +- tests/test-sessions/pom.xml | 2 +- tests/test-sessions/test-hash-sessions/pom.xml | 2 +- tests/test-sessions/test-jdbc-sessions/pom.xml | 2 +- tests/test-sessions/test-mongodb-sessions/pom.xml | 2 +- tests/test-sessions/test-sessions-common/pom.xml | 2 +- tests/test-webapps/pom.xml | 2 +- tests/test-webapps/test-jaas-webapp/pom.xml | 2 +- tests/test-webapps/test-jetty-webapp/pom.xml | 2 +- tests/test-webapps/test-jndi-webapp/pom.xml | 2 +- tests/test-webapps/test-mock-resources/pom.xml | 2 +- tests/test-webapps/test-proxy-webapp/pom.xml | 2 +- tests/test-webapps/test-servlet-spec/pom.xml | 2 +- .../test-servlet-spec/test-container-initializer/pom.xml | 2 +- tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml | 2 +- tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml | 2 +- tests/test-webapps/test-webapp-rfc2616/pom.xml | 2 +- 100 files changed, 101 insertions(+), 99 deletions(-) diff --git a/VERSION.txt b/VERSION.txt index 1013951088a..78f4358fd8d 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1,3 +1,5 @@ +jetty-9.2.26-SNAPSHOT + jetty-9.2.25.v20180606 - 06 June 2018 + 2114 Fix NPE in JettyHttpServerProvider + 2135 Android 8.1 needs direct buffers for SSL/TLS to work diff --git a/aggregates/jetty-all/pom.xml b/aggregates/jetty-all/pom.xml index af2e0e56167..46275a0dd5a 100644 --- a/aggregates/jetty-all/pom.xml +++ b/aggregates/jetty-all/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT ../../pom.xml 4.0.0 diff --git a/apache-jsp/pom.xml b/apache-jsp/pom.xml index 10a1fb444d9..c44da4b5148 100644 --- a/apache-jsp/pom.xml +++ b/apache-jsp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 apache-jsp diff --git a/apache-jstl/pom.xml b/apache-jstl/pom.xml index 75b076e74f2..4ffe61c95ec 100644 --- a/apache-jstl/pom.xml +++ b/apache-jstl/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 apache-jstl diff --git a/examples/async-rest/async-rest-jar/pom.xml b/examples/async-rest/async-rest-jar/pom.xml index 54d070cb166..4cfdcb41bdf 100644 --- a/examples/async-rest/async-rest-jar/pom.xml +++ b/examples/async-rest/async-rest-jar/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty example-async-rest - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 org.eclipse.jetty.example-async-rest diff --git a/examples/async-rest/async-rest-webapp/pom.xml b/examples/async-rest/async-rest-webapp/pom.xml index ba63eaed5ae..78b5a8e0c77 100644 --- a/examples/async-rest/async-rest-webapp/pom.xml +++ b/examples/async-rest/async-rest-webapp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty example-async-rest - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 org.eclipse.jetty.example-async-rest diff --git a/examples/async-rest/pom.xml b/examples/async-rest/pom.xml index 5d460853633..3a46314461a 100644 --- a/examples/async-rest/pom.xml +++ b/examples/async-rest/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.examples examples-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT ../pom.xml 4.0.0 diff --git a/examples/embedded/pom.xml b/examples/embedded/pom.xml index 4fe89817a1d..a1a7ade90aa 100644 --- a/examples/embedded/pom.xml +++ b/examples/embedded/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.examples examples-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT ../pom.xml 4.0.0 diff --git a/examples/pom.xml b/examples/pom.xml index 100ec14f587..d6526112276 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT ../pom.xml org.eclipse.jetty.examples diff --git a/jetty-alpn/jetty-alpn-client/pom.xml b/jetty-alpn/jetty-alpn-client/pom.xml index cd02dbd744a..7a48b78644a 100644 --- a/jetty-alpn/jetty-alpn-client/pom.xml +++ b/jetty-alpn/jetty-alpn-client/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-alpn-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-alpn-client diff --git a/jetty-alpn/jetty-alpn-server/pom.xml b/jetty-alpn/jetty-alpn-server/pom.xml index 75d03dad6eb..86b64fd7064 100644 --- a/jetty-alpn/jetty-alpn-server/pom.xml +++ b/jetty-alpn/jetty-alpn-server/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-alpn-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-alpn-server diff --git a/jetty-alpn/pom.xml b/jetty-alpn/pom.xml index 29742cc06a1..2c5566456d5 100644 --- a/jetty-alpn/pom.xml +++ b/jetty-alpn/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-alpn-parent diff --git a/jetty-annotations/pom.xml b/jetty-annotations/pom.xml index e64862d7218..f90c291164e 100644 --- a/jetty-annotations/pom.xml +++ b/jetty-annotations/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-annotations diff --git a/jetty-ant/pom.xml b/jetty-ant/pom.xml index eeb25f75f98..9df91a3cb69 100644 --- a/jetty-ant/pom.xml +++ b/jetty-ant/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-ant diff --git a/jetty-cdi/pom.xml b/jetty-cdi/pom.xml index 9afb5ece660..c07c74329fb 100644 --- a/jetty-cdi/pom.xml +++ b/jetty-cdi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-cdi diff --git a/jetty-client/pom.xml b/jetty-client/pom.xml index 90b50095a94..410a485850d 100644 --- a/jetty-client/pom.xml +++ b/jetty-client/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 diff --git a/jetty-continuation/pom.xml b/jetty-continuation/pom.xml index dc298b21676..fea53658928 100644 --- a/jetty-continuation/pom.xml +++ b/jetty-continuation/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-continuation diff --git a/jetty-deploy/pom.xml b/jetty-deploy/pom.xml index d024f27e4d0..4c7df31fadf 100644 --- a/jetty-deploy/pom.xml +++ b/jetty-deploy/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-deploy diff --git a/jetty-distribution/pom.xml b/jetty-distribution/pom.xml index ab0a86109d1..c4ffd23c5b2 100644 --- a/jetty-distribution/pom.xml +++ b/jetty-distribution/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT jetty-distribution Jetty :: Distribution Assemblies diff --git a/jetty-fcgi/fcgi-client/pom.xml b/jetty-fcgi/fcgi-client/pom.xml index 4c9df6c7631..b4be85c1444 100644 --- a/jetty-fcgi/fcgi-client/pom.xml +++ b/jetty-fcgi/fcgi-client/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.fcgi fcgi-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 diff --git a/jetty-fcgi/fcgi-server/pom.xml b/jetty-fcgi/fcgi-server/pom.xml index 5e7cd432fa1..5e1cf0f1dbb 100644 --- a/jetty-fcgi/fcgi-server/pom.xml +++ b/jetty-fcgi/fcgi-server/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.fcgi fcgi-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 diff --git a/jetty-fcgi/pom.xml b/jetty-fcgi/pom.xml index b998572abf7..15e85bd6bce 100644 --- a/jetty-fcgi/pom.xml +++ b/jetty-fcgi/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 diff --git a/jetty-http-spi/pom.xml b/jetty-http-spi/pom.xml index ac0e92bc7f5..1be7dc8b136 100644 --- a/jetty-http-spi/pom.xml +++ b/jetty-http-spi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-http-spi diff --git a/jetty-http/pom.xml b/jetty-http/pom.xml index d1752dd243e..581981e4532 100644 --- a/jetty-http/pom.xml +++ b/jetty-http/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-http diff --git a/jetty-io/pom.xml b/jetty-io/pom.xml index 9ac1f8d0b2d..4fbb5ad38dd 100644 --- a/jetty-io/pom.xml +++ b/jetty-io/pom.xml @@ -2,7 +2,7 @@ jetty-project org.eclipse.jetty - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-io diff --git a/jetty-jaas/pom.xml b/jetty-jaas/pom.xml index 0e7ee80bc38..c26aa541af8 100644 --- a/jetty-jaas/pom.xml +++ b/jetty-jaas/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-jaas diff --git a/jetty-jaspi/pom.xml b/jetty-jaspi/pom.xml index 14ec5883538..1b0bc2e311f 100644 --- a/jetty-jaspi/pom.xml +++ b/jetty-jaspi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-jaspi diff --git a/jetty-jmx/pom.xml b/jetty-jmx/pom.xml index b6dea02a252..0bdacb41afd 100644 --- a/jetty-jmx/pom.xml +++ b/jetty-jmx/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-jmx diff --git a/jetty-jndi/pom.xml b/jetty-jndi/pom.xml index 121bf1dcbfd..10e6ad05a85 100644 --- a/jetty-jndi/pom.xml +++ b/jetty-jndi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-jndi diff --git a/jetty-jsp/pom.xml b/jetty-jsp/pom.xml index f95902adfb0..62e6a7d3750 100644 --- a/jetty-jsp/pom.xml +++ b/jetty-jsp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-jsp diff --git a/jetty-jspc-maven-plugin/pom.xml b/jetty-jspc-maven-plugin/pom.xml index 6b02000b133..aa7f7e6a400 100644 --- a/jetty-jspc-maven-plugin/pom.xml +++ b/jetty-jspc-maven-plugin/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-jspc-maven-plugin diff --git a/jetty-maven-plugin/pom.xml b/jetty-maven-plugin/pom.xml index a58b681390f..cdbec464d4e 100644 --- a/jetty-maven-plugin/pom.xml +++ b/jetty-maven-plugin/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-maven-plugin diff --git a/jetty-monitor/pom.xml b/jetty-monitor/pom.xml index 2ef66081d3a..a7bb5a03125 100644 --- a/jetty-monitor/pom.xml +++ b/jetty-monitor/pom.xml @@ -19,7 +19,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-monitor diff --git a/jetty-nosql/pom.xml b/jetty-nosql/pom.xml index 3fc27823a4f..5072af8dd6f 100644 --- a/jetty-nosql/pom.xml +++ b/jetty-nosql/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-nosql diff --git a/jetty-osgi/jetty-osgi-alpn/pom.xml b/jetty-osgi/jetty-osgi-alpn/pom.xml index 6196dd2c036..56dbf437ad4 100644 --- a/jetty-osgi/jetty-osgi-alpn/pom.xml +++ b/jetty-osgi/jetty-osgi-alpn/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-osgi-alpn diff --git a/jetty-osgi/jetty-osgi-boot-jsp/pom.xml b/jetty-osgi/jetty-osgi-boot-jsp/pom.xml index f520362fd75..66f45398575 100644 --- a/jetty-osgi/jetty-osgi-boot-jsp/pom.xml +++ b/jetty-osgi/jetty-osgi-boot-jsp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-osgi-boot-jsp diff --git a/jetty-osgi/jetty-osgi-boot-warurl/pom.xml b/jetty-osgi/jetty-osgi-boot-warurl/pom.xml index 4ee73967df7..865e022e788 100644 --- a/jetty-osgi/jetty-osgi-boot-warurl/pom.xml +++ b/jetty-osgi/jetty-osgi-boot-warurl/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT ../pom.xml 4.0.0 diff --git a/jetty-osgi/jetty-osgi-boot/pom.xml b/jetty-osgi/jetty-osgi-boot/pom.xml index 2ad55d1ba40..e36d1464b40 100644 --- a/jetty-osgi/jetty-osgi-boot/pom.xml +++ b/jetty-osgi/jetty-osgi-boot/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-osgi-boot diff --git a/jetty-osgi/jetty-osgi-httpservice/pom.xml b/jetty-osgi/jetty-osgi-httpservice/pom.xml index 46c7c703127..c25d36bbc71 100644 --- a/jetty-osgi/jetty-osgi-httpservice/pom.xml +++ b/jetty-osgi/jetty-osgi-httpservice/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-httpservice diff --git a/jetty-osgi/pom.xml b/jetty-osgi/pom.xml index d8107f1ab6f..98a433dba56 100644 --- a/jetty-osgi/pom.xml +++ b/jetty-osgi/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT org.eclipse.jetty.osgi jetty-osgi-project diff --git a/jetty-osgi/test-jetty-osgi-context/pom.xml b/jetty-osgi/test-jetty-osgi-context/pom.xml index 506669f3b03..0f1737cb115 100644 --- a/jetty-osgi/test-jetty-osgi-context/pom.xml +++ b/jetty-osgi/test-jetty-osgi-context/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 test-jetty-osgi-context diff --git a/jetty-osgi/test-jetty-osgi-webapp/pom.xml b/jetty-osgi/test-jetty-osgi-webapp/pom.xml index 3794a0c208c..a412d33eb36 100644 --- a/jetty-osgi/test-jetty-osgi-webapp/pom.xml +++ b/jetty-osgi/test-jetty-osgi-webapp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT ../pom.xml 4.0.0 diff --git a/jetty-osgi/test-jetty-osgi/pom.xml b/jetty-osgi/test-jetty-osgi/pom.xml index 4d499bfa859..ae2c6558c87 100644 --- a/jetty-osgi/test-jetty-osgi/pom.xml +++ b/jetty-osgi/test-jetty-osgi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT ../pom.xml 4.0.0 diff --git a/jetty-plus/pom.xml b/jetty-plus/pom.xml index 517c845c499..d4acb9ba85b 100644 --- a/jetty-plus/pom.xml +++ b/jetty-plus/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-plus diff --git a/jetty-proxy/pom.xml b/jetty-proxy/pom.xml index c9d2aec5414..3efa50d3880 100644 --- a/jetty-proxy/pom.xml +++ b/jetty-proxy/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-proxy diff --git a/jetty-quickstart/pom.xml b/jetty-quickstart/pom.xml index b13eaae3158..a85df8ed269 100644 --- a/jetty-quickstart/pom.xml +++ b/jetty-quickstart/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 org.eclipse.jetty diff --git a/jetty-rewrite/pom.xml b/jetty-rewrite/pom.xml index 14d62e98f35..3ad82928343 100644 --- a/jetty-rewrite/pom.xml +++ b/jetty-rewrite/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-rewrite diff --git a/jetty-runner/pom.xml b/jetty-runner/pom.xml index 44d71816c53..6d960d14c5a 100644 --- a/jetty-runner/pom.xml +++ b/jetty-runner/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-runner diff --git a/jetty-security/pom.xml b/jetty-security/pom.xml index 74a7461abaa..2ade2e89e17 100644 --- a/jetty-security/pom.xml +++ b/jetty-security/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-security diff --git a/jetty-server/pom.xml b/jetty-server/pom.xml index 57b542f9e21..adc09327ad3 100644 --- a/jetty-server/pom.xml +++ b/jetty-server/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-server diff --git a/jetty-servlet/pom.xml b/jetty-servlet/pom.xml index b3009326a63..8b279fd32d8 100644 --- a/jetty-servlet/pom.xml +++ b/jetty-servlet/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-servlet diff --git a/jetty-servlets/pom.xml b/jetty-servlets/pom.xml index fb723984a49..2b601fb85f8 100644 --- a/jetty-servlets/pom.xml +++ b/jetty-servlets/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-servlets diff --git a/jetty-spdy/pom.xml b/jetty-spdy/pom.xml index b4abc54ce93..52774d69c7a 100644 --- a/jetty-spdy/pom.xml +++ b/jetty-spdy/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 diff --git a/jetty-spdy/spdy-alpn-tests/pom.xml b/jetty-spdy/spdy-alpn-tests/pom.xml index 081d694f982..b50298e92a6 100644 --- a/jetty-spdy/spdy-alpn-tests/pom.xml +++ b/jetty-spdy/spdy-alpn-tests/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 diff --git a/jetty-spdy/spdy-client/pom.xml b/jetty-spdy/spdy-client/pom.xml index 606b83877c9..dec0421cc88 100644 --- a/jetty-spdy/spdy-client/pom.xml +++ b/jetty-spdy/spdy-client/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 diff --git a/jetty-spdy/spdy-core/pom.xml b/jetty-spdy/spdy-core/pom.xml index e7577e82723..64adf741bfe 100644 --- a/jetty-spdy/spdy-core/pom.xml +++ b/jetty-spdy/spdy-core/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 diff --git a/jetty-spdy/spdy-example-webapp/pom.xml b/jetty-spdy/spdy-example-webapp/pom.xml index dd09968c5c8..c68277b2f57 100644 --- a/jetty-spdy/spdy-example-webapp/pom.xml +++ b/jetty-spdy/spdy-example-webapp/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 spdy-example-webapp diff --git a/jetty-spdy/spdy-http-client-transport/pom.xml b/jetty-spdy/spdy-http-client-transport/pom.xml index 4375088443f..9c140f80f8c 100644 --- a/jetty-spdy/spdy-http-client-transport/pom.xml +++ b/jetty-spdy/spdy-http-client-transport/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 diff --git a/jetty-spdy/spdy-http-common/pom.xml b/jetty-spdy/spdy-http-common/pom.xml index 2b829884b29..e52ec2d7476 100644 --- a/jetty-spdy/spdy-http-common/pom.xml +++ b/jetty-spdy/spdy-http-common/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 diff --git a/jetty-spdy/spdy-http-server/pom.xml b/jetty-spdy/spdy-http-server/pom.xml index bad678c2285..ba3980ffd42 100644 --- a/jetty-spdy/spdy-http-server/pom.xml +++ b/jetty-spdy/spdy-http-server/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 spdy-http-server diff --git a/jetty-spdy/spdy-server/pom.xml b/jetty-spdy/spdy-server/pom.xml index 42498b73e2d..6ee8673f241 100644 --- a/jetty-spdy/spdy-server/pom.xml +++ b/jetty-spdy/spdy-server/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 diff --git a/jetty-spring/pom.xml b/jetty-spring/pom.xml index 86c584c02a6..2cd3bc9319b 100644 --- a/jetty-spring/pom.xml +++ b/jetty-spring/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-spring diff --git a/jetty-start/pom.xml b/jetty-start/pom.xml index b0fed5e2bbb..a75c9c80b77 100644 --- a/jetty-start/pom.xml +++ b/jetty-start/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-start diff --git a/jetty-util-ajax/pom.xml b/jetty-util-ajax/pom.xml index ad96aa04cd8..e322daf11dd 100644 --- a/jetty-util-ajax/pom.xml +++ b/jetty-util-ajax/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-util-ajax diff --git a/jetty-util/pom.xml b/jetty-util/pom.xml index 3a089eba951..5ad8c050ba5 100644 --- a/jetty-util/pom.xml +++ b/jetty-util/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-util diff --git a/jetty-webapp/pom.xml b/jetty-webapp/pom.xml index 394f1fe26a2..875759a234c 100644 --- a/jetty-webapp/pom.xml +++ b/jetty-webapp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-webapp diff --git a/jetty-websocket/javax-websocket-client-impl/pom.xml b/jetty-websocket/javax-websocket-client-impl/pom.xml index 07bfe454af4..29846fcdd91 100644 --- a/jetty-websocket/javax-websocket-client-impl/pom.xml +++ b/jetty-websocket/javax-websocket-client-impl/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/javax-websocket-server-impl/pom.xml b/jetty-websocket/javax-websocket-server-impl/pom.xml index fd931fe45c6..d1e909578b8 100644 --- a/jetty-websocket/javax-websocket-server-impl/pom.xml +++ b/jetty-websocket/javax-websocket-server-impl/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/pom.xml b/jetty-websocket/pom.xml index 1fac39b3463..49d3cee3e8f 100644 --- a/jetty-websocket/pom.xml +++ b/jetty-websocket/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/websocket-api/pom.xml b/jetty-websocket/websocket-api/pom.xml index a65aa3e7ab0..087501046a6 100644 --- a/jetty-websocket/websocket-api/pom.xml +++ b/jetty-websocket/websocket-api/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/websocket-client/pom.xml b/jetty-websocket/websocket-client/pom.xml index 40c904a75f7..d20fe3298c0 100644 --- a/jetty-websocket/websocket-client/pom.xml +++ b/jetty-websocket/websocket-client/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/websocket-common/pom.xml b/jetty-websocket/websocket-common/pom.xml index 7c7cada0030..c527936f840 100644 --- a/jetty-websocket/websocket-common/pom.xml +++ b/jetty-websocket/websocket-common/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/websocket-server/pom.xml b/jetty-websocket/websocket-server/pom.xml index b1310dab328..cd153b03f7f 100644 --- a/jetty-websocket/websocket-server/pom.xml +++ b/jetty-websocket/websocket-server/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/websocket-servlet/pom.xml b/jetty-websocket/websocket-servlet/pom.xml index e44289a2a21..3398ade69c9 100644 --- a/jetty-websocket/websocket-servlet/pom.xml +++ b/jetty-websocket/websocket-servlet/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 diff --git a/jetty-xml/pom.xml b/jetty-xml/pom.xml index a66997eddff..e651f840183 100644 --- a/jetty-xml/pom.xml +++ b/jetty-xml/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jetty-xml diff --git a/pom.xml b/pom.xml index 53115a6ad08..ccbfac33552 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ 23 jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT Jetty :: Project http://www.eclipse.org/jetty pom diff --git a/tests/pom.xml b/tests/pom.xml index 4aeaa341ab3..a42c15fedcd 100644 --- a/tests/pom.xml +++ b/tests/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty jetty-project - 9.2.25.v20180606 + 9.2.26-SNAPSHOT ../pom.xml org.eclipse.jetty.tests diff --git a/tests/test-continuation/pom.xml b/tests/test-continuation/pom.xml index 421fc6b97dd..5ee8ccd12a4 100644 --- a/tests/test-continuation/pom.xml +++ b/tests/test-continuation/pom.xml @@ -20,7 +20,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT ../pom.xml 4.0.0 diff --git a/tests/test-integration/pom.xml b/tests/test-integration/pom.xml index 8cc1d8b4790..a549315d293 100644 --- a/tests/test-integration/pom.xml +++ b/tests/test-integration/pom.xml @@ -20,7 +20,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 test-integration diff --git a/tests/test-jmx/jmx-webapp-it/pom.xml b/tests/test-jmx/jmx-webapp-it/pom.xml index daee1a18246..8d8cb04e8d3 100644 --- a/tests/test-jmx/jmx-webapp-it/pom.xml +++ b/tests/test-jmx/jmx-webapp-it/pom.xml @@ -20,7 +20,7 @@ org.eclipse.jetty.tests test-jmx-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 jmx-webapp-it diff --git a/tests/test-jmx/jmx-webapp/pom.xml b/tests/test-jmx/jmx-webapp/pom.xml index a19c438ccfe..deb0b3d23ac 100644 --- a/tests/test-jmx/jmx-webapp/pom.xml +++ b/tests/test-jmx/jmx-webapp/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests test-jmx-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT jmx-webapp war diff --git a/tests/test-jmx/pom.xml b/tests/test-jmx/pom.xml index e854299ace3..aee3685f95f 100644 --- a/tests/test-jmx/pom.xml +++ b/tests/test-jmx/pom.xml @@ -20,7 +20,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT 4.0.0 test-jmx-parent diff --git a/tests/test-loginservice/pom.xml b/tests/test-loginservice/pom.xml index 28b9e739ad4..06bbbf74829 100644 --- a/tests/test-loginservice/pom.xml +++ b/tests/test-loginservice/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT test-loginservice Jetty Tests :: Login Service diff --git a/tests/test-quickstart/pom.xml b/tests/test-quickstart/pom.xml index 7c3a63444ed..6b97be6e4e1 100644 --- a/tests/test-quickstart/pom.xml +++ b/tests/test-quickstart/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT ../pom.xml 4.0.0 diff --git a/tests/test-sessions/pom.xml b/tests/test-sessions/pom.xml index 4e2b488cb66..edb434c81e4 100644 --- a/tests/test-sessions/pom.xml +++ b/tests/test-sessions/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT test-sessions-parent Jetty Tests :: Sessions :: Parent diff --git a/tests/test-sessions/test-hash-sessions/pom.xml b/tests/test-sessions/test-hash-sessions/pom.xml index 874c40c5327..0e5089305f6 100644 --- a/tests/test-sessions/test-hash-sessions/pom.xml +++ b/tests/test-sessions/test-hash-sessions/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT test-hash-sessions Jetty Tests :: Sessions :: Hash diff --git a/tests/test-sessions/test-jdbc-sessions/pom.xml b/tests/test-sessions/test-jdbc-sessions/pom.xml index 3c5f30863a9..4ce7881ca06 100644 --- a/tests/test-sessions/test-jdbc-sessions/pom.xml +++ b/tests/test-sessions/test-jdbc-sessions/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT test-jdbc-sessions Jetty Tests :: Sessions :: JDBC diff --git a/tests/test-sessions/test-mongodb-sessions/pom.xml b/tests/test-sessions/test-mongodb-sessions/pom.xml index df65ff85f9e..eef996be78e 100644 --- a/tests/test-sessions/test-mongodb-sessions/pom.xml +++ b/tests/test-sessions/test-mongodb-sessions/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT test-mongodb-sessions Jetty Tests :: Sessions :: Mongo diff --git a/tests/test-sessions/test-sessions-common/pom.xml b/tests/test-sessions/test-sessions-common/pom.xml index bdfbf77dfdd..70cda9b32f9 100644 --- a/tests/test-sessions/test-sessions-common/pom.xml +++ b/tests/test-sessions/test-sessions-common/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT test-sessions-common Jetty Tests :: Sessions :: Common diff --git a/tests/test-webapps/pom.xml b/tests/test-webapps/pom.xml index b0e0f982cc5..ce95b6d441c 100644 --- a/tests/test-webapps/pom.xml +++ b/tests/test-webapps/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT ../pom.xml test-webapps-parent diff --git a/tests/test-webapps/test-jaas-webapp/pom.xml b/tests/test-webapps/test-jaas-webapp/pom.xml index 2580405f1b2..b110679b351 100644 --- a/tests/test-webapps/test-jaas-webapp/pom.xml +++ b/tests/test-webapps/test-jaas-webapp/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT test-jaas-webapp Jetty Tests :: WebApp :: JAAS diff --git a/tests/test-webapps/test-jetty-webapp/pom.xml b/tests/test-webapps/test-jetty-webapp/pom.xml index f999633862f..d46692b5a51 100644 --- a/tests/test-webapps/test-jetty-webapp/pom.xml +++ b/tests/test-webapps/test-jetty-webapp/pom.xml @@ -20,7 +20,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT ../pom.xml 4.0.0 diff --git a/tests/test-webapps/test-jndi-webapp/pom.xml b/tests/test-webapps/test-jndi-webapp/pom.xml index c02f2ae5ac3..8f3ca7d141d 100644 --- a/tests/test-webapps/test-jndi-webapp/pom.xml +++ b/tests/test-webapps/test-jndi-webapp/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT test-jndi-webapp Jetty Tests :: WebApp :: JNDI diff --git a/tests/test-webapps/test-mock-resources/pom.xml b/tests/test-webapps/test-mock-resources/pom.xml index 3af0e8d2a29..0232ced3d3a 100644 --- a/tests/test-webapps/test-mock-resources/pom.xml +++ b/tests/test-webapps/test-mock-resources/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT Jetty Tests :: WebApp :: Mock Resources test-mock-resources diff --git a/tests/test-webapps/test-proxy-webapp/pom.xml b/tests/test-webapps/test-proxy-webapp/pom.xml index 13f7c8b65ac..16265cc08e0 100644 --- a/tests/test-webapps/test-proxy-webapp/pom.xml +++ b/tests/test-webapps/test-proxy-webapp/pom.xml @@ -20,7 +20,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT ../pom.xml 4.0.0 diff --git a/tests/test-webapps/test-servlet-spec/pom.xml b/tests/test-webapps/test-servlet-spec/pom.xml index a24df1a6e95..5e03a728374 100644 --- a/tests/test-webapps/test-servlet-spec/pom.xml +++ b/tests/test-webapps/test-servlet-spec/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT test-servlet-spec-parent Jetty Tests :: Spec Test WebApp :: Parent diff --git a/tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml b/tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml index 70c78f6b9ec..c3a7b03e1cc 100644 --- a/tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml +++ b/tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-servlet-spec-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT test-container-initializer jar diff --git a/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml b/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml index e2ba8810101..d778d049004 100644 --- a/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml +++ b/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-servlet-spec-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT Jetty Tests :: Webapps :: Spec Webapp test-spec-webapp diff --git a/tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml b/tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml index 9ecd50971e0..6a8fb4bbcaf 100644 --- a/tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml +++ b/tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-servlet-spec-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT Jetty Tests :: WebApp :: Servlet Spec :: Fragment Jar org.eclipse.jetty.tests diff --git a/tests/test-webapps/test-webapp-rfc2616/pom.xml b/tests/test-webapps/test-webapp-rfc2616/pom.xml index a39137eef2b..6c9762ab738 100644 --- a/tests/test-webapps/test-webapp-rfc2616/pom.xml +++ b/tests/test-webapps/test-webapp-rfc2616/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.2.25.v20180606 + 9.2.26-SNAPSHOT test-webapp-rfc2616 Jetty Tests :: WebApp :: RFC2616 From cfcecce2f97b415e1a51037d1290631c27362a51 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Mon, 6 Aug 2018 10:29:57 -0500 Subject: [PATCH 03/88] Bumping up jetty-version-maven-plugin version --- pom.xml | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d5a7529b133..58667c8c7c7 100644 --- a/pom.xml +++ b/pom.xml @@ -294,7 +294,7 @@ org.eclipse.jetty.toolchain jetty-version-maven-plugin - 2.3 + 2.5 org.apache.maven.plugins @@ -773,12 +773,27 @@ generate-resources update-version-text + tag true true false true + Tag for release: jetty-${project.version} + + jetty-documentation/.* + examples/.* + aggregates/.* + .*/test-.* + .*/.*-test/.* + .*/.*-tests/.* + .*/src/test/.* + \.git.* + .*\.md$ + .*\.txt$ + Jenkinsfile + From 8c637489ae2bdc2d281b8db171e7427a47fdcc2b Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Mon, 6 Aug 2018 10:51:25 -0500 Subject: [PATCH 04/88] Updating to version 9.2.26.v20180806 --- VERSION.txt | 3 ++- aggregates/jetty-all/pom.xml | 2 +- apache-jsp/pom.xml | 2 +- apache-jstl/pom.xml | 2 +- examples/async-rest/async-rest-jar/pom.xml | 2 +- examples/async-rest/async-rest-webapp/pom.xml | 2 +- examples/async-rest/pom.xml | 2 +- examples/embedded/pom.xml | 2 +- examples/pom.xml | 2 +- jetty-alpn/jetty-alpn-client/pom.xml | 2 +- jetty-alpn/jetty-alpn-server/pom.xml | 2 +- jetty-alpn/pom.xml | 2 +- jetty-annotations/pom.xml | 2 +- jetty-ant/pom.xml | 2 +- jetty-cdi/pom.xml | 2 +- jetty-client/pom.xml | 2 +- jetty-continuation/pom.xml | 2 +- jetty-deploy/pom.xml | 2 +- jetty-distribution/pom.xml | 2 +- jetty-fcgi/fcgi-client/pom.xml | 2 +- jetty-fcgi/fcgi-server/pom.xml | 2 +- jetty-fcgi/pom.xml | 2 +- jetty-http-spi/pom.xml | 2 +- jetty-http/pom.xml | 2 +- jetty-io/pom.xml | 2 +- jetty-jaas/pom.xml | 2 +- jetty-jaspi/pom.xml | 2 +- jetty-jmx/pom.xml | 2 +- jetty-jndi/pom.xml | 2 +- jetty-jsp/pom.xml | 2 +- jetty-jspc-maven-plugin/pom.xml | 2 +- jetty-maven-plugin/pom.xml | 2 +- jetty-monitor/pom.xml | 2 +- jetty-nosql/pom.xml | 2 +- jetty-osgi/jetty-osgi-alpn/pom.xml | 2 +- jetty-osgi/jetty-osgi-boot-jsp/pom.xml | 2 +- jetty-osgi/jetty-osgi-boot-warurl/pom.xml | 2 +- jetty-osgi/jetty-osgi-boot/pom.xml | 2 +- jetty-osgi/jetty-osgi-httpservice/pom.xml | 2 +- jetty-osgi/pom.xml | 2 +- jetty-osgi/test-jetty-osgi-context/pom.xml | 2 +- jetty-osgi/test-jetty-osgi-webapp/pom.xml | 2 +- jetty-osgi/test-jetty-osgi/pom.xml | 2 +- jetty-plus/pom.xml | 2 +- jetty-proxy/pom.xml | 2 +- jetty-quickstart/pom.xml | 2 +- jetty-rewrite/pom.xml | 2 +- jetty-runner/pom.xml | 2 +- jetty-security/pom.xml | 2 +- jetty-server/pom.xml | 2 +- jetty-servlet/pom.xml | 2 +- jetty-servlets/pom.xml | 2 +- jetty-spdy/pom.xml | 2 +- jetty-spdy/spdy-alpn-tests/pom.xml | 2 +- jetty-spdy/spdy-client/pom.xml | 2 +- jetty-spdy/spdy-core/pom.xml | 2 +- jetty-spdy/spdy-example-webapp/pom.xml | 2 +- jetty-spdy/spdy-http-client-transport/pom.xml | 2 +- jetty-spdy/spdy-http-common/pom.xml | 2 +- jetty-spdy/spdy-http-server/pom.xml | 2 +- jetty-spdy/spdy-server/pom.xml | 2 +- jetty-spring/pom.xml | 2 +- jetty-start/pom.xml | 2 +- jetty-util-ajax/pom.xml | 2 +- jetty-util/pom.xml | 2 +- jetty-webapp/pom.xml | 2 +- jetty-websocket/javax-websocket-client-impl/pom.xml | 2 +- jetty-websocket/javax-websocket-server-impl/pom.xml | 2 +- jetty-websocket/pom.xml | 2 +- jetty-websocket/websocket-api/pom.xml | 2 +- jetty-websocket/websocket-client/pom.xml | 2 +- jetty-websocket/websocket-common/pom.xml | 2 +- jetty-websocket/websocket-server/pom.xml | 2 +- jetty-websocket/websocket-servlet/pom.xml | 2 +- jetty-xml/pom.xml | 2 +- pom.xml | 2 +- tests/pom.xml | 2 +- tests/test-continuation/pom.xml | 2 +- tests/test-integration/pom.xml | 2 +- tests/test-jmx/jmx-webapp-it/pom.xml | 2 +- tests/test-jmx/jmx-webapp/pom.xml | 2 +- tests/test-jmx/pom.xml | 2 +- tests/test-loginservice/pom.xml | 2 +- tests/test-quickstart/pom.xml | 2 +- tests/test-sessions/pom.xml | 2 +- tests/test-sessions/test-hash-sessions/pom.xml | 2 +- tests/test-sessions/test-jdbc-sessions/pom.xml | 2 +- tests/test-sessions/test-mongodb-sessions/pom.xml | 2 +- tests/test-sessions/test-sessions-common/pom.xml | 2 +- tests/test-webapps/pom.xml | 2 +- tests/test-webapps/test-jaas-webapp/pom.xml | 2 +- tests/test-webapps/test-jetty-webapp/pom.xml | 2 +- tests/test-webapps/test-jndi-webapp/pom.xml | 2 +- tests/test-webapps/test-mock-resources/pom.xml | 2 +- tests/test-webapps/test-proxy-webapp/pom.xml | 2 +- tests/test-webapps/test-servlet-spec/pom.xml | 2 +- .../test-servlet-spec/test-container-initializer/pom.xml | 2 +- tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml | 2 +- tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml | 2 +- tests/test-webapps/test-webapp-rfc2616/pom.xml | 2 +- 100 files changed, 101 insertions(+), 100 deletions(-) diff --git a/VERSION.txt b/VERSION.txt index 78f4358fd8d..5d07ac103e4 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1,4 +1,5 @@ -jetty-9.2.26-SNAPSHOT +jetty-9.2.26.v20180806 - 06 August 2018 + + 2777 Workaround for Conscrypt's ssl == null jetty-9.2.25.v20180606 - 06 June 2018 + 2114 Fix NPE in JettyHttpServerProvider diff --git a/aggregates/jetty-all/pom.xml b/aggregates/jetty-all/pom.xml index 46275a0dd5a..ed0ead9f890 100644 --- a/aggregates/jetty-all/pom.xml +++ b/aggregates/jetty-all/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 ../../pom.xml 4.0.0 diff --git a/apache-jsp/pom.xml b/apache-jsp/pom.xml index c44da4b5148..9bfe3c45ce9 100644 --- a/apache-jsp/pom.xml +++ b/apache-jsp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 apache-jsp diff --git a/apache-jstl/pom.xml b/apache-jstl/pom.xml index 4ffe61c95ec..aec74571ccb 100644 --- a/apache-jstl/pom.xml +++ b/apache-jstl/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 apache-jstl diff --git a/examples/async-rest/async-rest-jar/pom.xml b/examples/async-rest/async-rest-jar/pom.xml index 4cfdcb41bdf..e380e3f9a77 100644 --- a/examples/async-rest/async-rest-jar/pom.xml +++ b/examples/async-rest/async-rest-jar/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty example-async-rest - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 org.eclipse.jetty.example-async-rest diff --git a/examples/async-rest/async-rest-webapp/pom.xml b/examples/async-rest/async-rest-webapp/pom.xml index 78b5a8e0c77..4820813e79e 100644 --- a/examples/async-rest/async-rest-webapp/pom.xml +++ b/examples/async-rest/async-rest-webapp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty example-async-rest - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 org.eclipse.jetty.example-async-rest diff --git a/examples/async-rest/pom.xml b/examples/async-rest/pom.xml index 3a46314461a..241d39d2546 100644 --- a/examples/async-rest/pom.xml +++ b/examples/async-rest/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.examples examples-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 ../pom.xml 4.0.0 diff --git a/examples/embedded/pom.xml b/examples/embedded/pom.xml index a1a7ade90aa..fb31c5b0405 100644 --- a/examples/embedded/pom.xml +++ b/examples/embedded/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.examples examples-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 ../pom.xml 4.0.0 diff --git a/examples/pom.xml b/examples/pom.xml index d6526112276..0c0075d5bf6 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 ../pom.xml org.eclipse.jetty.examples diff --git a/jetty-alpn/jetty-alpn-client/pom.xml b/jetty-alpn/jetty-alpn-client/pom.xml index 7a48b78644a..d0616121e41 100644 --- a/jetty-alpn/jetty-alpn-client/pom.xml +++ b/jetty-alpn/jetty-alpn-client/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-alpn-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-alpn-client diff --git a/jetty-alpn/jetty-alpn-server/pom.xml b/jetty-alpn/jetty-alpn-server/pom.xml index 86b64fd7064..de68df7858c 100644 --- a/jetty-alpn/jetty-alpn-server/pom.xml +++ b/jetty-alpn/jetty-alpn-server/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-alpn-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-alpn-server diff --git a/jetty-alpn/pom.xml b/jetty-alpn/pom.xml index 2c5566456d5..85154357a90 100644 --- a/jetty-alpn/pom.xml +++ b/jetty-alpn/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-alpn-parent diff --git a/jetty-annotations/pom.xml b/jetty-annotations/pom.xml index f90c291164e..31ee1e8e093 100644 --- a/jetty-annotations/pom.xml +++ b/jetty-annotations/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-annotations diff --git a/jetty-ant/pom.xml b/jetty-ant/pom.xml index 9df91a3cb69..29fbc436287 100644 --- a/jetty-ant/pom.xml +++ b/jetty-ant/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-ant diff --git a/jetty-cdi/pom.xml b/jetty-cdi/pom.xml index c07c74329fb..c18f7fba7ab 100644 --- a/jetty-cdi/pom.xml +++ b/jetty-cdi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-cdi diff --git a/jetty-client/pom.xml b/jetty-client/pom.xml index 410a485850d..defad19b51d 100644 --- a/jetty-client/pom.xml +++ b/jetty-client/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 diff --git a/jetty-continuation/pom.xml b/jetty-continuation/pom.xml index fea53658928..f54695f42d2 100644 --- a/jetty-continuation/pom.xml +++ b/jetty-continuation/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-continuation diff --git a/jetty-deploy/pom.xml b/jetty-deploy/pom.xml index 4c7df31fadf..c501094dc3e 100644 --- a/jetty-deploy/pom.xml +++ b/jetty-deploy/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-deploy diff --git a/jetty-distribution/pom.xml b/jetty-distribution/pom.xml index c4ffd23c5b2..661ca0ca033 100644 --- a/jetty-distribution/pom.xml +++ b/jetty-distribution/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 jetty-distribution Jetty :: Distribution Assemblies diff --git a/jetty-fcgi/fcgi-client/pom.xml b/jetty-fcgi/fcgi-client/pom.xml index b4be85c1444..64743578fb9 100644 --- a/jetty-fcgi/fcgi-client/pom.xml +++ b/jetty-fcgi/fcgi-client/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.fcgi fcgi-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 diff --git a/jetty-fcgi/fcgi-server/pom.xml b/jetty-fcgi/fcgi-server/pom.xml index 5e1cf0f1dbb..03b552836eb 100644 --- a/jetty-fcgi/fcgi-server/pom.xml +++ b/jetty-fcgi/fcgi-server/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.fcgi fcgi-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 diff --git a/jetty-fcgi/pom.xml b/jetty-fcgi/pom.xml index 15e85bd6bce..7cca2e55ecd 100644 --- a/jetty-fcgi/pom.xml +++ b/jetty-fcgi/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 diff --git a/jetty-http-spi/pom.xml b/jetty-http-spi/pom.xml index 1be7dc8b136..7d2ba0256ca 100644 --- a/jetty-http-spi/pom.xml +++ b/jetty-http-spi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-http-spi diff --git a/jetty-http/pom.xml b/jetty-http/pom.xml index 581981e4532..d033f367bea 100644 --- a/jetty-http/pom.xml +++ b/jetty-http/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-http diff --git a/jetty-io/pom.xml b/jetty-io/pom.xml index 4fbb5ad38dd..0221e56b829 100644 --- a/jetty-io/pom.xml +++ b/jetty-io/pom.xml @@ -2,7 +2,7 @@ jetty-project org.eclipse.jetty - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-io diff --git a/jetty-jaas/pom.xml b/jetty-jaas/pom.xml index c26aa541af8..c86cda58457 100644 --- a/jetty-jaas/pom.xml +++ b/jetty-jaas/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-jaas diff --git a/jetty-jaspi/pom.xml b/jetty-jaspi/pom.xml index 1b0bc2e311f..b6d9057cd33 100644 --- a/jetty-jaspi/pom.xml +++ b/jetty-jaspi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-jaspi diff --git a/jetty-jmx/pom.xml b/jetty-jmx/pom.xml index 0bdacb41afd..7d0f0c31d00 100644 --- a/jetty-jmx/pom.xml +++ b/jetty-jmx/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-jmx diff --git a/jetty-jndi/pom.xml b/jetty-jndi/pom.xml index 10e6ad05a85..1fded7d9ed8 100644 --- a/jetty-jndi/pom.xml +++ b/jetty-jndi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-jndi diff --git a/jetty-jsp/pom.xml b/jetty-jsp/pom.xml index 62e6a7d3750..fb62079098f 100644 --- a/jetty-jsp/pom.xml +++ b/jetty-jsp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-jsp diff --git a/jetty-jspc-maven-plugin/pom.xml b/jetty-jspc-maven-plugin/pom.xml index aa7f7e6a400..81414fff871 100644 --- a/jetty-jspc-maven-plugin/pom.xml +++ b/jetty-jspc-maven-plugin/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-jspc-maven-plugin diff --git a/jetty-maven-plugin/pom.xml b/jetty-maven-plugin/pom.xml index cdbec464d4e..83790efb866 100644 --- a/jetty-maven-plugin/pom.xml +++ b/jetty-maven-plugin/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-maven-plugin diff --git a/jetty-monitor/pom.xml b/jetty-monitor/pom.xml index a7bb5a03125..891c7f69d68 100644 --- a/jetty-monitor/pom.xml +++ b/jetty-monitor/pom.xml @@ -19,7 +19,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-monitor diff --git a/jetty-nosql/pom.xml b/jetty-nosql/pom.xml index 5072af8dd6f..39618771fae 100644 --- a/jetty-nosql/pom.xml +++ b/jetty-nosql/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-nosql diff --git a/jetty-osgi/jetty-osgi-alpn/pom.xml b/jetty-osgi/jetty-osgi-alpn/pom.xml index 56dbf437ad4..d664c0f7d08 100644 --- a/jetty-osgi/jetty-osgi-alpn/pom.xml +++ b/jetty-osgi/jetty-osgi-alpn/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-osgi-alpn diff --git a/jetty-osgi/jetty-osgi-boot-jsp/pom.xml b/jetty-osgi/jetty-osgi-boot-jsp/pom.xml index 66f45398575..93efface4d5 100644 --- a/jetty-osgi/jetty-osgi-boot-jsp/pom.xml +++ b/jetty-osgi/jetty-osgi-boot-jsp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-osgi-boot-jsp diff --git a/jetty-osgi/jetty-osgi-boot-warurl/pom.xml b/jetty-osgi/jetty-osgi-boot-warurl/pom.xml index 865e022e788..28db3086b56 100644 --- a/jetty-osgi/jetty-osgi-boot-warurl/pom.xml +++ b/jetty-osgi/jetty-osgi-boot-warurl/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 ../pom.xml 4.0.0 diff --git a/jetty-osgi/jetty-osgi-boot/pom.xml b/jetty-osgi/jetty-osgi-boot/pom.xml index e36d1464b40..c8661b94c56 100644 --- a/jetty-osgi/jetty-osgi-boot/pom.xml +++ b/jetty-osgi/jetty-osgi-boot/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-osgi-boot diff --git a/jetty-osgi/jetty-osgi-httpservice/pom.xml b/jetty-osgi/jetty-osgi-httpservice/pom.xml index c25d36bbc71..929abf75b3e 100644 --- a/jetty-osgi/jetty-osgi-httpservice/pom.xml +++ b/jetty-osgi/jetty-osgi-httpservice/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-httpservice diff --git a/jetty-osgi/pom.xml b/jetty-osgi/pom.xml index 98a433dba56..7776a757012 100644 --- a/jetty-osgi/pom.xml +++ b/jetty-osgi/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 org.eclipse.jetty.osgi jetty-osgi-project diff --git a/jetty-osgi/test-jetty-osgi-context/pom.xml b/jetty-osgi/test-jetty-osgi-context/pom.xml index 0f1737cb115..42df47f5e5e 100644 --- a/jetty-osgi/test-jetty-osgi-context/pom.xml +++ b/jetty-osgi/test-jetty-osgi-context/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 test-jetty-osgi-context diff --git a/jetty-osgi/test-jetty-osgi-webapp/pom.xml b/jetty-osgi/test-jetty-osgi-webapp/pom.xml index a412d33eb36..dbe5e946f63 100644 --- a/jetty-osgi/test-jetty-osgi-webapp/pom.xml +++ b/jetty-osgi/test-jetty-osgi-webapp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 ../pom.xml 4.0.0 diff --git a/jetty-osgi/test-jetty-osgi/pom.xml b/jetty-osgi/test-jetty-osgi/pom.xml index ae2c6558c87..74e82fa7b1c 100644 --- a/jetty-osgi/test-jetty-osgi/pom.xml +++ b/jetty-osgi/test-jetty-osgi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 ../pom.xml 4.0.0 diff --git a/jetty-plus/pom.xml b/jetty-plus/pom.xml index d4acb9ba85b..8b4fe5de358 100644 --- a/jetty-plus/pom.xml +++ b/jetty-plus/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-plus diff --git a/jetty-proxy/pom.xml b/jetty-proxy/pom.xml index 3efa50d3880..f05370e7c40 100644 --- a/jetty-proxy/pom.xml +++ b/jetty-proxy/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-proxy diff --git a/jetty-quickstart/pom.xml b/jetty-quickstart/pom.xml index a85df8ed269..e25a2d20abc 100644 --- a/jetty-quickstart/pom.xml +++ b/jetty-quickstart/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 org.eclipse.jetty diff --git a/jetty-rewrite/pom.xml b/jetty-rewrite/pom.xml index 3ad82928343..1bf24b1b699 100644 --- a/jetty-rewrite/pom.xml +++ b/jetty-rewrite/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-rewrite diff --git a/jetty-runner/pom.xml b/jetty-runner/pom.xml index 6d960d14c5a..c48e5dcc2a0 100644 --- a/jetty-runner/pom.xml +++ b/jetty-runner/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-runner diff --git a/jetty-security/pom.xml b/jetty-security/pom.xml index 2ade2e89e17..eb342dd69f2 100644 --- a/jetty-security/pom.xml +++ b/jetty-security/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-security diff --git a/jetty-server/pom.xml b/jetty-server/pom.xml index adc09327ad3..4b050113c57 100644 --- a/jetty-server/pom.xml +++ b/jetty-server/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-server diff --git a/jetty-servlet/pom.xml b/jetty-servlet/pom.xml index 8b279fd32d8..ed45020d79b 100644 --- a/jetty-servlet/pom.xml +++ b/jetty-servlet/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-servlet diff --git a/jetty-servlets/pom.xml b/jetty-servlets/pom.xml index 2b601fb85f8..676d1248a3f 100644 --- a/jetty-servlets/pom.xml +++ b/jetty-servlets/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-servlets diff --git a/jetty-spdy/pom.xml b/jetty-spdy/pom.xml index 52774d69c7a..0964acced83 100644 --- a/jetty-spdy/pom.xml +++ b/jetty-spdy/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 diff --git a/jetty-spdy/spdy-alpn-tests/pom.xml b/jetty-spdy/spdy-alpn-tests/pom.xml index b50298e92a6..1cd632188e8 100644 --- a/jetty-spdy/spdy-alpn-tests/pom.xml +++ b/jetty-spdy/spdy-alpn-tests/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 diff --git a/jetty-spdy/spdy-client/pom.xml b/jetty-spdy/spdy-client/pom.xml index dec0421cc88..60d0beb43a8 100644 --- a/jetty-spdy/spdy-client/pom.xml +++ b/jetty-spdy/spdy-client/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 diff --git a/jetty-spdy/spdy-core/pom.xml b/jetty-spdy/spdy-core/pom.xml index 64adf741bfe..0171b96124d 100644 --- a/jetty-spdy/spdy-core/pom.xml +++ b/jetty-spdy/spdy-core/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 diff --git a/jetty-spdy/spdy-example-webapp/pom.xml b/jetty-spdy/spdy-example-webapp/pom.xml index c68277b2f57..0df85ac68d2 100644 --- a/jetty-spdy/spdy-example-webapp/pom.xml +++ b/jetty-spdy/spdy-example-webapp/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 spdy-example-webapp diff --git a/jetty-spdy/spdy-http-client-transport/pom.xml b/jetty-spdy/spdy-http-client-transport/pom.xml index 9c140f80f8c..1689cea8086 100644 --- a/jetty-spdy/spdy-http-client-transport/pom.xml +++ b/jetty-spdy/spdy-http-client-transport/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 diff --git a/jetty-spdy/spdy-http-common/pom.xml b/jetty-spdy/spdy-http-common/pom.xml index e52ec2d7476..270139655ff 100644 --- a/jetty-spdy/spdy-http-common/pom.xml +++ b/jetty-spdy/spdy-http-common/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 diff --git a/jetty-spdy/spdy-http-server/pom.xml b/jetty-spdy/spdy-http-server/pom.xml index ba3980ffd42..4041c36732f 100644 --- a/jetty-spdy/spdy-http-server/pom.xml +++ b/jetty-spdy/spdy-http-server/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 spdy-http-server diff --git a/jetty-spdy/spdy-server/pom.xml b/jetty-spdy/spdy-server/pom.xml index 6ee8673f241..a39327d2f97 100644 --- a/jetty-spdy/spdy-server/pom.xml +++ b/jetty-spdy/spdy-server/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 diff --git a/jetty-spring/pom.xml b/jetty-spring/pom.xml index 2cd3bc9319b..3fe022aa4cc 100644 --- a/jetty-spring/pom.xml +++ b/jetty-spring/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-spring diff --git a/jetty-start/pom.xml b/jetty-start/pom.xml index a75c9c80b77..ee6f2b2b046 100644 --- a/jetty-start/pom.xml +++ b/jetty-start/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-start diff --git a/jetty-util-ajax/pom.xml b/jetty-util-ajax/pom.xml index e322daf11dd..7c295181b88 100644 --- a/jetty-util-ajax/pom.xml +++ b/jetty-util-ajax/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-util-ajax diff --git a/jetty-util/pom.xml b/jetty-util/pom.xml index 5ad8c050ba5..57ab70fda37 100644 --- a/jetty-util/pom.xml +++ b/jetty-util/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-util diff --git a/jetty-webapp/pom.xml b/jetty-webapp/pom.xml index 875759a234c..4d10b681213 100644 --- a/jetty-webapp/pom.xml +++ b/jetty-webapp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-webapp diff --git a/jetty-websocket/javax-websocket-client-impl/pom.xml b/jetty-websocket/javax-websocket-client-impl/pom.xml index 29846fcdd91..9f8736ef2fc 100644 --- a/jetty-websocket/javax-websocket-client-impl/pom.xml +++ b/jetty-websocket/javax-websocket-client-impl/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 diff --git a/jetty-websocket/javax-websocket-server-impl/pom.xml b/jetty-websocket/javax-websocket-server-impl/pom.xml index d1e909578b8..ef63bf5af0c 100644 --- a/jetty-websocket/javax-websocket-server-impl/pom.xml +++ b/jetty-websocket/javax-websocket-server-impl/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 diff --git a/jetty-websocket/pom.xml b/jetty-websocket/pom.xml index 49d3cee3e8f..553765f47ec 100644 --- a/jetty-websocket/pom.xml +++ b/jetty-websocket/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 diff --git a/jetty-websocket/websocket-api/pom.xml b/jetty-websocket/websocket-api/pom.xml index 087501046a6..d8798661a86 100644 --- a/jetty-websocket/websocket-api/pom.xml +++ b/jetty-websocket/websocket-api/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 diff --git a/jetty-websocket/websocket-client/pom.xml b/jetty-websocket/websocket-client/pom.xml index d20fe3298c0..528cce984cf 100644 --- a/jetty-websocket/websocket-client/pom.xml +++ b/jetty-websocket/websocket-client/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 diff --git a/jetty-websocket/websocket-common/pom.xml b/jetty-websocket/websocket-common/pom.xml index c527936f840..c9d6f12d6a2 100644 --- a/jetty-websocket/websocket-common/pom.xml +++ b/jetty-websocket/websocket-common/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 diff --git a/jetty-websocket/websocket-server/pom.xml b/jetty-websocket/websocket-server/pom.xml index cd153b03f7f..3902157e55b 100644 --- a/jetty-websocket/websocket-server/pom.xml +++ b/jetty-websocket/websocket-server/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 diff --git a/jetty-websocket/websocket-servlet/pom.xml b/jetty-websocket/websocket-servlet/pom.xml index 3398ade69c9..fbfe4161cfd 100644 --- a/jetty-websocket/websocket-servlet/pom.xml +++ b/jetty-websocket/websocket-servlet/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 diff --git a/jetty-xml/pom.xml b/jetty-xml/pom.xml index e651f840183..b67e5c109b3 100644 --- a/jetty-xml/pom.xml +++ b/jetty-xml/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jetty-xml diff --git a/pom.xml b/pom.xml index 58667c8c7c7..db26676e6b3 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ 23 jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 Jetty :: Project http://www.eclipse.org/jetty pom diff --git a/tests/pom.xml b/tests/pom.xml index a42c15fedcd..400630bdade 100644 --- a/tests/pom.xml +++ b/tests/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty jetty-project - 9.2.26-SNAPSHOT + 9.2.26.v20180806 ../pom.xml org.eclipse.jetty.tests diff --git a/tests/test-continuation/pom.xml b/tests/test-continuation/pom.xml index 5ee8ccd12a4..8ef796a4201 100644 --- a/tests/test-continuation/pom.xml +++ b/tests/test-continuation/pom.xml @@ -20,7 +20,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 ../pom.xml 4.0.0 diff --git a/tests/test-integration/pom.xml b/tests/test-integration/pom.xml index a549315d293..5bbdd42c1d7 100644 --- a/tests/test-integration/pom.xml +++ b/tests/test-integration/pom.xml @@ -20,7 +20,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 test-integration diff --git a/tests/test-jmx/jmx-webapp-it/pom.xml b/tests/test-jmx/jmx-webapp-it/pom.xml index 8d8cb04e8d3..26b14bea2c9 100644 --- a/tests/test-jmx/jmx-webapp-it/pom.xml +++ b/tests/test-jmx/jmx-webapp-it/pom.xml @@ -20,7 +20,7 @@ org.eclipse.jetty.tests test-jmx-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 jmx-webapp-it diff --git a/tests/test-jmx/jmx-webapp/pom.xml b/tests/test-jmx/jmx-webapp/pom.xml index deb0b3d23ac..d0d94c604ac 100644 --- a/tests/test-jmx/jmx-webapp/pom.xml +++ b/tests/test-jmx/jmx-webapp/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests test-jmx-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 jmx-webapp war diff --git a/tests/test-jmx/pom.xml b/tests/test-jmx/pom.xml index aee3685f95f..2562e237c47 100644 --- a/tests/test-jmx/pom.xml +++ b/tests/test-jmx/pom.xml @@ -20,7 +20,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 4.0.0 test-jmx-parent diff --git a/tests/test-loginservice/pom.xml b/tests/test-loginservice/pom.xml index 06bbbf74829..d9d9ab403be 100644 --- a/tests/test-loginservice/pom.xml +++ b/tests/test-loginservice/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 test-loginservice Jetty Tests :: Login Service diff --git a/tests/test-quickstart/pom.xml b/tests/test-quickstart/pom.xml index 6b97be6e4e1..2a48f2438fc 100644 --- a/tests/test-quickstart/pom.xml +++ b/tests/test-quickstart/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 ../pom.xml 4.0.0 diff --git a/tests/test-sessions/pom.xml b/tests/test-sessions/pom.xml index edb434c81e4..1d894e7e6bf 100644 --- a/tests/test-sessions/pom.xml +++ b/tests/test-sessions/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 test-sessions-parent Jetty Tests :: Sessions :: Parent diff --git a/tests/test-sessions/test-hash-sessions/pom.xml b/tests/test-sessions/test-hash-sessions/pom.xml index 0e5089305f6..375e8ecc4ed 100644 --- a/tests/test-sessions/test-hash-sessions/pom.xml +++ b/tests/test-sessions/test-hash-sessions/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 test-hash-sessions Jetty Tests :: Sessions :: Hash diff --git a/tests/test-sessions/test-jdbc-sessions/pom.xml b/tests/test-sessions/test-jdbc-sessions/pom.xml index 4ce7881ca06..025717bc05d 100644 --- a/tests/test-sessions/test-jdbc-sessions/pom.xml +++ b/tests/test-sessions/test-jdbc-sessions/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 test-jdbc-sessions Jetty Tests :: Sessions :: JDBC diff --git a/tests/test-sessions/test-mongodb-sessions/pom.xml b/tests/test-sessions/test-mongodb-sessions/pom.xml index eef996be78e..55d3a1398f5 100644 --- a/tests/test-sessions/test-mongodb-sessions/pom.xml +++ b/tests/test-sessions/test-mongodb-sessions/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 test-mongodb-sessions Jetty Tests :: Sessions :: Mongo diff --git a/tests/test-sessions/test-sessions-common/pom.xml b/tests/test-sessions/test-sessions-common/pom.xml index 70cda9b32f9..9b33930fb0e 100644 --- a/tests/test-sessions/test-sessions-common/pom.xml +++ b/tests/test-sessions/test-sessions-common/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 test-sessions-common Jetty Tests :: Sessions :: Common diff --git a/tests/test-webapps/pom.xml b/tests/test-webapps/pom.xml index ce95b6d441c..0b3f7d6a4dd 100644 --- a/tests/test-webapps/pom.xml +++ b/tests/test-webapps/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 ../pom.xml test-webapps-parent diff --git a/tests/test-webapps/test-jaas-webapp/pom.xml b/tests/test-webapps/test-jaas-webapp/pom.xml index b110679b351..d339f3fff94 100644 --- a/tests/test-webapps/test-jaas-webapp/pom.xml +++ b/tests/test-webapps/test-jaas-webapp/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 test-jaas-webapp Jetty Tests :: WebApp :: JAAS diff --git a/tests/test-webapps/test-jetty-webapp/pom.xml b/tests/test-webapps/test-jetty-webapp/pom.xml index d46692b5a51..25f15ec6afe 100644 --- a/tests/test-webapps/test-jetty-webapp/pom.xml +++ b/tests/test-webapps/test-jetty-webapp/pom.xml @@ -20,7 +20,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 ../pom.xml 4.0.0 diff --git a/tests/test-webapps/test-jndi-webapp/pom.xml b/tests/test-webapps/test-jndi-webapp/pom.xml index 8f3ca7d141d..20208049b42 100644 --- a/tests/test-webapps/test-jndi-webapp/pom.xml +++ b/tests/test-webapps/test-jndi-webapp/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 test-jndi-webapp Jetty Tests :: WebApp :: JNDI diff --git a/tests/test-webapps/test-mock-resources/pom.xml b/tests/test-webapps/test-mock-resources/pom.xml index 0232ced3d3a..5bb2975e126 100644 --- a/tests/test-webapps/test-mock-resources/pom.xml +++ b/tests/test-webapps/test-mock-resources/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 Jetty Tests :: WebApp :: Mock Resources test-mock-resources diff --git a/tests/test-webapps/test-proxy-webapp/pom.xml b/tests/test-webapps/test-proxy-webapp/pom.xml index 16265cc08e0..8f4c62e5c39 100644 --- a/tests/test-webapps/test-proxy-webapp/pom.xml +++ b/tests/test-webapps/test-proxy-webapp/pom.xml @@ -20,7 +20,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 ../pom.xml 4.0.0 diff --git a/tests/test-webapps/test-servlet-spec/pom.xml b/tests/test-webapps/test-servlet-spec/pom.xml index 5e03a728374..debb66d1600 100644 --- a/tests/test-webapps/test-servlet-spec/pom.xml +++ b/tests/test-webapps/test-servlet-spec/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 test-servlet-spec-parent Jetty Tests :: Spec Test WebApp :: Parent diff --git a/tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml b/tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml index c3a7b03e1cc..fa13db399cc 100644 --- a/tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml +++ b/tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-servlet-spec-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 test-container-initializer jar diff --git a/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml b/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml index d778d049004..975d778e406 100644 --- a/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml +++ b/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-servlet-spec-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 Jetty Tests :: Webapps :: Spec Webapp test-spec-webapp diff --git a/tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml b/tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml index 6a8fb4bbcaf..ace589208f8 100644 --- a/tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml +++ b/tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-servlet-spec-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 Jetty Tests :: WebApp :: Servlet Spec :: Fragment Jar org.eclipse.jetty.tests diff --git a/tests/test-webapps/test-webapp-rfc2616/pom.xml b/tests/test-webapps/test-webapp-rfc2616/pom.xml index 6c9762ab738..4ebd1f4ccae 100644 --- a/tests/test-webapps/test-webapp-rfc2616/pom.xml +++ b/tests/test-webapps/test-webapp-rfc2616/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.2.26-SNAPSHOT + 9.2.26.v20180806 test-webapp-rfc2616 Jetty Tests :: WebApp :: RFC2616 From 516d93c488a92278114fbd3e46a9d9f8ab97a451 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Mon, 6 Aug 2018 11:33:22 -0500 Subject: [PATCH 05/88] Updating to version 9.2.27-SNAPSHOT --- VERSION.txt | 2 ++ aggregates/jetty-all/pom.xml | 2 +- apache-jsp/pom.xml | 2 +- apache-jstl/pom.xml | 2 +- examples/async-rest/async-rest-jar/pom.xml | 2 +- examples/async-rest/async-rest-webapp/pom.xml | 2 +- examples/async-rest/pom.xml | 2 +- examples/embedded/pom.xml | 2 +- examples/pom.xml | 2 +- jetty-alpn/jetty-alpn-client/pom.xml | 2 +- jetty-alpn/jetty-alpn-server/pom.xml | 2 +- jetty-alpn/pom.xml | 2 +- jetty-annotations/pom.xml | 2 +- jetty-ant/pom.xml | 2 +- jetty-cdi/pom.xml | 2 +- jetty-client/pom.xml | 2 +- jetty-continuation/pom.xml | 2 +- jetty-deploy/pom.xml | 2 +- jetty-distribution/pom.xml | 2 +- jetty-fcgi/fcgi-client/pom.xml | 2 +- jetty-fcgi/fcgi-server/pom.xml | 2 +- jetty-fcgi/pom.xml | 2 +- jetty-http-spi/pom.xml | 2 +- jetty-http/pom.xml | 2 +- jetty-io/pom.xml | 2 +- jetty-jaas/pom.xml | 2 +- jetty-jaspi/pom.xml | 2 +- jetty-jmx/pom.xml | 2 +- jetty-jndi/pom.xml | 2 +- jetty-jsp/pom.xml | 2 +- jetty-jspc-maven-plugin/pom.xml | 2 +- jetty-maven-plugin/pom.xml | 2 +- jetty-monitor/pom.xml | 2 +- jetty-nosql/pom.xml | 2 +- jetty-osgi/jetty-osgi-alpn/pom.xml | 2 +- jetty-osgi/jetty-osgi-boot-jsp/pom.xml | 2 +- jetty-osgi/jetty-osgi-boot-warurl/pom.xml | 2 +- jetty-osgi/jetty-osgi-boot/pom.xml | 2 +- jetty-osgi/jetty-osgi-httpservice/pom.xml | 2 +- jetty-osgi/pom.xml | 2 +- jetty-osgi/test-jetty-osgi-context/pom.xml | 2 +- jetty-osgi/test-jetty-osgi-webapp/pom.xml | 2 +- jetty-osgi/test-jetty-osgi/pom.xml | 2 +- jetty-plus/pom.xml | 2 +- jetty-proxy/pom.xml | 2 +- jetty-quickstart/pom.xml | 2 +- jetty-rewrite/pom.xml | 2 +- jetty-runner/pom.xml | 2 +- jetty-security/pom.xml | 2 +- jetty-server/pom.xml | 2 +- jetty-servlet/pom.xml | 2 +- jetty-servlets/pom.xml | 2 +- jetty-spdy/pom.xml | 2 +- jetty-spdy/spdy-alpn-tests/pom.xml | 2 +- jetty-spdy/spdy-client/pom.xml | 2 +- jetty-spdy/spdy-core/pom.xml | 2 +- jetty-spdy/spdy-example-webapp/pom.xml | 2 +- jetty-spdy/spdy-http-client-transport/pom.xml | 2 +- jetty-spdy/spdy-http-common/pom.xml | 2 +- jetty-spdy/spdy-http-server/pom.xml | 2 +- jetty-spdy/spdy-server/pom.xml | 2 +- jetty-spring/pom.xml | 2 +- jetty-start/pom.xml | 2 +- jetty-util-ajax/pom.xml | 2 +- jetty-util/pom.xml | 2 +- jetty-webapp/pom.xml | 2 +- jetty-websocket/javax-websocket-client-impl/pom.xml | 2 +- jetty-websocket/javax-websocket-server-impl/pom.xml | 2 +- jetty-websocket/pom.xml | 2 +- jetty-websocket/websocket-api/pom.xml | 2 +- jetty-websocket/websocket-client/pom.xml | 2 +- jetty-websocket/websocket-common/pom.xml | 2 +- jetty-websocket/websocket-server/pom.xml | 2 +- jetty-websocket/websocket-servlet/pom.xml | 2 +- jetty-xml/pom.xml | 2 +- pom.xml | 2 +- tests/pom.xml | 2 +- tests/test-continuation/pom.xml | 2 +- tests/test-integration/pom.xml | 2 +- tests/test-jmx/jmx-webapp-it/pom.xml | 2 +- tests/test-jmx/jmx-webapp/pom.xml | 2 +- tests/test-jmx/pom.xml | 2 +- tests/test-loginservice/pom.xml | 2 +- tests/test-quickstart/pom.xml | 2 +- tests/test-sessions/pom.xml | 2 +- tests/test-sessions/test-hash-sessions/pom.xml | 2 +- tests/test-sessions/test-jdbc-sessions/pom.xml | 2 +- tests/test-sessions/test-mongodb-sessions/pom.xml | 2 +- tests/test-sessions/test-sessions-common/pom.xml | 2 +- tests/test-webapps/pom.xml | 2 +- tests/test-webapps/test-jaas-webapp/pom.xml | 2 +- tests/test-webapps/test-jetty-webapp/pom.xml | 2 +- tests/test-webapps/test-jndi-webapp/pom.xml | 2 +- tests/test-webapps/test-mock-resources/pom.xml | 2 +- tests/test-webapps/test-proxy-webapp/pom.xml | 2 +- tests/test-webapps/test-servlet-spec/pom.xml | 2 +- .../test-servlet-spec/test-container-initializer/pom.xml | 2 +- tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml | 2 +- tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml | 2 +- tests/test-webapps/test-webapp-rfc2616/pom.xml | 2 +- 100 files changed, 101 insertions(+), 99 deletions(-) diff --git a/VERSION.txt b/VERSION.txt index 5d07ac103e4..2fe4ae07f17 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1,3 +1,5 @@ +jetty-9.2.27-SNAPSHOT + jetty-9.2.26.v20180806 - 06 August 2018 + 2777 Workaround for Conscrypt's ssl == null diff --git a/aggregates/jetty-all/pom.xml b/aggregates/jetty-all/pom.xml index ed0ead9f890..84f5832f730 100644 --- a/aggregates/jetty-all/pom.xml +++ b/aggregates/jetty-all/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT ../../pom.xml 4.0.0 diff --git a/apache-jsp/pom.xml b/apache-jsp/pom.xml index 9bfe3c45ce9..48c5b7afa75 100644 --- a/apache-jsp/pom.xml +++ b/apache-jsp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 apache-jsp diff --git a/apache-jstl/pom.xml b/apache-jstl/pom.xml index aec74571ccb..65a1824f9f1 100644 --- a/apache-jstl/pom.xml +++ b/apache-jstl/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 apache-jstl diff --git a/examples/async-rest/async-rest-jar/pom.xml b/examples/async-rest/async-rest-jar/pom.xml index e380e3f9a77..443cd64ba24 100644 --- a/examples/async-rest/async-rest-jar/pom.xml +++ b/examples/async-rest/async-rest-jar/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty example-async-rest - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 org.eclipse.jetty.example-async-rest diff --git a/examples/async-rest/async-rest-webapp/pom.xml b/examples/async-rest/async-rest-webapp/pom.xml index 4820813e79e..fcc3e2b4d3f 100644 --- a/examples/async-rest/async-rest-webapp/pom.xml +++ b/examples/async-rest/async-rest-webapp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty example-async-rest - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 org.eclipse.jetty.example-async-rest diff --git a/examples/async-rest/pom.xml b/examples/async-rest/pom.xml index 241d39d2546..e8a8448f167 100644 --- a/examples/async-rest/pom.xml +++ b/examples/async-rest/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.examples examples-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT ../pom.xml 4.0.0 diff --git a/examples/embedded/pom.xml b/examples/embedded/pom.xml index fb31c5b0405..ad63d3a2001 100644 --- a/examples/embedded/pom.xml +++ b/examples/embedded/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.examples examples-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT ../pom.xml 4.0.0 diff --git a/examples/pom.xml b/examples/pom.xml index 0c0075d5bf6..885af48aa09 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT ../pom.xml org.eclipse.jetty.examples diff --git a/jetty-alpn/jetty-alpn-client/pom.xml b/jetty-alpn/jetty-alpn-client/pom.xml index d0616121e41..31e7baa17e9 100644 --- a/jetty-alpn/jetty-alpn-client/pom.xml +++ b/jetty-alpn/jetty-alpn-client/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-alpn-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-alpn-client diff --git a/jetty-alpn/jetty-alpn-server/pom.xml b/jetty-alpn/jetty-alpn-server/pom.xml index de68df7858c..7f31167a105 100644 --- a/jetty-alpn/jetty-alpn-server/pom.xml +++ b/jetty-alpn/jetty-alpn-server/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-alpn-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-alpn-server diff --git a/jetty-alpn/pom.xml b/jetty-alpn/pom.xml index 85154357a90..8faa43a968e 100644 --- a/jetty-alpn/pom.xml +++ b/jetty-alpn/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-alpn-parent diff --git a/jetty-annotations/pom.xml b/jetty-annotations/pom.xml index 31ee1e8e093..8a51ae812c0 100644 --- a/jetty-annotations/pom.xml +++ b/jetty-annotations/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-annotations diff --git a/jetty-ant/pom.xml b/jetty-ant/pom.xml index 29fbc436287..b597a2cd263 100644 --- a/jetty-ant/pom.xml +++ b/jetty-ant/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-ant diff --git a/jetty-cdi/pom.xml b/jetty-cdi/pom.xml index c18f7fba7ab..8b4666a6c88 100644 --- a/jetty-cdi/pom.xml +++ b/jetty-cdi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-cdi diff --git a/jetty-client/pom.xml b/jetty-client/pom.xml index defad19b51d..0e8e3a24370 100644 --- a/jetty-client/pom.xml +++ b/jetty-client/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 diff --git a/jetty-continuation/pom.xml b/jetty-continuation/pom.xml index f54695f42d2..f7b874d3fc3 100644 --- a/jetty-continuation/pom.xml +++ b/jetty-continuation/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-continuation diff --git a/jetty-deploy/pom.xml b/jetty-deploy/pom.xml index c501094dc3e..c78d6c1d1fb 100644 --- a/jetty-deploy/pom.xml +++ b/jetty-deploy/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-deploy diff --git a/jetty-distribution/pom.xml b/jetty-distribution/pom.xml index 661ca0ca033..b7c67a5d177 100644 --- a/jetty-distribution/pom.xml +++ b/jetty-distribution/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT jetty-distribution Jetty :: Distribution Assemblies diff --git a/jetty-fcgi/fcgi-client/pom.xml b/jetty-fcgi/fcgi-client/pom.xml index 64743578fb9..10a580a0fb4 100644 --- a/jetty-fcgi/fcgi-client/pom.xml +++ b/jetty-fcgi/fcgi-client/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.fcgi fcgi-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 diff --git a/jetty-fcgi/fcgi-server/pom.xml b/jetty-fcgi/fcgi-server/pom.xml index 03b552836eb..e617a1f270a 100644 --- a/jetty-fcgi/fcgi-server/pom.xml +++ b/jetty-fcgi/fcgi-server/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.fcgi fcgi-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 diff --git a/jetty-fcgi/pom.xml b/jetty-fcgi/pom.xml index 7cca2e55ecd..ec7243205df 100644 --- a/jetty-fcgi/pom.xml +++ b/jetty-fcgi/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 diff --git a/jetty-http-spi/pom.xml b/jetty-http-spi/pom.xml index 7d2ba0256ca..e861e66c3e9 100644 --- a/jetty-http-spi/pom.xml +++ b/jetty-http-spi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-http-spi diff --git a/jetty-http/pom.xml b/jetty-http/pom.xml index d033f367bea..8c786b8f2b8 100644 --- a/jetty-http/pom.xml +++ b/jetty-http/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-http diff --git a/jetty-io/pom.xml b/jetty-io/pom.xml index 0221e56b829..c070adeb1a4 100644 --- a/jetty-io/pom.xml +++ b/jetty-io/pom.xml @@ -2,7 +2,7 @@ jetty-project org.eclipse.jetty - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-io diff --git a/jetty-jaas/pom.xml b/jetty-jaas/pom.xml index c86cda58457..8b02e3839d2 100644 --- a/jetty-jaas/pom.xml +++ b/jetty-jaas/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-jaas diff --git a/jetty-jaspi/pom.xml b/jetty-jaspi/pom.xml index b6d9057cd33..5e4ea10687e 100644 --- a/jetty-jaspi/pom.xml +++ b/jetty-jaspi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-jaspi diff --git a/jetty-jmx/pom.xml b/jetty-jmx/pom.xml index 7d0f0c31d00..3672e08b445 100644 --- a/jetty-jmx/pom.xml +++ b/jetty-jmx/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-jmx diff --git a/jetty-jndi/pom.xml b/jetty-jndi/pom.xml index 1fded7d9ed8..ad832aa6b59 100644 --- a/jetty-jndi/pom.xml +++ b/jetty-jndi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-jndi diff --git a/jetty-jsp/pom.xml b/jetty-jsp/pom.xml index fb62079098f..ea6c8ac3e16 100644 --- a/jetty-jsp/pom.xml +++ b/jetty-jsp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-jsp diff --git a/jetty-jspc-maven-plugin/pom.xml b/jetty-jspc-maven-plugin/pom.xml index 81414fff871..f34604fb72d 100644 --- a/jetty-jspc-maven-plugin/pom.xml +++ b/jetty-jspc-maven-plugin/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-jspc-maven-plugin diff --git a/jetty-maven-plugin/pom.xml b/jetty-maven-plugin/pom.xml index 83790efb866..f64f66e47f8 100644 --- a/jetty-maven-plugin/pom.xml +++ b/jetty-maven-plugin/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-maven-plugin diff --git a/jetty-monitor/pom.xml b/jetty-monitor/pom.xml index 891c7f69d68..ee1ff3a7665 100644 --- a/jetty-monitor/pom.xml +++ b/jetty-monitor/pom.xml @@ -19,7 +19,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-monitor diff --git a/jetty-nosql/pom.xml b/jetty-nosql/pom.xml index 39618771fae..81833e69e09 100644 --- a/jetty-nosql/pom.xml +++ b/jetty-nosql/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-nosql diff --git a/jetty-osgi/jetty-osgi-alpn/pom.xml b/jetty-osgi/jetty-osgi-alpn/pom.xml index d664c0f7d08..b708db21574 100644 --- a/jetty-osgi/jetty-osgi-alpn/pom.xml +++ b/jetty-osgi/jetty-osgi-alpn/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-osgi-alpn diff --git a/jetty-osgi/jetty-osgi-boot-jsp/pom.xml b/jetty-osgi/jetty-osgi-boot-jsp/pom.xml index 93efface4d5..7c3339cb7ab 100644 --- a/jetty-osgi/jetty-osgi-boot-jsp/pom.xml +++ b/jetty-osgi/jetty-osgi-boot-jsp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-osgi-boot-jsp diff --git a/jetty-osgi/jetty-osgi-boot-warurl/pom.xml b/jetty-osgi/jetty-osgi-boot-warurl/pom.xml index 28db3086b56..2b4fb085909 100644 --- a/jetty-osgi/jetty-osgi-boot-warurl/pom.xml +++ b/jetty-osgi/jetty-osgi-boot-warurl/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT ../pom.xml 4.0.0 diff --git a/jetty-osgi/jetty-osgi-boot/pom.xml b/jetty-osgi/jetty-osgi-boot/pom.xml index c8661b94c56..60bee9cd7b5 100644 --- a/jetty-osgi/jetty-osgi-boot/pom.xml +++ b/jetty-osgi/jetty-osgi-boot/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-osgi-boot diff --git a/jetty-osgi/jetty-osgi-httpservice/pom.xml b/jetty-osgi/jetty-osgi-httpservice/pom.xml index 929abf75b3e..95d7c9aa8b2 100644 --- a/jetty-osgi/jetty-osgi-httpservice/pom.xml +++ b/jetty-osgi/jetty-osgi-httpservice/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-httpservice diff --git a/jetty-osgi/pom.xml b/jetty-osgi/pom.xml index 7776a757012..8a60580773e 100644 --- a/jetty-osgi/pom.xml +++ b/jetty-osgi/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT org.eclipse.jetty.osgi jetty-osgi-project diff --git a/jetty-osgi/test-jetty-osgi-context/pom.xml b/jetty-osgi/test-jetty-osgi-context/pom.xml index 42df47f5e5e..40f32beec27 100644 --- a/jetty-osgi/test-jetty-osgi-context/pom.xml +++ b/jetty-osgi/test-jetty-osgi-context/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 test-jetty-osgi-context diff --git a/jetty-osgi/test-jetty-osgi-webapp/pom.xml b/jetty-osgi/test-jetty-osgi-webapp/pom.xml index dbe5e946f63..077376c7a5b 100644 --- a/jetty-osgi/test-jetty-osgi-webapp/pom.xml +++ b/jetty-osgi/test-jetty-osgi-webapp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT ../pom.xml 4.0.0 diff --git a/jetty-osgi/test-jetty-osgi/pom.xml b/jetty-osgi/test-jetty-osgi/pom.xml index 74e82fa7b1c..570074ecc25 100644 --- a/jetty-osgi/test-jetty-osgi/pom.xml +++ b/jetty-osgi/test-jetty-osgi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT ../pom.xml 4.0.0 diff --git a/jetty-plus/pom.xml b/jetty-plus/pom.xml index 8b4fe5de358..62a7c335a3d 100644 --- a/jetty-plus/pom.xml +++ b/jetty-plus/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-plus diff --git a/jetty-proxy/pom.xml b/jetty-proxy/pom.xml index f05370e7c40..d984de9e7b4 100644 --- a/jetty-proxy/pom.xml +++ b/jetty-proxy/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-proxy diff --git a/jetty-quickstart/pom.xml b/jetty-quickstart/pom.xml index e25a2d20abc..9ad6faf3045 100644 --- a/jetty-quickstart/pom.xml +++ b/jetty-quickstart/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 org.eclipse.jetty diff --git a/jetty-rewrite/pom.xml b/jetty-rewrite/pom.xml index 1bf24b1b699..86d2951fd7c 100644 --- a/jetty-rewrite/pom.xml +++ b/jetty-rewrite/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-rewrite diff --git a/jetty-runner/pom.xml b/jetty-runner/pom.xml index c48e5dcc2a0..92864ba5770 100644 --- a/jetty-runner/pom.xml +++ b/jetty-runner/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-runner diff --git a/jetty-security/pom.xml b/jetty-security/pom.xml index eb342dd69f2..634f3ea90e9 100644 --- a/jetty-security/pom.xml +++ b/jetty-security/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-security diff --git a/jetty-server/pom.xml b/jetty-server/pom.xml index 4b050113c57..6de3073cf5a 100644 --- a/jetty-server/pom.xml +++ b/jetty-server/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-server diff --git a/jetty-servlet/pom.xml b/jetty-servlet/pom.xml index ed45020d79b..37c0197c533 100644 --- a/jetty-servlet/pom.xml +++ b/jetty-servlet/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-servlet diff --git a/jetty-servlets/pom.xml b/jetty-servlets/pom.xml index 676d1248a3f..0ef30d6a6d3 100644 --- a/jetty-servlets/pom.xml +++ b/jetty-servlets/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-servlets diff --git a/jetty-spdy/pom.xml b/jetty-spdy/pom.xml index 0964acced83..aee083e135e 100644 --- a/jetty-spdy/pom.xml +++ b/jetty-spdy/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 diff --git a/jetty-spdy/spdy-alpn-tests/pom.xml b/jetty-spdy/spdy-alpn-tests/pom.xml index 1cd632188e8..1ff5db8d963 100644 --- a/jetty-spdy/spdy-alpn-tests/pom.xml +++ b/jetty-spdy/spdy-alpn-tests/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 diff --git a/jetty-spdy/spdy-client/pom.xml b/jetty-spdy/spdy-client/pom.xml index 60d0beb43a8..d8e2a5e95a8 100644 --- a/jetty-spdy/spdy-client/pom.xml +++ b/jetty-spdy/spdy-client/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 diff --git a/jetty-spdy/spdy-core/pom.xml b/jetty-spdy/spdy-core/pom.xml index 0171b96124d..d08d1bba459 100644 --- a/jetty-spdy/spdy-core/pom.xml +++ b/jetty-spdy/spdy-core/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 diff --git a/jetty-spdy/spdy-example-webapp/pom.xml b/jetty-spdy/spdy-example-webapp/pom.xml index 0df85ac68d2..edd9e8ce3ce 100644 --- a/jetty-spdy/spdy-example-webapp/pom.xml +++ b/jetty-spdy/spdy-example-webapp/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 spdy-example-webapp diff --git a/jetty-spdy/spdy-http-client-transport/pom.xml b/jetty-spdy/spdy-http-client-transport/pom.xml index 1689cea8086..ce96fa4a9ee 100644 --- a/jetty-spdy/spdy-http-client-transport/pom.xml +++ b/jetty-spdy/spdy-http-client-transport/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 diff --git a/jetty-spdy/spdy-http-common/pom.xml b/jetty-spdy/spdy-http-common/pom.xml index 270139655ff..1ecabb8fde0 100644 --- a/jetty-spdy/spdy-http-common/pom.xml +++ b/jetty-spdy/spdy-http-common/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 diff --git a/jetty-spdy/spdy-http-server/pom.xml b/jetty-spdy/spdy-http-server/pom.xml index 4041c36732f..734e4fb14e5 100644 --- a/jetty-spdy/spdy-http-server/pom.xml +++ b/jetty-spdy/spdy-http-server/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 spdy-http-server diff --git a/jetty-spdy/spdy-server/pom.xml b/jetty-spdy/spdy-server/pom.xml index a39327d2f97..217d6405771 100644 --- a/jetty-spdy/spdy-server/pom.xml +++ b/jetty-spdy/spdy-server/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 diff --git a/jetty-spring/pom.xml b/jetty-spring/pom.xml index 3fe022aa4cc..a1dcddc169e 100644 --- a/jetty-spring/pom.xml +++ b/jetty-spring/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-spring diff --git a/jetty-start/pom.xml b/jetty-start/pom.xml index ee6f2b2b046..1b8f034da63 100644 --- a/jetty-start/pom.xml +++ b/jetty-start/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-start diff --git a/jetty-util-ajax/pom.xml b/jetty-util-ajax/pom.xml index 7c295181b88..ba232226234 100644 --- a/jetty-util-ajax/pom.xml +++ b/jetty-util-ajax/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-util-ajax diff --git a/jetty-util/pom.xml b/jetty-util/pom.xml index 57ab70fda37..541b1125a8e 100644 --- a/jetty-util/pom.xml +++ b/jetty-util/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-util diff --git a/jetty-webapp/pom.xml b/jetty-webapp/pom.xml index 4d10b681213..926a4cd8035 100644 --- a/jetty-webapp/pom.xml +++ b/jetty-webapp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-webapp diff --git a/jetty-websocket/javax-websocket-client-impl/pom.xml b/jetty-websocket/javax-websocket-client-impl/pom.xml index 9f8736ef2fc..08fecca5e28 100644 --- a/jetty-websocket/javax-websocket-client-impl/pom.xml +++ b/jetty-websocket/javax-websocket-client-impl/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/javax-websocket-server-impl/pom.xml b/jetty-websocket/javax-websocket-server-impl/pom.xml index ef63bf5af0c..85ea17f8ca9 100644 --- a/jetty-websocket/javax-websocket-server-impl/pom.xml +++ b/jetty-websocket/javax-websocket-server-impl/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/pom.xml b/jetty-websocket/pom.xml index 553765f47ec..dbc00f83f2b 100644 --- a/jetty-websocket/pom.xml +++ b/jetty-websocket/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/websocket-api/pom.xml b/jetty-websocket/websocket-api/pom.xml index d8798661a86..c8c9fbb3c3d 100644 --- a/jetty-websocket/websocket-api/pom.xml +++ b/jetty-websocket/websocket-api/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/websocket-client/pom.xml b/jetty-websocket/websocket-client/pom.xml index 528cce984cf..83f218b5d0d 100644 --- a/jetty-websocket/websocket-client/pom.xml +++ b/jetty-websocket/websocket-client/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/websocket-common/pom.xml b/jetty-websocket/websocket-common/pom.xml index c9d6f12d6a2..a550fc6f0a9 100644 --- a/jetty-websocket/websocket-common/pom.xml +++ b/jetty-websocket/websocket-common/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/websocket-server/pom.xml b/jetty-websocket/websocket-server/pom.xml index 3902157e55b..adfae0410a2 100644 --- a/jetty-websocket/websocket-server/pom.xml +++ b/jetty-websocket/websocket-server/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/websocket-servlet/pom.xml b/jetty-websocket/websocket-servlet/pom.xml index fbfe4161cfd..089fb800afe 100644 --- a/jetty-websocket/websocket-servlet/pom.xml +++ b/jetty-websocket/websocket-servlet/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 diff --git a/jetty-xml/pom.xml b/jetty-xml/pom.xml index b67e5c109b3..ad99d75856c 100644 --- a/jetty-xml/pom.xml +++ b/jetty-xml/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jetty-xml diff --git a/pom.xml b/pom.xml index db26676e6b3..fc489b8a551 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ 23 jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT Jetty :: Project http://www.eclipse.org/jetty pom diff --git a/tests/pom.xml b/tests/pom.xml index 400630bdade..15911b49972 100644 --- a/tests/pom.xml +++ b/tests/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty jetty-project - 9.2.26.v20180806 + 9.2.27-SNAPSHOT ../pom.xml org.eclipse.jetty.tests diff --git a/tests/test-continuation/pom.xml b/tests/test-continuation/pom.xml index 8ef796a4201..ee6b4f54d27 100644 --- a/tests/test-continuation/pom.xml +++ b/tests/test-continuation/pom.xml @@ -20,7 +20,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT ../pom.xml 4.0.0 diff --git a/tests/test-integration/pom.xml b/tests/test-integration/pom.xml index 5bbdd42c1d7..22d6dbb705e 100644 --- a/tests/test-integration/pom.xml +++ b/tests/test-integration/pom.xml @@ -20,7 +20,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 test-integration diff --git a/tests/test-jmx/jmx-webapp-it/pom.xml b/tests/test-jmx/jmx-webapp-it/pom.xml index 26b14bea2c9..6b4c877e49c 100644 --- a/tests/test-jmx/jmx-webapp-it/pom.xml +++ b/tests/test-jmx/jmx-webapp-it/pom.xml @@ -20,7 +20,7 @@ org.eclipse.jetty.tests test-jmx-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 jmx-webapp-it diff --git a/tests/test-jmx/jmx-webapp/pom.xml b/tests/test-jmx/jmx-webapp/pom.xml index d0d94c604ac..b5836c53d09 100644 --- a/tests/test-jmx/jmx-webapp/pom.xml +++ b/tests/test-jmx/jmx-webapp/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests test-jmx-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT jmx-webapp war diff --git a/tests/test-jmx/pom.xml b/tests/test-jmx/pom.xml index 2562e237c47..dbe38b67b5a 100644 --- a/tests/test-jmx/pom.xml +++ b/tests/test-jmx/pom.xml @@ -20,7 +20,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT 4.0.0 test-jmx-parent diff --git a/tests/test-loginservice/pom.xml b/tests/test-loginservice/pom.xml index d9d9ab403be..f81d8112243 100644 --- a/tests/test-loginservice/pom.xml +++ b/tests/test-loginservice/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT test-loginservice Jetty Tests :: Login Service diff --git a/tests/test-quickstart/pom.xml b/tests/test-quickstart/pom.xml index 2a48f2438fc..14bc941608f 100644 --- a/tests/test-quickstart/pom.xml +++ b/tests/test-quickstart/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT ../pom.xml 4.0.0 diff --git a/tests/test-sessions/pom.xml b/tests/test-sessions/pom.xml index 1d894e7e6bf..facd3f681c1 100644 --- a/tests/test-sessions/pom.xml +++ b/tests/test-sessions/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT test-sessions-parent Jetty Tests :: Sessions :: Parent diff --git a/tests/test-sessions/test-hash-sessions/pom.xml b/tests/test-sessions/test-hash-sessions/pom.xml index 375e8ecc4ed..1846f68e049 100644 --- a/tests/test-sessions/test-hash-sessions/pom.xml +++ b/tests/test-sessions/test-hash-sessions/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT test-hash-sessions Jetty Tests :: Sessions :: Hash diff --git a/tests/test-sessions/test-jdbc-sessions/pom.xml b/tests/test-sessions/test-jdbc-sessions/pom.xml index 025717bc05d..75282f128cc 100644 --- a/tests/test-sessions/test-jdbc-sessions/pom.xml +++ b/tests/test-sessions/test-jdbc-sessions/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT test-jdbc-sessions Jetty Tests :: Sessions :: JDBC diff --git a/tests/test-sessions/test-mongodb-sessions/pom.xml b/tests/test-sessions/test-mongodb-sessions/pom.xml index 55d3a1398f5..2ba303e53a3 100644 --- a/tests/test-sessions/test-mongodb-sessions/pom.xml +++ b/tests/test-sessions/test-mongodb-sessions/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT test-mongodb-sessions Jetty Tests :: Sessions :: Mongo diff --git a/tests/test-sessions/test-sessions-common/pom.xml b/tests/test-sessions/test-sessions-common/pom.xml index 9b33930fb0e..e42a35f24ba 100644 --- a/tests/test-sessions/test-sessions-common/pom.xml +++ b/tests/test-sessions/test-sessions-common/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT test-sessions-common Jetty Tests :: Sessions :: Common diff --git a/tests/test-webapps/pom.xml b/tests/test-webapps/pom.xml index 0b3f7d6a4dd..3b1608f2e57 100644 --- a/tests/test-webapps/pom.xml +++ b/tests/test-webapps/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT ../pom.xml test-webapps-parent diff --git a/tests/test-webapps/test-jaas-webapp/pom.xml b/tests/test-webapps/test-jaas-webapp/pom.xml index d339f3fff94..71d64bbddab 100644 --- a/tests/test-webapps/test-jaas-webapp/pom.xml +++ b/tests/test-webapps/test-jaas-webapp/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT test-jaas-webapp Jetty Tests :: WebApp :: JAAS diff --git a/tests/test-webapps/test-jetty-webapp/pom.xml b/tests/test-webapps/test-jetty-webapp/pom.xml index 25f15ec6afe..9caaaf9089e 100644 --- a/tests/test-webapps/test-jetty-webapp/pom.xml +++ b/tests/test-webapps/test-jetty-webapp/pom.xml @@ -20,7 +20,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT ../pom.xml 4.0.0 diff --git a/tests/test-webapps/test-jndi-webapp/pom.xml b/tests/test-webapps/test-jndi-webapp/pom.xml index 20208049b42..934b703c9cb 100644 --- a/tests/test-webapps/test-jndi-webapp/pom.xml +++ b/tests/test-webapps/test-jndi-webapp/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT test-jndi-webapp Jetty Tests :: WebApp :: JNDI diff --git a/tests/test-webapps/test-mock-resources/pom.xml b/tests/test-webapps/test-mock-resources/pom.xml index 5bb2975e126..b5831ad89cb 100644 --- a/tests/test-webapps/test-mock-resources/pom.xml +++ b/tests/test-webapps/test-mock-resources/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT Jetty Tests :: WebApp :: Mock Resources test-mock-resources diff --git a/tests/test-webapps/test-proxy-webapp/pom.xml b/tests/test-webapps/test-proxy-webapp/pom.xml index 8f4c62e5c39..a037a816178 100644 --- a/tests/test-webapps/test-proxy-webapp/pom.xml +++ b/tests/test-webapps/test-proxy-webapp/pom.xml @@ -20,7 +20,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT ../pom.xml 4.0.0 diff --git a/tests/test-webapps/test-servlet-spec/pom.xml b/tests/test-webapps/test-servlet-spec/pom.xml index debb66d1600..a4bf8c7b138 100644 --- a/tests/test-webapps/test-servlet-spec/pom.xml +++ b/tests/test-webapps/test-servlet-spec/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT test-servlet-spec-parent Jetty Tests :: Spec Test WebApp :: Parent diff --git a/tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml b/tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml index fa13db399cc..d48a34d792d 100644 --- a/tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml +++ b/tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-servlet-spec-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT test-container-initializer jar diff --git a/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml b/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml index 975d778e406..536b0d4f030 100644 --- a/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml +++ b/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-servlet-spec-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT Jetty Tests :: Webapps :: Spec Webapp test-spec-webapp diff --git a/tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml b/tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml index ace589208f8..18bc5075c0a 100644 --- a/tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml +++ b/tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-servlet-spec-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT Jetty Tests :: WebApp :: Servlet Spec :: Fragment Jar org.eclipse.jetty.tests diff --git a/tests/test-webapps/test-webapp-rfc2616/pom.xml b/tests/test-webapps/test-webapp-rfc2616/pom.xml index 4ebd1f4ccae..f2192ab49ec 100644 --- a/tests/test-webapps/test-webapp-rfc2616/pom.xml +++ b/tests/test-webapps/test-webapp-rfc2616/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.2.26.v20180806 + 9.2.27-SNAPSHOT test-webapp-rfc2616 Jetty Tests :: WebApp :: RFC2616 From e7a6a079c78bce859c80fdb042e646874e802533 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Tue, 14 Aug 2018 15:32:37 -0500 Subject: [PATCH 06/88] Attempting to fix jetty-9.2.x build --- Jenkinsfile | 112 ++++++++++++++++++++++++++++++++-------------------- 1 file changed, 70 insertions(+), 42 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 9eb318be89f..f7760dc3152 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -2,12 +2,16 @@ node { // System Dependent Locations - def mvntool = tool name: 'maven3', type: 'hudson.tasks.Maven$MavenInstallation' + def mvntool = tool name: 'maven3.5', type: 'hudson.tasks.Maven$MavenInstallation' def jdktool = tool name: 'jdk7', type: 'hudson.model.JDK' + def mvnName = 'maven3.5' + def localRepo = "${env.JENKINS_HOME}/${env.EXECUTOR_NUMBER}" // ".repository" // + def settingsName = 'oss-settings.xml' + def mavenOpts = '-Xms1g -Xmx4g -XX:MaxPermSize=512m -Djava.awt.headless=true -Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2' // Environment List mvnEnv = ["PATH+MVN=${mvntool}/bin", "PATH+JDK=${jdktool}/bin", "JAVA_HOME=${jdktool}/", "MAVEN_HOME=${mvntool}"] - mvnEnv.add("MAVEN_OPTS=-Xms256m -Xmx1024m -XX:MaxPermSize=512m -Djava.awt.headless=true") + mvnEnv.add("MAVEN_OPTS=$mavenOpts") try { @@ -24,7 +28,15 @@ node { stage('Compile') { withEnv(mvnEnv) { timeout(time: 15, unit: 'MINUTES') { - sh "mvn -B clean install -Dtest=None" + withmaven( + maven: mvnName, + jdk: "$jdk", + publisherStrategy: 'EXPLICIT', + globalMavenSettingsConfig: settingsName, + mavenOpts: mavenOpts, + mavenLocalRepo: localRepo) { + sh "mvn -B clean install -Dtest=None" + } } } } @@ -38,7 +50,15 @@ node { stage('Javadoc') { withEnv(mvnEnv) { timeout(time: 15, unit: 'MINUTES') { - sh "mvn -B javadoc:javadoc" + withmaven( + maven: mvnName, + jdk: "$jdk", + publisherStrategy: 'EXPLICIT', + globalMavenSettingsConfig: settingsName, + mavenOpts: mavenOpts, + mavenLocalRepo: localRepo) { + sh "mvn -B javadoc:javadoc" + } } } } @@ -52,43 +72,51 @@ node { stage('Test') { withEnv(mvnEnv) { timeout(time: 60, unit: 'MINUTES') { - // Run test phase / ignore test failures - sh "mvn -B install -Dmaven.test.failure.ignore=true" - // Report failures in the jenkins UI - step([$class: 'JUnitResultArchiver', - testResults: '**/target/surefire-reports/TEST-*.xml']) - // Collect up the jacoco execution results - def jacocoExcludes = - // build tools - "**/org/eclipse/jetty/ant/**" + - ",**/org/eclipse/jetty/maven/**" + - ",**/org/eclipse/jetty/jspc/**" + - // example code / documentation - ",**/org/eclipse/jetty/embedded/**" + - ",**/org/eclipse/jetty/asyncrest/**" + - ",**/org/eclipse/jetty/demo/**" + - // special environments / late integrations - ",**/org/eclipse/jetty/gcloud/**" + - ",**/org/eclipse/jetty/infinispan/**" + - ",**/org/eclipse/jetty/osgi/**" + - ",**/org/eclipse/jetty/spring/**" + - ",**/org/eclipse/jetty/http/spi/**" + - // test classes - ",**/org/eclipse/jetty/tests/**" + - ",**/org/eclipse/jetty/test/**"; - step([$class: 'JacocoPublisher', - inclusionPattern: '**/org/eclipse/jetty/**/*.class', - exclusionPattern: jacocoExcludes, - execPattern: '**/target/jacoco.exec', - classPattern: '**/target/classes', - sourcePattern: '**/src/main/java']) - // Report on Maven and Javadoc warnings - step([$class: 'WarningsPublisher', - consoleParsers: [ - [parserName: 'Maven'], - [parserName: 'JavaDoc'], - [parserName: 'JavaC'] - ]]) + withmaven( + maven: mvnName, + jdk: "$jdk", + publisherStrategy: 'EXPLICIT', + globalMavenSettingsConfig: settingsName, + mavenOpts: mavenOpts, + mavenLocalRepo: localRepo) { + // Run test phase / ignore test failures + sh "mvn -B install -Dmaven.test.failure.ignore=true" + // Report failures in the jenkins UI + step([$class : 'JUnitResultArchiver', + testResults: '**/target/surefire-reports/TEST-*.xml']) + // Collect up the jacoco execution results + def jacocoExcludes = + // build tools + "**/org/eclipse/jetty/ant/**" + + ",**/org/eclipse/jetty/maven/**" + + ",**/org/eclipse/jetty/jspc/**" + + // example code / documentation + ",**/org/eclipse/jetty/embedded/**" + + ",**/org/eclipse/jetty/asyncrest/**" + + ",**/org/eclipse/jetty/demo/**" + + // special environments / late integrations + ",**/org/eclipse/jetty/gcloud/**" + + ",**/org/eclipse/jetty/infinispan/**" + + ",**/org/eclipse/jetty/osgi/**" + + ",**/org/eclipse/jetty/spring/**" + + ",**/org/eclipse/jetty/http/spi/**" + + // test classes + ",**/org/eclipse/jetty/tests/**" + + ",**/org/eclipse/jetty/test/**"; + step([$class: 'JacocoPublisher', + inclusionPattern: '**/org/eclipse/jetty/**/*.class', + exclusionPattern: jacocoExcludes, + execPattern: '**/target/jacoco.exec', + classPattern: '**/target/classes', + sourcePattern: '**/src/main/java']) + // Report on Maven and Javadoc warnings + step([$class: 'WarningsPublisher', + consoleParsers: [ + [parserName: 'Maven'], + [parserName: 'JavaDoc'], + [parserName: 'JavaC'] + ]]) + } } if(isUnstable()) { @@ -108,7 +136,7 @@ def isActiveBranch() { def branchName = "${env.BRANCH_NAME}" return ( branchName == "master" || - branchName.startsWith("jetty-") ); + ( branchName.startsWith("jetty-") && branchName.endsWith(".x") ) ) } // Test if the Jenkins Pipeline or Step has marked the From 589f4c04a40cf08a501ae6015b5b322da64abf83 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Tue, 14 Aug 2018 15:35:52 -0500 Subject: [PATCH 07/88] Attempting to fix jetty-9.2.x build --- Jenkinsfile | 124 ++++++++++------------------------------------------ 1 file changed, 24 insertions(+), 100 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index f7760dc3152..8a34460cef1 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -13,62 +13,42 @@ node { List mvnEnv = ["PATH+MVN=${mvntool}/bin", "PATH+JDK=${jdktool}/bin", "JAVA_HOME=${jdktool}/", "MAVEN_HOME=${mvntool}"] mvnEnv.add("MAVEN_OPTS=$mavenOpts") - try - { - stage('Checkout') { - checkout scm - } - } catch (Exception e) { - notifyBuild("Checkout Failure") - throw e + stage('Checkout') { + checkout scm } - try - { - stage('Compile') { - withEnv(mvnEnv) { - timeout(time: 15, unit: 'MINUTES') { - withmaven( - maven: mvnName, - jdk: "$jdk", - publisherStrategy: 'EXPLICIT', - globalMavenSettingsConfig: settingsName, - mavenOpts: mavenOpts, - mavenLocalRepo: localRepo) { - sh "mvn -B clean install -Dtest=None" - } + stage('Compile') { + withEnv(mvnEnv) { + timeout(time: 15, unit: 'MINUTES') { + withmaven( + maven: mvnName, + jdk: "$jdk", + publisherStrategy: 'EXPLICIT', + globalMavenSettingsConfig: settingsName, + mavenOpts: mavenOpts, + mavenLocalRepo: localRepo) { + sh "mvn -B clean install -Dtest=None" } } } - } catch(Exception e) { - notifyBuild("Compile Failure") - throw e } - try - { - stage('Javadoc') { - withEnv(mvnEnv) { - timeout(time: 15, unit: 'MINUTES') { - withmaven( - maven: mvnName, - jdk: "$jdk", - publisherStrategy: 'EXPLICIT', - globalMavenSettingsConfig: settingsName, - mavenOpts: mavenOpts, - mavenLocalRepo: localRepo) { - sh "mvn -B javadoc:javadoc" - } + stage('Javadoc') { + withEnv(mvnEnv) { + timeout(time: 15, unit: 'MINUTES') { + withmaven( + maven: mvnName, + jdk: "$jdk", + publisherStrategy: 'EXPLICIT', + globalMavenSettingsConfig: settingsName, + mavenOpts: mavenOpts, + mavenLocalRepo: localRepo) { + sh "mvn -B javadoc:javadoc" } } } - } catch(Exception e) { - notifyBuild("Javadoc Failure") - throw e } - try - { stage('Test') { withEnv(mvnEnv) { timeout(time: 60, unit: 'MINUTES') { @@ -118,64 +98,8 @@ node { ]]) } } - if(isUnstable()) - { - notifyBuild("Unstable / Test Errors") - } } } - } catch(Exception e) { - notifyBuild("Test Failure") - throw e - } } -// True if this build is part of the "active" branches -// for Jetty. -def isActiveBranch() -{ - def branchName = "${env.BRANCH_NAME}" - return ( branchName == "master" || - ( branchName.startsWith("jetty-") && branchName.endsWith(".x") ) ) -} - -// Test if the Jenkins Pipeline or Step has marked the -// current build as unstable -def isUnstable() -{ - return currentBuild.result == "UNSTABLE" -} - -// Send a notification about the build status -def notifyBuild(String buildStatus) -{ - if ( !isActiveBranch() ) - { - // don't send notifications on transient branches - return - } - - // default the value - buildStatus = buildStatus ?: "UNKNOWN" - - def email = "${env.EMAILADDRESS}" - def summary = "${env.JOB_NAME}#${env.BUILD_NUMBER} - ${buildStatus}" - def detail = """

Job: ${env.JOB_NAME} [#${env.BUILD_NUMBER}]

-

${buildStatus}

- - - - -
Build${env.BUILD_URL}
Console${env.BUILD_URL}console
Test Report${env.BUILD_URL}testReport/
- """ - - emailext ( - to: email, - subject: summary, - body: detail - ) - -} - - // vim: et:ts=2:sw=2:ft=groovy From 6ec3321c16b00fcc7f001935719f84b4e879b431 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Tue, 14 Aug 2018 15:37:39 -0500 Subject: [PATCH 08/88] Attempting to fix jetty-9.2.x build --- Jenkinsfile | 103 ++++++++++++++++++++++++++-------------------------- 1 file changed, 52 insertions(+), 51 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 8a34460cef1..5da4a893415 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,9 +1,10 @@ #!groovy -node { +node("linux") { // System Dependent Locations + def jdk = 'jdk7' def mvntool = tool name: 'maven3.5', type: 'hudson.tasks.Maven$MavenInstallation' - def jdktool = tool name: 'jdk7', type: 'hudson.model.JDK' + def jdktool = tool name: $jdk, type: 'hudson.model.JDK' def mvnName = 'maven3.5' def localRepo = "${env.JENKINS_HOME}/${env.EXECUTOR_NUMBER}" // ".repository" // def settingsName = 'oss-settings.xml' @@ -49,57 +50,57 @@ node { } } - stage('Test') { - withEnv(mvnEnv) { - timeout(time: 60, unit: 'MINUTES') { - withmaven( - maven: mvnName, - jdk: "$jdk", - publisherStrategy: 'EXPLICIT', - globalMavenSettingsConfig: settingsName, - mavenOpts: mavenOpts, - mavenLocalRepo: localRepo) { - // Run test phase / ignore test failures - sh "mvn -B install -Dmaven.test.failure.ignore=true" - // Report failures in the jenkins UI - step([$class : 'JUnitResultArchiver', - testResults: '**/target/surefire-reports/TEST-*.xml']) - // Collect up the jacoco execution results - def jacocoExcludes = - // build tools - "**/org/eclipse/jetty/ant/**" + - ",**/org/eclipse/jetty/maven/**" + - ",**/org/eclipse/jetty/jspc/**" + - // example code / documentation - ",**/org/eclipse/jetty/embedded/**" + - ",**/org/eclipse/jetty/asyncrest/**" + - ",**/org/eclipse/jetty/demo/**" + - // special environments / late integrations - ",**/org/eclipse/jetty/gcloud/**" + - ",**/org/eclipse/jetty/infinispan/**" + - ",**/org/eclipse/jetty/osgi/**" + - ",**/org/eclipse/jetty/spring/**" + - ",**/org/eclipse/jetty/http/spi/**" + - // test classes - ",**/org/eclipse/jetty/tests/**" + - ",**/org/eclipse/jetty/test/**"; - step([$class: 'JacocoPublisher', - inclusionPattern: '**/org/eclipse/jetty/**/*.class', - exclusionPattern: jacocoExcludes, - execPattern: '**/target/jacoco.exec', - classPattern: '**/target/classes', - sourcePattern: '**/src/main/java']) - // Report on Maven and Javadoc warnings - step([$class: 'WarningsPublisher', - consoleParsers: [ - [parserName: 'Maven'], - [parserName: 'JavaDoc'], - [parserName: 'JavaC'] - ]]) - } - } + stage('Test') { + withEnv(mvnEnv) { + timeout(time: 60, unit: 'MINUTES') { + withmaven( + maven: mvnName, + jdk: "$jdk", + publisherStrategy: 'EXPLICIT', + globalMavenSettingsConfig: settingsName, + mavenOpts: mavenOpts, + mavenLocalRepo: localRepo) { + // Run test phase / ignore test failures + sh "mvn -B install -Dmaven.test.failure.ignore=true" + // Report failures in the jenkins UI + step([$class : 'JUnitResultArchiver', + testResults: '**/target/surefire-reports/TEST-*.xml']) + // Collect up the jacoco execution results + def jacocoExcludes = + // build tools + "**/org/eclipse/jetty/ant/**" + + ",**/org/eclipse/jetty/maven/**" + + ",**/org/eclipse/jetty/jspc/**" + + // example code / documentation + ",**/org/eclipse/jetty/embedded/**" + + ",**/org/eclipse/jetty/asyncrest/**" + + ",**/org/eclipse/jetty/demo/**" + + // special environments / late integrations + ",**/org/eclipse/jetty/gcloud/**" + + ",**/org/eclipse/jetty/infinispan/**" + + ",**/org/eclipse/jetty/osgi/**" + + ",**/org/eclipse/jetty/spring/**" + + ",**/org/eclipse/jetty/http/spi/**" + + // test classes + ",**/org/eclipse/jetty/tests/**" + + ",**/org/eclipse/jetty/test/**"; + step([$class: 'JacocoPublisher', + inclusionPattern: '**/org/eclipse/jetty/**/*.class', + exclusionPattern: jacocoExcludes, + execPattern: '**/target/jacoco.exec', + classPattern: '**/target/classes', + sourcePattern: '**/src/main/java']) + // Report on Maven and Javadoc warnings + step([$class: 'WarningsPublisher', + consoleParsers: [ + [parserName: 'Maven'], + [parserName: 'JavaDoc'], + [parserName: 'JavaC'] + ]]) + } } } + } } // vim: et:ts=2:sw=2:ft=groovy From 283fa32e5962982a2f867b37d1557c966baef581 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Tue, 14 Aug 2018 15:39:08 -0500 Subject: [PATCH 09/88] Attempting to fix jetty-9.2.x build --- Jenkinsfile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 5da4a893415..9a355449f0e 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,10 +1,11 @@ #!groovy +def jdk = 'jdk7' + node("linux") { // System Dependent Locations - def jdk = 'jdk7' def mvntool = tool name: 'maven3.5', type: 'hudson.tasks.Maven$MavenInstallation' - def jdktool = tool name: $jdk, type: 'hudson.model.JDK' + def jdktool = tool name: "$jdk", type: 'hudson.model.JDK' def mvnName = 'maven3.5' def localRepo = "${env.JENKINS_HOME}/${env.EXECUTOR_NUMBER}" // ".repository" // def settingsName = 'oss-settings.xml' From 73d940680aa8bbc2fd521d1fe8026e6bd1c6a4d0 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Tue, 14 Aug 2018 15:39:58 -0500 Subject: [PATCH 10/88] Attempting to fix jetty-9.2.x build --- Jenkinsfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 9a355449f0e..ad11acdc88a 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -22,7 +22,7 @@ node("linux") { stage('Compile') { withEnv(mvnEnv) { timeout(time: 15, unit: 'MINUTES') { - withmaven( + withMaven( maven: mvnName, jdk: "$jdk", publisherStrategy: 'EXPLICIT', @@ -38,7 +38,7 @@ node("linux") { stage('Javadoc') { withEnv(mvnEnv) { timeout(time: 15, unit: 'MINUTES') { - withmaven( + withMaven( maven: mvnName, jdk: "$jdk", publisherStrategy: 'EXPLICIT', @@ -54,7 +54,7 @@ node("linux") { stage('Test') { withEnv(mvnEnv) { timeout(time: 60, unit: 'MINUTES') { - withmaven( + withMaven( maven: mvnName, jdk: "$jdk", publisherStrategy: 'EXPLICIT', From e0a92f6181fcbc2cf168250cd66fbe5a37aa407b Mon Sep 17 00:00:00 2001 From: Roland Grunberg Date: Tue, 14 Aug 2018 19:26:37 -0400 Subject: [PATCH 11/88] Issue #2794 - Add profile for jar signing with eclipse-jarsigner-plugin. (#2803) Create a profile 'eclipse-sign' that is enabled when the property by the same name is defined, in order to handle the signing of Eclipse bundles by the configured signing service. Signed-off-by: Roland Grunberg --- pom.xml | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/pom.xml b/pom.xml index fc489b8a551..c98ee1d6811 100644 --- a/pom.xml +++ b/pom.xml @@ -21,6 +21,8 @@ undefined undefined + 1.2.0 + 1.1.5 scm:git:https://github.com/eclipse/jetty.project.git @@ -1052,6 +1054,60 @@ 7.1.3.v20150130 + + eclipse-sign + + + eclipse-sign + + + + + + org.eclipse.tycho.extras + tycho-pack200a-plugin + ${tycho-version} + + + pack200-normalize + + normalize + + package + + + + + org.eclipse.cbi.maven.plugins + eclipse-jarsigner-plugin + ${cbi-plugins.version} + + + sign + package + + sign + + + + + + org.eclipse.tycho.extras + tycho-pack200b-plugin + ${tycho-version} + + + pack200-pack + + pack + + package + + + + + + 8u00 @@ -1461,4 +1517,15 @@ + + + + cbi-releases + https://repo.eclipse.org/content/repositories/cbi-releases/ + + false + + + + From 74e30605ed39cbe98a5838f94b680618f2330af2 Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Wed, 15 Aug 2018 22:10:26 +1000 Subject: [PATCH 12/88] should fix osgi test with missing dependencies (#2809) Signed-off-by: olivier lamy --- jetty-osgi/test-jetty-osgi/pom.xml | 3 +++ .../org/eclipse/jetty/osgi/test/TestJettyOSGiBootCore.java | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/jetty-osgi/test-jetty-osgi/pom.xml b/jetty-osgi/test-jetty-osgi/pom.xml index 570074ecc25..7b3316522a5 100644 --- a/jetty-osgi/test-jetty-osgi/pom.xml +++ b/jetty-osgi/test-jetty-osgi/pom.xml @@ -391,6 +391,9 @@ -Dmortbay-alpn-boot=${settings.localRepository}/org/mortbay/jetty/alpn/alpn-boot/${alpn.version}/alpn-boot-${alpn.version}.jar + + ${settings.localRepository} +
diff --git a/jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestJettyOSGiBootCore.java b/jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestJettyOSGiBootCore.java index 8baf71a67b8..519b78aae1b 100644 --- a/jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestJettyOSGiBootCore.java +++ b/jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestJettyOSGiBootCore.java @@ -28,6 +28,7 @@ import java.util.List; import javax.inject.Inject; +import org.eclipse.jetty.util.StringUtil; import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; @@ -82,6 +83,10 @@ public class TestJettyOSGiBootCore { List + org.apache.maven.plugins maven-dependency-plugin + org.ops4j.pax.exam diff --git a/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/CookiePatternRuleTest.java b/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/CookiePatternRuleTest.java index 651fd354971..edfa3de5b24 100644 --- a/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/CookiePatternRuleTest.java +++ b/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/CookiePatternRuleTest.java @@ -42,7 +42,7 @@ import java.io.StringReader; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.*; -import static org.junit.Assert.fail; +import static org.junit.jupiter.api.Assertions.fail; public class CookiePatternRuleTest diff --git a/jetty-server/src/test/java/org/eclipse/jetty/server/CustomResourcesMonitorTest.java b/jetty-server/src/test/java/org/eclipse/jetty/server/CustomResourcesMonitorTest.java index 57b4a5fe9a4..0048f34fcdb 100644 --- a/jetty-server/src/test/java/org/eclipse/jetty/server/CustomResourcesMonitorTest.java +++ b/jetty-server/src/test/java/org/eclipse/jetty/server/CustomResourcesMonitorTest.java @@ -27,7 +27,6 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; - import java.io.IOException; import java.io.InputStream; import java.net.Socket; @@ -38,7 +37,8 @@ import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; -import static org.junit.Assert.*; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.jupiter.api.Assertions.*; public class CustomResourcesMonitorTest { @@ -111,28 +111,14 @@ public class CustomResourcesMonitorTest InputStream input1 = socket1.getInputStream(); assertTrue(_fileOnDirectoryMonitor.isLowOnResources()); - try - { - input1.read(); - fail(); - } - catch (SocketTimeoutException expected) - { - } + assertThrows(SocketTimeoutException.class, () -> input1.read()); // Wait a couple of lowResources idleTimeouts. Thread.sleep(2 * lowResourcesIdleTimeout); // Verify the new socket is still open. assertTrue(_fileOnDirectoryMonitor.isLowOnResources()); - try - { - input1.read(); - fail(); - } - catch (SocketTimeoutException expected) - { - } + assertThrows(SocketTimeoutException.class, () -> input1.read()); Files.delete( tmpFile ); diff --git a/jetty-server/src/test/java/org/eclipse/jetty/server/LowResourcesMonitorTest.java b/jetty-server/src/test/java/org/eclipse/jetty/server/LowResourcesMonitorTest.java index 9d7bf40fcba..6cebfcdada6 100644 --- a/jetty-server/src/test/java/org/eclipse/jetty/server/LowResourcesMonitorTest.java +++ b/jetty-server/src/test/java/org/eclipse/jetty/server/LowResourcesMonitorTest.java @@ -23,6 +23,7 @@ import org.eclipse.jetty.util.thread.QueuedThreadPool; import org.eclipse.jetty.util.thread.TimerScheduler; import org.hamcrest.Matchers; import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; @@ -38,7 +39,6 @@ import java.util.concurrent.CountDownLatch; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.not; -import static org.junit.Assert.fail; import static org.junit.jupiter.api.Assertions.*; public class LowResourcesMonitorTest @@ -248,28 +248,15 @@ public class LowResourcesMonitorTest InputStream input1 = socket1.getInputStream(); assertTrue(_lowResourcesMonitor.isLowOnResources()); - try - { - input1.read(); - fail(); - } - catch (SocketTimeoutException expected) - { - } + assertThrows( SocketTimeoutException.class, () -> input1.read()); // Wait a couple of lowResources idleTimeouts. Thread.sleep(2 * lowResourcesIdleTimeout); // Verify the new socket is still open. assertTrue(_lowResourcesMonitor.isLowOnResources()); - try - { - input1.read(); - fail(); - } - catch (SocketTimeoutException expected) - { - } + assertThrows( SocketTimeoutException.class, () -> input1.read()); + // Let the maxLowResourcesTime elapse. Thread.sleep(maxLowResourcesTime); diff --git a/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/GzipHandlerTest.java b/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/GzipHandlerTest.java index c720e0f3e15..48a39b7d2e7 100644 --- a/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/GzipHandlerTest.java +++ b/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/GzipHandlerTest.java @@ -18,15 +18,26 @@ package org.eclipse.jetty.servlet; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.contains; -import static org.hamcrest.Matchers.containsString; -import static org.hamcrest.Matchers.equalToIgnoringCase; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.not; -import static org.hamcrest.Matchers.nullValue; -import static org.junit.jupiter.api.Assertions.assertEquals; +import org.eclipse.jetty.http.HttpTester; +import org.eclipse.jetty.server.LocalConnector; +import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.server.handler.gzip.GzipHandler; +import org.eclipse.jetty.util.IO; +import org.hamcrest.Matchers; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import javax.servlet.DispatcherType; +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -40,22 +51,9 @@ import java.util.Enumeration; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; -import javax.servlet.*; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.eclipse.jetty.http.HttpTester; -import org.eclipse.jetty.server.Dispatcher; -import org.eclipse.jetty.server.LocalConnector; -import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.server.handler.gzip.GzipHandler; -import org.eclipse.jetty.util.IO; -import org.hamcrest.Matchers; -import org.junit.Assert; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.*; +import static org.junit.jupiter.api.Assertions.assertEquals; @SuppressWarnings("serial") public class GzipHandlerTest @@ -616,9 +614,9 @@ public class GzipHandlerTest public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { if (request.getParameter("X-Content-Encoding")!=null) - Assert.assertEquals(-1,request.getContentLength()); + assertEquals(-1,request.getContentLength()); else if (request.getContentLength()>=0) - Assert.assertThat(request.getParameter("X-Content-Encoding"),Matchers.nullValue()); + assertThat(request.getParameter("X-Content-Encoding"),Matchers.nullValue()); chain.doFilter(request,response); } diff --git a/jetty-util/src/test/java/org/eclipse/jetty/util/TypeUtilTest.java b/jetty-util/src/test/java/org/eclipse/jetty/util/TypeUtilTest.java index dc103c1b1d4..6349a364fae 100644 --- a/jetty-util/src/test/java/org/eclipse/jetty/util/TypeUtilTest.java +++ b/jetty-util/src/test/java/org/eclipse/jetty/util/TypeUtilTest.java @@ -21,10 +21,10 @@ package org.eclipse.jetty.util; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.MatcherAssert.assertThat; -import static org.junit.Assume.assumeTrue; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assumptions.assumeTrue; import java.nio.file.Path; import java.nio.file.Paths; diff --git a/jetty-util/src/test/java/org/eclipse/jetty/util/statistic/RateStatisticTest.java b/jetty-util/src/test/java/org/eclipse/jetty/util/statistic/RateStatisticTest.java index 0a768d4f990..9ef3e5578d2 100644 --- a/jetty-util/src/test/java/org/eclipse/jetty/util/statistic/RateStatisticTest.java +++ b/jetty-util/src/test/java/org/eclipse/jetty/util/statistic/RateStatisticTest.java @@ -24,7 +24,8 @@ import org.hamcrest.Matchers; import org.junit.jupiter.api.Test; import static org.hamcrest.Matchers.equalTo; -import static org.junit.Assert.assertThat; +import static org.hamcrest.MatcherAssert.assertThat; + /* ------------------------------------------------------------ */ diff --git a/pom.xml b/pom.xml index 08f256d856f..4df812973df 100644 --- a/pom.xml +++ b/pom.xml @@ -37,6 +37,8 @@ 2.4.5.Final 1.0.5 + + false 2.22.0 @@ -49,7 +51,7 @@ - 5.0 + 5.1 @@ -647,6 +649,8 @@ ${project.build.directory} ${unix.socket.tmp} + true + ${jetty.testtracker.log} diff --git a/tests/test-integration/src/test/java/org/eclipse/jetty/test/support/JettyDistro.java b/tests/test-integration/src/test/java/org/eclipse/jetty/test/support/JettyDistro.java index 3cc69f47f27..27994a3e1d3 100644 --- a/tests/test-integration/src/test/java/org/eclipse/jetty/test/support/JettyDistro.java +++ b/tests/test-integration/src/test/java/org/eclipse/jetty/test/support/JettyDistro.java @@ -258,7 +258,7 @@ public class JettyDistro */ public JettyDistro(Class clazz, String artifact) throws IOException { - this.jettyHomeDir = MavenTestingUtils.getTargetTestingDir(clazz,"jettyHome"); + this.jettyHomeDir = MavenTestingUtils.getTargetTestingPath(clazz,"jettyHome").toFile(); if (artifact != null) { this.artifactName = artifact; diff --git a/tests/test-sessions/test-gcloud-sessions/src/test/java/org/eclipse/jetty/gcloud/session/ClusteredOrphanedSessionTest.java b/tests/test-sessions/test-gcloud-sessions/src/test/java/org/eclipse/jetty/gcloud/session/ClusteredOrphanedSessionTest.java index 0e54b028bc3..fb192d31b60 100644 --- a/tests/test-sessions/test-gcloud-sessions/src/test/java/org/eclipse/jetty/gcloud/session/ClusteredOrphanedSessionTest.java +++ b/tests/test-sessions/test-gcloud-sessions/src/test/java/org/eclipse/jetty/gcloud/session/ClusteredOrphanedSessionTest.java @@ -22,6 +22,7 @@ package org.eclipse.jetty.gcloud.session; import org.eclipse.jetty.server.session.AbstractClusteredOrphanedSessionTest; import org.eclipse.jetty.server.session.SessionDataStoreFactory; import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; /** @@ -32,10 +33,25 @@ import org.junit.jupiter.api.Test; public class ClusteredOrphanedSessionTest extends AbstractClusteredOrphanedSessionTest { + public static GCloudSessionTestSupport __testSupport; + + @BeforeAll + public static void setUp () throws Exception + { + __testSupport = new GCloudSessionTestSupport(); + __testSupport.setUp(); + } + + @AfterAll + public static void tearDown () throws Exception + { + __testSupport.tearDown(); + } + @AfterAll public static void teardown () throws Exception { - GCloudTestSuite.__testSupport.deleteSessions(); + __testSupport.deleteSessions(); } @@ -46,7 +62,7 @@ public class ClusteredOrphanedSessionTest extends AbstractClusteredOrphanedSessi @Override public SessionDataStoreFactory createSessionDataStoreFactory() { - return GCloudSessionTestSupport.newSessionDataStoreFactory(GCloudTestSuite.__testSupport.getDatastore()); + return GCloudSessionTestSupport.newSessionDataStoreFactory(__testSupport.getDatastore()); } diff --git a/tests/test-sessions/test-gcloud-sessions/src/test/java/org/eclipse/jetty/gcloud/session/ClusteredSessionScavengingTest.java b/tests/test-sessions/test-gcloud-sessions/src/test/java/org/eclipse/jetty/gcloud/session/ClusteredSessionScavengingTest.java index ab430f9c03a..31393388e63 100644 --- a/tests/test-sessions/test-gcloud-sessions/src/test/java/org/eclipse/jetty/gcloud/session/ClusteredSessionScavengingTest.java +++ b/tests/test-sessions/test-gcloud-sessions/src/test/java/org/eclipse/jetty/gcloud/session/ClusteredSessionScavengingTest.java @@ -22,6 +22,7 @@ package org.eclipse.jetty.gcloud.session; import org.eclipse.jetty.server.session.AbstractClusteredSessionScavengingTest; import org.eclipse.jetty.server.session.SessionDataStoreFactory; import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; /** * ClusteredSessionScavengingTest @@ -30,11 +31,26 @@ import org.junit.jupiter.api.AfterAll; */ public class ClusteredSessionScavengingTest extends AbstractClusteredSessionScavengingTest { - + + public static GCloudSessionTestSupport __testSupport; + + @BeforeAll + public static void setUp () throws Exception + { + __testSupport = new GCloudSessionTestSupport(); + __testSupport.setUp(); + } + + @AfterAll + public static void tearDown () throws Exception + { + __testSupport.tearDown(); + } + @AfterAll public static void teardown () throws Exception { - GCloudTestSuite.__testSupport.deleteSessions(); + __testSupport.deleteSessions(); } @@ -44,7 +60,7 @@ public class ClusteredSessionScavengingTest extends AbstractClusteredSessionScav @Override public SessionDataStoreFactory createSessionDataStoreFactory() { - return GCloudSessionTestSupport.newSessionDataStoreFactory(GCloudTestSuite.__testSupport.getDatastore()); + return GCloudSessionTestSupport.newSessionDataStoreFactory(__testSupport.getDatastore()); } diff --git a/tests/test-sessions/test-gcloud-sessions/src/test/java/org/eclipse/jetty/gcloud/session/GCloudSessionDataStoreTest.java b/tests/test-sessions/test-gcloud-sessions/src/test/java/org/eclipse/jetty/gcloud/session/GCloudSessionDataStoreTest.java index b652e034d7b..d10de993b63 100644 --- a/tests/test-sessions/test-gcloud-sessions/src/test/java/org/eclipse/jetty/gcloud/session/GCloudSessionDataStoreTest.java +++ b/tests/test-sessions/test-gcloud-sessions/src/test/java/org/eclipse/jetty/gcloud/session/GCloudSessionDataStoreTest.java @@ -22,7 +22,9 @@ package org.eclipse.jetty.gcloud.session; import org.eclipse.jetty.server.session.AbstractSessionDataStoreTest; import org.eclipse.jetty.server.session.SessionData; import org.eclipse.jetty.server.session.SessionDataStoreFactory; +import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeAll; /** * GCloudSessionDataStoreTest @@ -32,24 +34,39 @@ import org.junit.jupiter.api.AfterEach; public class GCloudSessionDataStoreTest extends AbstractSessionDataStoreTest { + public static GCloudSessionTestSupport __testSupport; + + @BeforeAll + public static void setUp () throws Exception + { + __testSupport = new GCloudSessionTestSupport(); + __testSupport.setUp(); + } + + @AfterAll + public static void tearDown () throws Exception + { + __testSupport.tearDown(); + } + @AfterEach public void teardown () throws Exception { - GCloudTestSuite.__testSupport.deleteSessions(); + __testSupport.deleteSessions(); } @Override public SessionDataStoreFactory createSessionDataStoreFactory() { - return GCloudSessionTestSupport.newSessionDataStoreFactory(GCloudTestSuite.__testSupport.getDatastore()); + return GCloudSessionTestSupport.newSessionDataStoreFactory(__testSupport.getDatastore()); } @Override public void persistSession(SessionData data) throws Exception { - GCloudTestSuite.__testSupport.createSession(data.getId(), data.getContextPath(), data.getVhost(), data.getLastNode(), data.getCreated(), + __testSupport.createSession(data.getId(), data.getContextPath(), data.getVhost(), data.getLastNode(), data.getCreated(), data.getAccessed(), data.getLastAccessed(), data.getMaxInactiveMs(), data.getExpiry(), data.getCookieSet(), data.getLastSaved(), data.getAllAttributes()); @@ -60,7 +77,7 @@ public class GCloudSessionDataStoreTest extends AbstractSessionDataStoreTest public void persistUnreadableSession(SessionData data) throws Exception { - GCloudTestSuite.__testSupport.createSession(data.getId(), data.getContextPath(), data.getVhost(), data.getLastNode(), data.getCreated(), + __testSupport.createSession(data.getId(), data.getContextPath(), data.getVhost(), data.getLastNode(), data.getCreated(), data.getAccessed(), data.getLastAccessed(), data.getMaxInactiveMs(), data.getExpiry(), data.getCookieSet(), data.getLastSaved(), null); } @@ -69,7 +86,7 @@ public class GCloudSessionDataStoreTest extends AbstractSessionDataStoreTest @Override public boolean checkSessionExists(SessionData data) throws Exception { - return GCloudTestSuite.__testSupport.checkSessionExists(data.getId()); + return __testSupport.checkSessionExists(data.getId()); } @@ -79,7 +96,7 @@ public class GCloudSessionDataStoreTest extends AbstractSessionDataStoreTest @Override public boolean checkSessionPersisted(SessionData data) throws Exception { - return GCloudTestSuite.__testSupport.checkSessionPersisted(data); + return __testSupport.checkSessionPersisted(data); } } diff --git a/tests/test-sessions/test-gcloud-sessions/src/test/java/org/eclipse/jetty/gcloud/session/GCloudTestSuite.java b/tests/test-sessions/test-gcloud-sessions/src/test/java/org/eclipse/jetty/gcloud/session/GCloudTestSuite.java deleted file mode 100644 index a77dd76aceb..00000000000 --- a/tests/test-sessions/test-gcloud-sessions/src/test/java/org/eclipse/jetty/gcloud/session/GCloudTestSuite.java +++ /dev/null @@ -1,55 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995-2018 Mort Bay Consulting Pty. Ltd. -// ------------------------------------------------------------------------ -// All rights reserved. This program and the accompanying materials -// are made available under the terms of the Eclipse Public License v1.0 -// and Apache License v2.0 which accompanies this distribution. -// -// The Eclipse Public License is available at -// http://www.eclipse.org/legal/epl-v10.html -// -// The Apache License v2.0 is available at -// http://www.opensource.org/licenses/apache2.0.php -// -// You may elect to redistribute this code under either of these licenses. -// ======================================================================== -// - -package org.eclipse.jetty.gcloud.session; - -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeAll; -import org.junit.runner.RunWith; -import org.junit.runners.Suite; - -/** - * GCloudTestSuite - * - * Sets up the gcloud emulator once before running all tests. - * - */ -@RunWith(Suite.class) -@Suite.SuiteClasses({ - GCloudSessionDataStoreTest.class, - InvalidationSessionTest.class, - ClusteredSessionScavengingTest.class, - ClusteredOrphanedSessionTest.class -}) -public class GCloudTestSuite -{ - public static GCloudSessionTestSupport __testSupport; - - @BeforeAll - public static void setUp () throws Exception - { - __testSupport = new GCloudSessionTestSupport(); - __testSupport.setUp(); - } - - @AfterAll - public static void tearDown () throws Exception - { - __testSupport.tearDown(); - } -} diff --git a/tests/test-sessions/test-gcloud-sessions/src/test/java/org/eclipse/jetty/gcloud/session/InvalidationSessionTest.java b/tests/test-sessions/test-gcloud-sessions/src/test/java/org/eclipse/jetty/gcloud/session/InvalidationSessionTest.java index 476c8dd9e18..3e7809aa82a 100644 --- a/tests/test-sessions/test-gcloud-sessions/src/test/java/org/eclipse/jetty/gcloud/session/InvalidationSessionTest.java +++ b/tests/test-sessions/test-gcloud-sessions/src/test/java/org/eclipse/jetty/gcloud/session/InvalidationSessionTest.java @@ -23,6 +23,7 @@ package org.eclipse.jetty.gcloud.session; import org.eclipse.jetty.server.session.AbstractClusteredInvalidationSessionTest; import org.eclipse.jetty.server.session.SessionDataStoreFactory; import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; /** * InvalidationSessionTest @@ -31,11 +32,26 @@ import org.junit.jupiter.api.AfterAll; */ public class InvalidationSessionTest extends AbstractClusteredInvalidationSessionTest { - + + public static GCloudSessionTestSupport __testSupport; + + @BeforeAll + public static void setUp () throws Exception + { + __testSupport = new GCloudSessionTestSupport(); + __testSupport.setUp(); + } + + @AfterAll + public static void tearDown () throws Exception + { + __testSupport.tearDown(); + } + @AfterAll public static void teardown () throws Exception { - GCloudTestSuite.__testSupport.deleteSessions(); + __testSupport.deleteSessions(); } /** @@ -44,6 +60,6 @@ public class InvalidationSessionTest extends AbstractClusteredInvalidationSessio @Override public SessionDataStoreFactory createSessionDataStoreFactory() { - return GCloudSessionTestSupport.newSessionDataStoreFactory(GCloudTestSuite.__testSupport.getDatastore()); + return GCloudSessionTestSupport.newSessionDataStoreFactory(__testSupport.getDatastore()); } } From 7a2ba10ed62d4727ecc993d07583072f03935e0c Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Fri, 21 Sep 2018 10:38:23 +0200 Subject: [PATCH 37/88] Issue #2727 - Revisit JMX MBean lookup behavior. Improved lookup of MBean constructor, now done only once. Cleaned up tests. Signed-off-by: Simone Bordet --- .../org/eclipse/jetty/jmx/MBeanContainer.java | 38 ++- .../java/org/eclipse/jetty/jmx/MetaData.java | 84 ++++--- .../org/eclipse/jetty/jmx/ObjectMBean.java | 12 +- .../test/java/com/acme/DerivedExtended.java | 1 - .../eclipse/jetty/jmx/MBeanContainerTest.java | 47 +--- .../eclipse/jetty/jmx/ObjectMBeanTest.java | 188 +++++---------- .../jetty/jmx/ObjectMBeanUtilTest.java | 224 ++++-------------- .../java/org/eclipse/jetty/jmx/PojoTest.java | 12 +- .../test/resources/jetty-logging.properties | 2 +- 9 files changed, 218 insertions(+), 390 deletions(-) diff --git a/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MBeanContainer.java b/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MBeanContainer.java index c5f22c38a40..3f2ea7bb4f9 100644 --- a/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MBeanContainer.java +++ b/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MBeanContainer.java @@ -19,6 +19,7 @@ package org.eclipse.jetty.jmx; import java.io.IOException; +import java.lang.reflect.Constructor; import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -34,7 +35,9 @@ import javax.management.InstanceNotFoundException; import javax.management.MBeanRegistrationException; import javax.management.MBeanServer; import javax.management.ObjectName; +import javax.management.modelmbean.ModelMBean; +import org.eclipse.jetty.util.Loader; import org.eclipse.jetty.util.annotation.ManagedAttribute; import org.eclipse.jetty.util.annotation.ManagedObject; import org.eclipse.jetty.util.component.Container; @@ -151,7 +154,7 @@ public class MBeanContainer implements Container.InheritedListener, Dumpable, De if (mbean instanceof ObjectMBean) ((ObjectMBean)mbean).setMBeanContainer(container); if (LOG.isDebugEnabled()) - LOG.debug("mbeanFor {} is {}", o, mbean); + LOG.debug("MBean for {} is {}", o, mbean); return mbean; } @@ -161,7 +164,11 @@ public class MBeanContainer implements Container.InheritedListener, Dumpable, De return null; MetaData metaData = getMetaData(container, klass); if (metaData != null) + { + if (LOG.isDebugEnabled()) + LOG.debug("Found cached {}", metaData); return metaData; + } return newMetaData(container, klass); } @@ -175,12 +182,12 @@ public class MBeanContainer implements Container.InheritedListener, Dumpable, De if (klass == null) return null; if (klass == Object.class) - return new MetaData(klass, null, Collections.emptyList()); + return new MetaData(klass, null, null, Collections.emptyList()); List interfaces = Arrays.stream(klass.getInterfaces()) - .map(iClass -> findMetaData(container, iClass)) + .map(intf -> findMetaData(container, intf)) .collect(Collectors.toList()); - MetaData metaData = new MetaData(klass, findMetaData(container, klass.getSuperclass()), interfaces); + MetaData metaData = new MetaData(klass, findConstructor(klass), findMetaData(container, klass.getSuperclass()), interfaces); if (container != null) { @@ -195,6 +202,29 @@ public class MBeanContainer implements Container.InheritedListener, Dumpable, De return metaData; } + private static Constructor findConstructor(Class klass) + { + String pName = klass.getPackage().getName(); + String cName = klass.getName().substring(pName.length() + 1); + String mName = pName + ".jmx." + cName + "MBean"; + try + { + Class mbeanClass = Loader.loadClass(mName); + Constructor constructor = ModelMBean.class.isAssignableFrom(mbeanClass) + ? mbeanClass.getConstructor() + : mbeanClass.getConstructor(Object.class); + if (LOG.isDebugEnabled()) + LOG.debug("Found MBean wrapper: {} for {}", mName, klass.getName()); + return constructor; + } + catch (Throwable x) + { + if (LOG.isDebugEnabled()) + LOG.debug("MBean wrapper not found: {} for {}", mName, klass.getName()); + return null; + } + } + /** * Lookup an object name by instance * diff --git a/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MetaData.java b/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MetaData.java index 9f3b8882068..c081178b050 100644 --- a/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MetaData.java +++ b/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MetaData.java @@ -45,7 +45,6 @@ import javax.management.ObjectName; import javax.management.ReflectionException; import javax.management.modelmbean.ModelMBean; -import org.eclipse.jetty.util.Loader; import org.eclipse.jetty.util.annotation.ManagedAttribute; import org.eclipse.jetty.util.annotation.ManagedObject; import org.eclipse.jetty.util.annotation.ManagedOperation; @@ -59,21 +58,24 @@ class MetaData private final Map _attributes = new HashMap<>(); private final Map _operations = new HashMap<>(); + private final Class _klass; private final MetaData _parent; private final List _interfaces; private final Constructor _constructor; private final MBeanInfo _info; - MetaData(Class klass, MetaData parent, List interfaces) + MetaData(Class klass, Constructor constructor, MetaData parent, List interfaces) { + _klass = klass; _parent = parent; _interfaces = interfaces; - _constructor = findConstructor(klass); + _constructor = constructor; if (_constructor != null) parseMethods(klass, _constructor.getDeclaringClass()); else parseMethods(klass); _info = buildMBeanInfo(klass); + } Object newInstance(Object bean) @@ -93,7 +95,7 @@ class MetaData return _info; } - Object getAttribute(String name, ObjectMBean mbean) throws AttributeNotFoundException, ReflectionException + Object getAttribute(String name, ObjectMBean mbean) throws AttributeNotFoundException, ReflectionException, MBeanException { AttributeInfo info = findAttribute(name); if (info == null) @@ -101,7 +103,7 @@ class MetaData return info.getAttribute(mbean); } - void setAttribute(Attribute attribute, ObjectMBean mbean) throws AttributeNotFoundException, ReflectionException + void setAttribute(Attribute attribute, ObjectMBean mbean) throws AttributeNotFoundException, ReflectionException, MBeanException { if (attribute == null) return; @@ -114,6 +116,8 @@ class MetaData private AttributeInfo findAttribute(String name) { + if (name == null) + return null; AttributeInfo result = _attributes.get(name); if (result != null) return result; @@ -153,24 +157,6 @@ class MetaData return null; } - private static Constructor findConstructor(Class klass) - { - try - { - String pName = klass.getPackage().getName(); - String cName = klass.getName().substring(pName.length() + 1); - String mName = pName + ".jmx." + cName + "MBean"; - Class mbeanClass = Loader.loadClass(mName); - return ModelMBean.class.isAssignableFrom(mbeanClass) - ? mbeanClass.getConstructor() - : mbeanClass.getConstructor(Object.class); - } - catch (Throwable x) - { - return null; - } - } - private static Object newInstance(Constructor constructor, Object bean) { try @@ -190,6 +176,7 @@ class MetaData { for (Class klass : classes) { + // Only work on the public method of the class, not of the hierarchy. for (Method method : klass.getDeclaredMethods()) { if (!Modifier.isPublic(method.getModifiers())) @@ -198,12 +185,16 @@ class MetaData if (attribute != null) { AttributeInfo info = new AttributeInfo(attribute, method); + if (LOG.isDebugEnabled()) + LOG.debug("Found attribute for {}: {}", klass.getName(), info); _attributes.put(info._name, info); } ManagedOperation operation = method.getAnnotation(ManagedOperation.class); if (operation != null) { OperationInfo info = new OperationInfo(operation, method); + if (LOG.isDebugEnabled()) + LOG.debug("Found operation for {}: {}", klass.getName(), info); _operations.put(info._name, info); } } @@ -284,6 +275,21 @@ class MetaData _parent.collectMBeanOperationInfos(operationInfos); } + private static MBeanException toMBeanException(InvocationTargetException x) + { + Throwable cause = x.getCause(); + if (cause instanceof Exception) + return new MBeanException((Exception)cause); + else + return new MBeanException(x); + } + + @Override + public String toString() + { + return String.format("%s@%x[%s]", getClass().getSimpleName(), hashCode(), _klass.getName()); + } + private static class AttributeInfo { private final String _name; @@ -318,7 +324,7 @@ class MetaData _setter != null, getter.getName().startsWith("is")); } - Object getAttribute(ObjectMBean mbean) throws ReflectionException + Object getAttribute(ObjectMBean mbean) throws ReflectionException, MBeanException { try { @@ -338,13 +344,17 @@ class MetaData names[i] = mbean.findObjectName(Array.get(result, i)); return names; } + catch (InvocationTargetException x) + { + throw toMBeanException(x); + } catch (Exception x) { throw new ReflectionException(x); } } - void setAttribute(Object value, ObjectMBean mbean) throws ReflectionException + void setAttribute(Object value, ObjectMBean mbean) throws ReflectionException, MBeanException { try { @@ -370,6 +380,10 @@ class MetaData Array.set(result, i, mbean.findBean(names[i])); _setter.invoke(target, result); } + catch (InvocationTargetException x) + { + throw toMBeanException(x); + } catch (Exception x) { throw new ReflectionException(x); @@ -404,6 +418,13 @@ class MetaData return setter; } + + @Override + public String toString() + { + return String.format("%s@%x[%s,proxied=%b,convert=%b]", getClass().getSimpleName(), hashCode(), + _name, _proxied, _convert); + } } private static class OperationInfo @@ -464,11 +485,7 @@ class MetaData } catch (InvocationTargetException x) { - Throwable cause = x.getCause(); - if (cause instanceof Exception) - throw new MBeanException((Exception)cause); - else - throw new MBeanException(new RuntimeException(cause)); + throw toMBeanException(x); } catch (Exception x) { @@ -498,5 +515,12 @@ class MetaData } return result; } + + @Override + public String toString() + { + return String.format("%s@%x[%s,proxied=%b,convert=%b]", getClass().getSimpleName(), hashCode(), + _name, _proxied, _convert); + } } } diff --git a/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/ObjectMBean.java b/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/ObjectMBean.java index 2bd6b08ac6b..5782ffe660e 100644 --- a/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/ObjectMBean.java +++ b/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/ObjectMBean.java @@ -139,7 +139,7 @@ public class ObjectMBean implements DynamicMBean } @Override - public Object getAttribute(String name) throws AttributeNotFoundException, ReflectionException + public Object getAttribute(String name) throws AttributeNotFoundException, ReflectionException, MBeanException { ClassLoader prevLoader = Thread.currentThread().getContextClassLoader(); try @@ -164,14 +164,15 @@ public class ObjectMBean implements DynamicMBean } catch (Throwable x) { - LOG.info(x); + if (LOG.isDebugEnabled()) + LOG.debug(x); } } return results; } @Override - public void setAttribute(Attribute attribute) throws AttributeNotFoundException, ReflectionException + public void setAttribute(Attribute attribute) throws AttributeNotFoundException, ReflectionException, MBeanException { ClassLoader prevLoader = Thread.currentThread().getContextClassLoader(); try @@ -197,7 +198,8 @@ public class ObjectMBean implements DynamicMBean } catch (Throwable x) { - LOG.info(x); + if (LOG.isDebugEnabled()) + LOG.debug(x); } } return results; @@ -227,7 +229,7 @@ public class ObjectMBean implements DynamicMBean return _mbeanContainer.findBean(objectName); } - private MetaData metaData() + MetaData metaData() { if (_metaData == null) _metaData = MBeanContainer.findMetaData(_mbeanContainer, _managed.getClass()); diff --git a/jetty-jmx/src/test/java/com/acme/DerivedExtended.java b/jetty-jmx/src/test/java/com/acme/DerivedExtended.java index b25280e2154..daa3f34aea5 100644 --- a/jetty-jmx/src/test/java/com/acme/DerivedExtended.java +++ b/jetty-jmx/src/test/java/com/acme/DerivedExtended.java @@ -25,7 +25,6 @@ import org.eclipse.jetty.util.annotation.ManagedOperation; @ManagedObject(value = "Test the mbean extended stuff") public class DerivedExtended extends Derived { - private String doodle4 = "doodle4"; @ManagedAttribute(value = "The doodle4 name of something", name = "doodle4", setter = "setDoodle4") diff --git a/jetty-jmx/src/test/java/org/eclipse/jetty/jmx/MBeanContainerTest.java b/jetty-jmx/src/test/java/org/eclipse/jetty/jmx/MBeanContainerTest.java index ded64808426..630c95374a8 100644 --- a/jetty-jmx/src/test/java/org/eclipse/jetty/jmx/MBeanContainerTest.java +++ b/jetty-jmx/src/test/java/org/eclipse/jetty/jmx/MBeanContainerTest.java @@ -18,24 +18,23 @@ package org.eclipse.jetty.jmx; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import com.acme.Managed; - import java.lang.management.ManagementFactory; import javax.management.MBeanServer; import javax.management.ObjectName; +import com.acme.Managed; import org.eclipse.jetty.util.component.Container; import org.eclipse.jetty.util.component.ContainerLifeCycle; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + public class MBeanContainerTest { private MBeanContainer mbeanContainer; @@ -54,27 +53,21 @@ public class MBeanContainerTest @Test public void testMakeName() { - // given beanName = "mngd:bean"; - // when beanName = mbeanContainer.makeName(beanName); - // then assertEquals("mngd_bean", beanName, "Bean name should be mngd_bean"); } @Test public void testFindBean() { - // given managed = getManaged(); - // when objectName = mbeanContainer.findMBean(managed); assertNotNull(objectName); - // then assertEquals(managed, mbeanContainer.findBean(objectName), "Bean must be added"); assertNull(mbeanContainer.findBean(null), "It must return null as there is no bean with the name null"); } @@ -104,40 +97,31 @@ public class MBeanContainerTest @Test public void testDomain() { - // given String domain = "Test"; - // when mbeanContainer.setDomain(domain); - // then assertEquals(domain, mbeanContainer.getDomain(), "Domain name must be Test"); } @Test - public void testBeanAdded() throws Exception + public void testBeanAdded() { - // given setBeanAdded(); - // when objectName = mbeanContainer.findMBean(managed); - // then assertTrue(mbeanServer.isRegistered(objectName), "Bean must have been registered"); } @Test - public void testBeanAddedNullCheck() throws Exception + public void testBeanAddedNullCheck() { - // given setBeanAdded(); Integer mbeanCount = mbeanServer.getMBeanCount(); - // when mbeanContainer.beanAdded(null, null); - // then assertEquals(mbeanCount, mbeanServer.getMBeanCount(), "MBean count must not change after beanAdded(null, null) call"); } @@ -150,15 +134,12 @@ public class MBeanContainerTest } @Test - public void testBeanRemoved() throws Exception + public void testBeanRemoved() { - // given setUpBeanRemoved(); - // when mbeanContainer.beanRemoved(null, managed); - // then assertNull(mbeanContainer.findMBean(managed), "Bean shouldn't be registered with container as we removed the bean"); } @@ -200,30 +181,24 @@ public class MBeanContainerTest } @Test - public void testDestroy() throws Exception + public void testDestroy() { - // given setUpDestroy(); - // when objectName = mbeanContainer.findMBean(managed); mbeanContainer.destroy(); - // then assertFalse(mbeanContainer.getMBeanServer().isRegistered(objectName), "Unregistered bean - managed"); } @Test public void testDestroyInstanceNotFoundException() throws Exception { - // given setUpDestroy(); - // when objectName = mbeanContainer.findMBean(managed); mbeanContainer.getMBeanServer().unregisterMBean(objectName); - // then assertFalse(mbeanContainer.getMBeanServer().isRegistered(objectName), "Unregistered bean - managed"); // this flow covers InstanceNotFoundException. Actual code just eating // the exception. i.e Actual code just printing the stacktrace, whenever diff --git a/jetty-jmx/src/test/java/org/eclipse/jetty/jmx/ObjectMBeanTest.java b/jetty-jmx/src/test/java/org/eclipse/jetty/jmx/ObjectMBeanTest.java index 0fd87499096..00b6b81b952 100644 --- a/jetty-jmx/src/test/java/org/eclipse/jetty/jmx/ObjectMBeanTest.java +++ b/jetty-jmx/src/test/java/org/eclipse/jetty/jmx/ObjectMBeanTest.java @@ -26,202 +26,126 @@ import javax.management.MBeanOperationInfo; import javax.management.MBeanParameterInfo; import com.acme.Derived; -import org.eclipse.jetty.util.log.Log; -import org.eclipse.jetty.util.log.Logger; -import org.eclipse.jetty.util.thread.QueuedThreadPool; +import com.acme.Managed; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNotSame; +import static org.junit.jupiter.api.Assertions.assertSame; import static org.junit.jupiter.api.Assertions.assertTrue; public class ObjectMBeanTest { - private static final Logger LOG = Log.getLogger(ObjectMBeanTest.class); - - private static MBeanContainer container; + private MBeanContainer container; @BeforeEach - public void before() throws Exception + public void before() { container = new MBeanContainer(ManagementFactory.getPlatformMBeanServer()); } @AfterEach - public void after() throws Exception + public void after() { container.destroy(); container = null; } - /* - * this test uses the com.acme.Derived test classes - */ + @Test + public void testMetaDataCaching() + { + Derived derived = new Derived(); + ObjectMBean derivedMBean = (ObjectMBean)container.mbeanFor(derived); + ObjectMBean derivedMBean2 = (ObjectMBean)container.mbeanFor(derived); + assertNotSame(derivedMBean, derivedMBean2); + assertSame(derivedMBean.metaData(), derivedMBean2.metaData()); + } + @Test public void testDerivedAttributes() throws Exception { Derived derived = new Derived(); - ObjectMBean mbean = (ObjectMBean)ObjectMBean.mbeanFor(derived); + Managed managed = derived.getManagedInstance(); + ObjectMBean derivedMBean = (ObjectMBean)container.mbeanFor(derived); + ObjectMBean managedMBean = (ObjectMBean)container.mbeanFor(managed); - ObjectMBean managed = (ObjectMBean)ObjectMBean.mbeanFor(derived.getManagedInstance()); - mbean.setMBeanContainer(container); - managed.setMBeanContainer(container); + container.beanAdded(null, derived); + container.beanAdded(null, managed); - container.beanAdded(null,derived); - container.beanAdded(null,derived.getManagedInstance()); + MBeanInfo derivedInfo = derivedMBean.getMBeanInfo(); + assertNotNull(derivedInfo); + MBeanInfo managedInfo = managedMBean.getMBeanInfo(); + assertNotNull(managedInfo); - MBeanInfo toss = managed.getMBeanInfo(); + assertEquals("com.acme.Derived", derivedInfo.getClassName(), "name does not match"); + assertEquals("Test the mbean stuff", derivedInfo.getDescription(), "description does not match"); + assertEquals(6, derivedInfo.getAttributes().length, "attribute count does not match"); + assertEquals("Full Name", derivedMBean.getAttribute("fname"), "attribute values does not match"); - assertNotNull(mbean.getMBeanInfo()); - - MBeanInfo info = mbean.getMBeanInfo(); - - assertEquals("com.acme.Derived", info.getClassName(), "name does not match"); - assertEquals("Test the mbean stuff", info.getDescription(), "description does not match"); - - // for ( MBeanAttributeInfo i : info.getAttributes()) - // { - // LOG.debug(i.toString()); - // } - - /* - * 2 attributes from lifecycle and 2 from Derived and 1 from MBean - */ - assertEquals(6, info.getAttributes().length, "attribute count does not match"); - - assertEquals("Full Name", mbean.getAttribute("fname"), "attribute values does not match"); - - mbean.setAttribute(new Attribute("fname","Fuller Name")); - - assertEquals("Fuller Name", mbean.getAttribute("fname"), "set attribute value does not match"); - - assertEquals("goop", mbean.getAttribute("goop"), "proxy attribute values do not match"); - - // Thread.sleep(100000); + derivedMBean.setAttribute(new Attribute("fname", "Fuller Name")); + assertEquals("Fuller Name", derivedMBean.getAttribute("fname"), "set attribute value does not match"); + assertEquals("goop", derivedMBean.getAttribute("goop"), "proxy attribute values do not match"); } @Test public void testDerivedOperations() throws Exception { Derived derived = new Derived(); - ObjectMBean mbean = (ObjectMBean)ObjectMBean.mbeanFor(derived); + ObjectMBean mbean = (ObjectMBean)container.mbeanFor(derived); - mbean.setMBeanContainer(container); - - container.beanAdded(null,derived); + container.beanAdded(null, derived); MBeanInfo info = mbean.getMBeanInfo(); - assertEquals(5, info.getOperations().length, "operation count does not match"); - MBeanOperationInfo[] opinfos = info.getOperations(); + MBeanOperationInfo[] operationInfos = info.getOperations(); boolean publish = false; boolean doodle = false; boolean good = false; - for (int i = 0; i < opinfos.length; ++i) + for (MBeanOperationInfo operationInfo : operationInfos) { - MBeanOperationInfo opinfo = opinfos[i]; - - if ("publish".equals(opinfo.getName())) + if ("publish".equals(operationInfo.getName())) { publish = true; - assertEquals("publish something", opinfo.getDescription(), "description doesn't match"); + assertEquals("publish something", operationInfo.getDescription(), "description doesn't match"); } - if ("doodle".equals(opinfo.getName())) + if ("doodle".equals(operationInfo.getName())) { doodle = true; - assertEquals("Doodle something", opinfo.getDescription(), "description doesn't match"); - - MBeanParameterInfo[] pinfos = opinfo.getSignature(); - - assertEquals("A description of the argument", pinfos[0].getDescription(), "parameter description doesn't match"); - assertEquals("doodle", pinfos[0].getName(), "parameter name doesn't match"); + assertEquals("Doodle something", operationInfo.getDescription(), "description doesn't match"); + MBeanParameterInfo[] parameterInfos = operationInfo.getSignature(); + assertEquals("A description of the argument", parameterInfos[0].getDescription(), "parameter description doesn't match"); + assertEquals("doodle", parameterInfos[0].getName(), "parameter name doesn't match"); } - // This is a proxied operation on the JMX wrapper - if ("good".equals(opinfo.getName())) + // This is a proxied operation on the MBean wrapper. + if ("good".equals(operationInfo.getName())) { good = true; - - assertEquals("test of proxy operations", opinfo.getDescription(), "description does not match"); - assertEquals("not bad",mbean.invoke("good",new Object[] {}, new String[] {}), "execution contexts wrong"); + assertEquals("test of proxy operations", operationInfo.getDescription(), "description does not match"); + assertEquals("not bad", mbean.invoke("good", new Object[]{}, new String[]{}), "execution contexts wrong"); } } assertTrue(publish, "publish operation was not not found"); assertTrue(doodle, "doodle operation was not not found"); assertTrue(good, "good operation was not not found"); - } @Test - public void testDerivedObjectAttributes() throws Exception + public void testMethodNameMining() { - Derived derived = new Derived(); - ObjectMBean mbean = (ObjectMBean)ObjectMBean.mbeanFor(derived); - - ObjectMBean managed = (ObjectMBean)ObjectMBean.mbeanFor(derived.getManagedInstance()); - mbean.setMBeanContainer(container); - managed.setMBeanContainer(container); - - assertNotNull(mbean.getMBeanInfo()); - - container.beanAdded(null,derived); - container.beanAdded(null,derived.getManagedInstance()); - container.beanAdded(null,mbean); - container.beanAdded(null,managed); - - // Managed managedInstance = (Managed)mbean.getAttribute("managedInstance"); - // assertNotNull(managedInstance); - // assertEquals("foo", managedInstance.getManaged(), "managed instance returning nonsense"); - + assertEquals("fullName", MetaData.toAttributeName("getFullName")); + assertEquals("fullName", MetaData.toAttributeName("getfullName")); + assertEquals("fullName", MetaData.toAttributeName("isFullName")); + assertEquals("fullName", MetaData.toAttributeName("isfullName")); + assertEquals("fullName", MetaData.toAttributeName("setFullName")); + assertEquals("fullName", MetaData.toAttributeName("setfullName")); + assertEquals("fullName", MetaData.toAttributeName("FullName")); + assertEquals("fullName", MetaData.toAttributeName("fullName")); } - - @Test - @Disabled("ignore, used in testing jconsole atm") - public void testThreadPool() throws Exception - { - - Derived derived = new Derived(); - ObjectMBean mbean = (ObjectMBean)ObjectMBean.mbeanFor(derived); - - ObjectMBean managed = (ObjectMBean)ObjectMBean.mbeanFor(derived.getManagedInstance()); - mbean.setMBeanContainer(container); - managed.setMBeanContainer(container); - - QueuedThreadPool qtp = new QueuedThreadPool(); - - ObjectMBean bqtp = (ObjectMBean)ObjectMBean.mbeanFor(qtp); - - bqtp.getMBeanInfo(); - - container.beanAdded(null,derived); - container.beanAdded(null,derived.getManagedInstance()); - container.beanAdded(null,mbean); - container.beanAdded(null,managed); - container.beanAdded(null,qtp); - - Thread.sleep(10000000); - - } - - @Test - public void testMethodNameMining() throws Exception - { - ObjectMBean mbean = new ObjectMBean(new Derived()); - - assertEquals("fullName",MetaData.toAttributeName("getFullName")); - assertEquals("fullName",MetaData.toAttributeName("getfullName")); - assertEquals("fullName",MetaData.toAttributeName("isFullName")); - assertEquals("fullName",MetaData.toAttributeName("isfullName")); - assertEquals("fullName",MetaData.toAttributeName("setFullName")); - assertEquals("fullName",MetaData.toAttributeName("setfullName")); - assertEquals("fullName",MetaData.toAttributeName("FullName")); - assertEquals("fullName",MetaData.toAttributeName("fullName")); - } - } diff --git a/jetty-jmx/src/test/java/org/eclipse/jetty/jmx/ObjectMBeanUtilTest.java b/jetty-jmx/src/test/java/org/eclipse/jetty/jmx/ObjectMBeanUtilTest.java index cebfc1d9e42..0f1321bbbfe 100644 --- a/jetty-jmx/src/test/java/org/eclipse/jetty/jmx/ObjectMBeanUtilTest.java +++ b/jetty-jmx/src/test/java/org/eclipse/jetty/jmx/ObjectMBeanUtilTest.java @@ -32,11 +32,6 @@ import javax.management.ReflectionException; import com.acme.Derived; import com.acme.DerivedExtended; import com.acme.DerivedManaged; -import org.eclipse.jetty.util.log.Log; -import org.eclipse.jetty.util.log.Logger; -import org.eclipse.jetty.util.log.StdErrLog; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -47,56 +42,20 @@ import static org.junit.jupiter.api.Assertions.assertThrows; public class ObjectMBeanUtilTest { - private ObjectMBean objectMBean; - private DerivedExtended derivedExtended; - private MBeanContainer container; - private MBeanInfo objectMBeanInfo; - - private Object mBean; - - private String value; - private Attribute attribute; - - private AttributeList attributes; - private ObjectMBean mBeanDerivedManaged; - - private Derived[] derivedes; - - private ArrayList aliasNames; - private DerivedManaged derivedManaged; - private static final int EMPTY = 0; - - @BeforeAll - public static void beforeClass() - { - Logger ombLog = Log.getLogger(ObjectMBean.class); - if (ombLog instanceof StdErrLog && !ombLog.isDebugEnabled()) - ((StdErrLog)ombLog).setHideStacks(true); - } - - @AfterAll - public static void afterClass() - { - Logger ombLog = Log.getLogger(ObjectMBean.class); - if (ombLog instanceof StdErrLog) - ((StdErrLog)ombLog).setHideStacks(false); - } - @BeforeEach public void setUp() { - derivedExtended = new DerivedExtended(); - objectMBean = new ObjectMBean(derivedExtended); container = new MBeanContainer(ManagementFactory.getPlatformMBeanServer()); - objectMBean.setMBeanContainer(container); + derivedExtended = new DerivedExtended(); + objectMBean = (ObjectMBean)container.mbeanFor(derivedExtended); objectMBeanInfo = objectMBean.getMBeanInfo(); } @@ -114,131 +73,93 @@ public class ObjectMBeanUtilTest @Test public void testMbeanForNullCheck() { - // when - mBean = ObjectMBean.mbeanFor(null); - - // then + Object mBean = container.mbeanFor(null); assertNull(mBean, "As we are passing null value the output should be null"); } @Test - public void testGetAttributeReflectionException() throws Exception + public void testGetAttributeMBeanException() throws Exception { - // given - setUpGetAttribute("doodle4","charu"); + Attribute attribute = new Attribute("doodle4", "charu"); + objectMBean.setAttribute(attribute); - // when - ReflectionException e = assertThrows(ReflectionException.class, ()-> { - objectMBean.getAttribute("doodle4"); - }); + MBeanException e = assertThrows(MBeanException.class, () -> objectMBean.getAttribute("doodle4")); - // then assertNotNull(e, "An InvocationTargetException must have occurred by now as doodle4() internally throwing exception"); } - private void setUpGetAttribute(String property, String value) throws Exception - { - Attribute attribute = new Attribute(property,value); - objectMBean.setAttribute(attribute); - } - @Test - public void testGetAttributeAttributeNotFoundException() throws Exception + public void testGetAttributeAttributeNotFoundException() { - // when - AttributeNotFoundException e = assertThrows(AttributeNotFoundException.class, ()->{ - objectMBean.getAttribute("ffname"); - }); + AttributeNotFoundException e = assertThrows(AttributeNotFoundException.class, () -> objectMBean.getAttribute("ffname")); - // then - assertNotNull(e, "An AttributeNotFoundException must have occurred by now as there is no " + "attribute with the name ffname in bean"); + assertNotNull(e, "An AttributeNotFoundException must have occurred by now as there is no attribute with the name ffname in bean"); } @Test public void testSetAttributeWithCorrectAttrName() throws Exception { - // given - setUpGetAttribute("fname","charu"); + Attribute attribute = new Attribute("fname", "charu"); + objectMBean.setAttribute(attribute); - // when - value = (String)objectMBean.getAttribute("fname"); + String value = (String)objectMBean.getAttribute("fname"); - // then - assertEquals("charu", value, "Attribute(fname) value must be equl to charu"); + assertEquals("charu", value, "Attribute(fname) value must be equal to charu"); } @Test public void testSetAttributeNullCheck() throws Exception { - // given objectMBean.setAttribute(null); - // when - AttributeNotFoundException e = assertThrows(AttributeNotFoundException.class, ()->{ - objectMBean.getAttribute(null); - }); + AttributeNotFoundException e = assertThrows(AttributeNotFoundException.class, () -> objectMBean.getAttribute(null)); - // then - assertNotNull(e,"An AttributeNotFoundException must have occurred by now as there is no attribute with the name null"); + assertNotNull(e, "An AttributeNotFoundException must have occurred by now as there is no attribute with the name null"); } @Test - public void testSetAttributeAttributeWithWrongAttrName() throws Exception + public void testSetAttributeAttributeWithWrongAttrName() { - // given - attribute = new Attribute("fnameee","charu"); + attribute = new Attribute("fnameee", "charu"); - // when - AttributeNotFoundException e = assertThrows(AttributeNotFoundException.class, ()->{ - objectMBean.setAttribute(attribute); - }); + AttributeNotFoundException e = assertThrows(AttributeNotFoundException.class, () -> objectMBean.setAttribute(attribute)); - // then assertNotNull(e, "An AttributeNotFoundException must have occurred by now as there is no attribute " + "with the name ffname in bean"); } @Test - public void testSetAttributesWithCorrectValues() throws Exception + public void testSetAttributesWithCorrectValues() { - // given - attributes = getAttributes("fname","vijay"); - attributes = objectMBean.setAttributes(attributes); + AttributeList attributes = getAttributes("fname", "vijay"); + objectMBean.setAttributes(attributes); - // when - attributes = objectMBean.getAttributes(new String[] - { "fname" }); + attributes = objectMBean.getAttributes(new String[]{"fname"}); - // then + assertEquals(1, attributes.size()); assertEquals("vijay", ((Attribute)(attributes.get(0))).getValue(), "Fname value must be equal to vijay"); } @Test - public void testSetAttributesForArrayTypeAttribue() throws Exception + public void testSetAttributesForArrayTypeAttribute() throws Exception { - // given - derivedes = getArrayTypeAttribute(); + Derived[] deriveds = getArrayTypeAttribute(); - // when - derivedManaged.setAddresses(derivedes); + derivedManaged.setAddresses(deriveds); mBeanDerivedManaged.getMBeanInfo(); - // then assertNotNull(mBeanDerivedManaged.getAttribute("addresses"), "Address object shouldn't be null"); } @Test public void testSetAttributesForCollectionTypeAttribue() throws Exception { - // given - aliasNames = getCollectionTypeAttribute(); + ArrayList aliasNames = new ArrayList<>(Arrays.asList(getArrayTypeAttribute())); - // when derivedManaged.setAliasNames(aliasNames); mBeanDerivedManaged.getMBeanInfo(); - // then assertNotNull(mBeanDerivedManaged.getAttribute("aliasNames"), "Address object shouldn't be null"); - assertNull(mBeanDerivedManaged.getAttribute("derived"), "Derived object shouldn't registerd with container so its value will be null"); + assertNull(mBeanDerivedManaged.getAttribute("derived"), "Derived object shouldn't registered with container so its value will be null"); } private Derived[] getArrayTypeAttribute() @@ -248,119 +169,74 @@ public class ObjectMBeanUtilTest MBeanContainer mBeanDerivedManagedContainer = new MBeanContainer(ManagementFactory.getPlatformMBeanServer()); mBeanDerivedManaged.setMBeanContainer(mBeanDerivedManagedContainer); Derived derived0 = new Derived(); - mBeanDerivedManagedContainer.beanAdded(null,derived0); - Derived[] derivedes = new Derived[3]; + mBeanDerivedManagedContainer.beanAdded(null, derived0); + Derived[] deriveds = new Derived[3]; for (int i = 0; i < 3; i++) - { - derivedes[i] = new Derived(); - } - derivedManaged.setAddresses(derivedes); + deriveds[i] = new Derived(); + derivedManaged.setAddresses(deriveds); mBeanDerivedManaged.getMBeanInfo(); - ArrayList aliasNames = new ArrayList(Arrays.asList(derivedes)); + ArrayList aliasNames = new ArrayList<>(Arrays.asList(deriveds)); derivedManaged.setAliasNames(aliasNames); - return derivedes; - } - - private ArrayList getCollectionTypeAttribute() - { - ArrayList aliasNames = new ArrayList(Arrays.asList(getArrayTypeAttribute())); - return aliasNames; + return deriveds; } @Test public void testSetAttributesException() { - // given - attributes = getAttributes("fnameee","charu"); + AttributeList attributes = getAttributes("fnameee", "charu"); - // when attributes = objectMBean.setAttributes(attributes); - // then // Original code eating the exception and returning zero size list - assertEquals(EMPTY,attributes.size(),"As there is no attribute with the name fnameee, this should return empty"); + assertEquals(0, attributes.size(), "As there is no attribute with the name fnameee, this should return empty"); } private AttributeList getAttributes(String name, String value) { - Attribute attribute = new Attribute(name,value); + Attribute attribute = new Attribute(name, value); AttributeList attributes = new AttributeList(); attributes.add(attribute); return attributes; } @Test - public void testInvokeMBeanException() throws Exception + public void testInvokeMBeanException() { - // given - setMBeanInfoForInvoke(); + ReflectionException e = assertThrows(ReflectionException.class, () -> objectMBean.invoke("doodle2", new Object[0], new String[0])); - // when - ReflectionException e = assertThrows(ReflectionException.class, ()->{ - objectMBean.invoke("doodle2",new Object[] {},new String[] {}); - }); - - // then assertNotNull(e, "An ReflectionException must have occurred by now as doodle2() in Derived bean is private"); } @Test - public void testInvokeReflectionException() throws Exception + public void testInvokeReflectionException() { - // given - setMBeanInfoForInvoke(); + MBeanException e = assertThrows(MBeanException.class, () -> objectMBean.invoke("doodle1", new Object[0], new String[0])); - // when - MBeanException e = assertThrows(MBeanException.class, ()->{ - objectMBean.invoke("doodle1",new Object[] {},new String[] {}); - }); - - // then assertNotNull(e, "MBeanException is null"); } @Test public void testInvoke() throws Exception { - // given - setMBeanInfoForInvoke(); + String value = (String)objectMBean.invoke("good", new Object[0], new String[0]); - // when - value = (String)objectMBean.invoke("good",new Object[] {},new String[] {}); - - // then assertEquals("not bad", value, "Method(good) invocation on objectMBean must return not bad"); } @Test - public void testInvokeNoSuchMethodException() throws Exception + public void testInvokeNoSuchMethodException() { - // given - setMBeanInfoForInvoke(); + // DerivedMBean contains a managed method with the name good, + // we must call this method without any arguments. + ReflectionException e = assertThrows(ReflectionException.class, () -> + objectMBean.invoke("good", new Object[0], new String[]{"int aone"})); - // when - // DerivedMBean contains a managed method with the name good,we must - // call this method without any arguments - ReflectionException e = assertThrows(ReflectionException.class, ()->{ - objectMBean.invoke("good",new Object[] {},new String[] - { "int aone" }); - }); - - // then assertNotNull(e, "An ReflectionException must have occurred by now as we cannot call a methow with wrong signature"); - - } - - private void setMBeanInfoForInvoke() - { - objectMBean = (ObjectMBean)ObjectMBean.mbeanFor(derivedExtended); - container.beanAdded(null,derivedExtended); - objectMBean.getMBeanInfo(); } @Test - public void testToVariableName() + public void testToAttributeName() { - assertEquals("fullName",MetaData.toAttributeName("isfullName")); + assertEquals("fullName", MetaData.toAttributeName("isfullName")); } } diff --git a/jetty-jmx/src/test/java/org/eclipse/jetty/jmx/PojoTest.java b/jetty-jmx/src/test/java/org/eclipse/jetty/jmx/PojoTest.java index 3ea782d22ff..2d1aad0bae0 100644 --- a/jetty-jmx/src/test/java/org/eclipse/jetty/jmx/PojoTest.java +++ b/jetty-jmx/src/test/java/org/eclipse/jetty/jmx/PojoTest.java @@ -20,27 +20,25 @@ package org.eclipse.jetty.jmx; import java.util.Arrays; import java.util.List; -import org.eclipse.jetty.util.log.jmx.LogMBean; -import org.junit.jupiter.api.Test; + import com.openpojo.reflection.impl.PojoClassFactory; import com.openpojo.validation.Validator; import com.openpojo.validation.ValidatorBuilder; import com.openpojo.validation.test.impl.GetterTester; import com.openpojo.validation.test.impl.SetterTester; +import org.eclipse.jetty.util.log.jmx.LogMBean; +import org.junit.jupiter.api.Test; /* * This class tests all the getters and setters for a given list of classes. */ public class PojoTest { - - private Validator validator; - @Test public void testOpenPojo() { - validator = ValidatorBuilder.create().with(new SetterTester()).with(new GetterTester()).build(); - List classes = Arrays.asList(MBeanContainer.class,ObjectMBean.class,LogMBean.class); + Validator validator = ValidatorBuilder.create().with(new SetterTester()).with(new GetterTester()).build(); + List classes = Arrays.asList(MBeanContainer.class, ObjectMBean.class, LogMBean.class); for (Class clazz : classes) { validator.validate(PojoClassFactory.getPojoClass(clazz)); diff --git a/jetty-jmx/src/test/resources/jetty-logging.properties b/jetty-jmx/src/test/resources/jetty-logging.properties index f0392ad78c1..ad4b63c91cc 100644 --- a/jetty-jmx/src/test/resources/jetty-logging.properties +++ b/jetty-jmx/src/test/resources/jetty-logging.properties @@ -1,2 +1,2 @@ org.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.StdErrLog -org.eclipse.jetty.jmx.LEVEL=INFO +#org.eclipse.jetty.jmx.LEVEL=DEBUG From 87f39449a9283282a5b04854aed75032331b3cd6 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Fri, 21 Sep 2018 10:56:13 +0200 Subject: [PATCH 38/88] Issue #2727 - Revisit JMX MBean lookup behavior. Fixed NPE in case the class is an interface. Signed-off-by: Simone Bordet --- jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MetaData.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MetaData.java b/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MetaData.java index c081178b050..b7d978a37cc 100644 --- a/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MetaData.java +++ b/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MetaData.java @@ -217,7 +217,7 @@ class MetaData klass = klass.getComponentType(); if (klass.isPrimitive()) return false; - while (klass != Object.class) + while (klass != null) { if (klass.isAnnotationPresent(ManagedObject.class)) return true; From 2673ae98c2d44c1253366e7d3205109ae0f6d4b8 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Fri, 21 Sep 2018 17:56:43 +0200 Subject: [PATCH 39/88] Issue #2727 - Revisit JMX MBean lookup behavior. Optimized creation of MBeanInfo. Rather than collecting attributes from the whole hierarchy, just merge the local attributes with the ones from the parent, using a Set to discard duplicates. Signed-off-by: Simone Bordet --- .../java/org/eclipse/jetty/jmx/MetaData.java | 28 +++++++++++++------ 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MetaData.java b/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MetaData.java index b7d978a37cc..6ac8fd60284 100644 --- a/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MetaData.java +++ b/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MetaData.java @@ -24,12 +24,13 @@ import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Modifier; -import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.Set; import java.util.stream.Collectors; import javax.management.Attribute; @@ -75,7 +76,6 @@ class MetaData else parseMethods(klass); _info = buildMBeanInfo(klass); - } Object newInstance(Object bean) @@ -244,35 +244,45 @@ class MetaData ManagedObject managedObject = klass.getAnnotation(ManagedObject.class); String description = managedObject == null ? "" : managedObject.value(); - List attributeInfos = new ArrayList<>(); + Set attributeInfos = new HashSet<>(); collectMBeanAttributeInfos(attributeInfos); - List operationInfos = new ArrayList<>(); + Set operationInfos = new HashSet<>(); collectMBeanOperationInfos(operationInfos); - return new MBeanInfo(klass.getName(), description, attributeInfos.toArray(new MBeanAttributeInfo[0]), new MBeanConstructorInfo[0], operationInfos.toArray(new MBeanOperationInfo[0]), new MBeanNotificationInfo[0]); + MBeanAttributeInfo[] attributes = attributeInfos.toArray(new MBeanAttributeInfo[0]); + MBeanOperationInfo[] operations = operationInfos.toArray(new MBeanOperationInfo[0]); + return new MBeanInfo(klass.getName(), description, attributes, new MBeanConstructorInfo[0], operations, new MBeanNotificationInfo[0]); } - private void collectMBeanAttributeInfos(List attributeInfos) + private void collectMBeanAttributeInfos(Set attributeInfos) { + // Priority to local attributes, then to interfaces then to superClass. _attributes.values().stream() .map(info -> info._info) .collect(Collectors.toCollection(() -> attributeInfos)); for (MetaData intf : _interfaces) intf.collectMBeanAttributeInfos(attributeInfos); if (_parent != null) - _parent.collectMBeanAttributeInfos(attributeInfos); + { + MBeanInfo parentInfo = _parent.getMBeanInfo(); + attributeInfos.addAll(Arrays.asList(parentInfo.getAttributes())); + } } - private void collectMBeanOperationInfos(List operationInfos) + private void collectMBeanOperationInfos(Set operationInfos) { + // Priority to local operations, then to interfaces then to superClass. _operations.values().stream() .map(info -> info._info) .collect(Collectors.toCollection(() -> operationInfos)); for (MetaData intf : _interfaces) intf.collectMBeanOperationInfos(operationInfos); if (_parent != null) - _parent.collectMBeanOperationInfos(operationInfos); + { + MBeanInfo parentInfo = _parent.getMBeanInfo(); + operationInfos.addAll(Arrays.asList(parentInfo.getOperations())); + } } private static MBeanException toMBeanException(InvocationTargetException x) From 53565047e0bb4b3f5db448ce4b9b4aa1ccd1e8e8 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Sun, 23 Sep 2018 12:06:53 +0200 Subject: [PATCH 40/88] Issue #2727 - Revisit JMX MBean lookup behavior. Fixed creation of MBeanInfo. Avoiding duplicating *Info by collecting them in a Map. Signed-off-by: Simone Bordet --- .../org/eclipse/jetty/jmx/MBeanContainer.java | 2 + .../java/org/eclipse/jetty/jmx/MetaData.java | 53 +++++++++++-------- 2 files changed, 33 insertions(+), 22 deletions(-) diff --git a/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MBeanContainer.java b/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MBeanContainer.java index 3f2ea7bb4f9..fb324bf1aae 100644 --- a/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MBeanContainer.java +++ b/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MBeanContainer.java @@ -196,6 +196,8 @@ public class MBeanContainer implements Container.InheritedListener, Dumpable, De MetaData existing = container._metaData.putIfAbsent(klass, metaData); if (existing != null) metaData = existing; + if (LOG.isDebugEnabled()) + LOG.debug("Cached {}", metaData); } } diff --git a/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MetaData.java b/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MetaData.java index 6ac8fd60284..425422f5a5f 100644 --- a/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MetaData.java +++ b/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MetaData.java @@ -26,11 +26,9 @@ import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.Arrays; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Locale; import java.util.Map; -import java.util.Set; import java.util.stream.Collectors; import javax.management.Attribute; @@ -56,6 +54,10 @@ import org.eclipse.jetty.util.log.Logger; class MetaData { private static final Logger LOG = Log.getLogger(MetaData.class); + private static final MBeanAttributeInfo[] NO_ATTRIBUTES = new MBeanAttributeInfo[0]; + private static final MBeanConstructorInfo[] NO_CONSTRUCTORS = new MBeanConstructorInfo[0]; + private static final MBeanOperationInfo[] NO_OPERATIONS = new MBeanOperationInfo[0]; + private static final MBeanNotificationInfo[] NO_NOTIFICATIONS = new MBeanNotificationInfo[0]; private final Map _attributes = new HashMap<>(); private final Map _operations = new HashMap<>(); @@ -244,45 +246,51 @@ class MetaData ManagedObject managedObject = klass.getAnnotation(ManagedObject.class); String description = managedObject == null ? "" : managedObject.value(); - Set attributeInfos = new HashSet<>(); + Map attributeInfos = new HashMap<>(); collectMBeanAttributeInfos(attributeInfos); - Set operationInfos = new HashSet<>(); + Map operationInfos = new HashMap<>(); collectMBeanOperationInfos(operationInfos); - MBeanAttributeInfo[] attributes = attributeInfos.toArray(new MBeanAttributeInfo[0]); - MBeanOperationInfo[] operations = operationInfos.toArray(new MBeanOperationInfo[0]); - return new MBeanInfo(klass.getName(), description, attributes, new MBeanConstructorInfo[0], operations, new MBeanNotificationInfo[0]); + MBeanInfo mbeanInfo = _parent == null ? null : _parent.getMBeanInfo(); + MBeanAttributeInfo[] attributes = attributeInfos.values().toArray(NO_ATTRIBUTES); + MBeanConstructorInfo[] constructors = mbeanInfo == null ? NO_CONSTRUCTORS : mbeanInfo.getConstructors(); + MBeanOperationInfo[] operations = operationInfos.values().toArray(NO_OPERATIONS); + MBeanNotificationInfo[] notifications = mbeanInfo == null ? NO_NOTIFICATIONS : mbeanInfo.getNotifications(); + return new MBeanInfo(klass.getName(), description, attributes, constructors, operations, notifications); } - private void collectMBeanAttributeInfos(Set attributeInfos) + private void collectMBeanAttributeInfos(Map attributeInfos) { - // Priority to local attributes, then to interfaces then to superClass. - _attributes.values().stream() - .map(info -> info._info) - .collect(Collectors.toCollection(() -> attributeInfos)); + // Start with interfaces, overwrite with superClass, then overwrite with local attributes. for (MetaData intf : _interfaces) intf.collectMBeanAttributeInfos(attributeInfos); if (_parent != null) { - MBeanInfo parentInfo = _parent.getMBeanInfo(); - attributeInfos.addAll(Arrays.asList(parentInfo.getAttributes())); + MBeanAttributeInfo[] parentAttributes = _parent.getMBeanInfo().getAttributes(); + for (MBeanAttributeInfo parentAttribute : parentAttributes) + attributeInfos.put(parentAttribute.getName(), parentAttribute); } + for (Map.Entry entry : _attributes.entrySet()) + attributeInfos.put(entry.getKey(), entry.getValue()._info); } - private void collectMBeanOperationInfos(Set operationInfos) + private void collectMBeanOperationInfos(Map operationInfos) { - // Priority to local operations, then to interfaces then to superClass. - _operations.values().stream() - .map(info -> info._info) - .collect(Collectors.toCollection(() -> operationInfos)); + // Start with interfaces, overwrite with superClass, then overwrite with local operations. for (MetaData intf : _interfaces) intf.collectMBeanOperationInfos(operationInfos); if (_parent != null) { - MBeanInfo parentInfo = _parent.getMBeanInfo(); - operationInfos.addAll(Arrays.asList(parentInfo.getOperations())); + MBeanOperationInfo[] parentOperations = _parent.getMBeanInfo().getOperations(); + for (MBeanOperationInfo parentOperation : parentOperations) + { + String signature = signature(parentOperation.getName(), Arrays.stream(parentOperation.getSignature()).map(MBeanParameterInfo::getType).toArray(String[]::new)); + operationInfos.put(signature, parentOperation); + } } + for (Map.Entry entry : _operations.entrySet()) + operationInfos.put(entry.getKey(), entry.getValue()._info); } private static MBeanException toMBeanException(InvocationTargetException x) @@ -297,7 +305,8 @@ class MetaData @Override public String toString() { - return String.format("%s@%x[%s]", getClass().getSimpleName(), hashCode(), _klass.getName()); + return String.format("%s@%x[%s, attrs=%s, opers=%s]", getClass().getSimpleName(), hashCode(), + _klass.getName(), _attributes.keySet(), _operations.keySet()); } private static class AttributeInfo From 304eac7460974a1690cb0b755dcd88a7fcdd21ff Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Mon, 24 Sep 2018 16:41:03 +1000 Subject: [PATCH 41/88] improved debug (more to do) Signed-off-by: Greg Wilkins --- .../src/main/resources/jetty-logging.properties | 1 + .../java/org/eclipse/jetty/jmx/MBeanContainer.java | 12 ++++++++++++ .../main/java/org/eclipse/jetty/jmx/MetaData.java | 12 ++++++++---- .../org/eclipse/jetty/server/AbstractConnector.java | 2 +- 4 files changed, 22 insertions(+), 5 deletions(-) diff --git a/examples/embedded/src/main/resources/jetty-logging.properties b/examples/embedded/src/main/resources/jetty-logging.properties index 810f9896c7e..08b834611b3 100644 --- a/examples/embedded/src/main/resources/jetty-logging.properties +++ b/examples/embedded/src/main/resources/jetty-logging.properties @@ -9,3 +9,4 @@ #org.eclipse.jetty.server.LEVEL=DEBUG #org.eclipse.jetty.servlets.LEVEL=DEBUG #org.eclipse.jetty.alpn.LEVEL=DEBUG +org.eclipse.jetty.jmx.LEVEL=DEBUG diff --git a/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MBeanContainer.java b/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MBeanContainer.java index fb324bf1aae..1a49a9ee80e 100644 --- a/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MBeanContainer.java +++ b/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MBeanContainer.java @@ -32,6 +32,7 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; import javax.management.InstanceNotFoundException; +import javax.management.MBeanInfo; import javax.management.MBeanRegistrationException; import javax.management.MBeanServer; import javax.management.ObjectName; @@ -154,7 +155,18 @@ public class MBeanContainer implements Container.InheritedListener, Dumpable, De if (mbean instanceof ObjectMBean) ((ObjectMBean)mbean).setMBeanContainer(container); if (LOG.isDebugEnabled()) + { LOG.debug("MBean for {} is {}", o, mbean); + if (mbean instanceof ObjectMBean) + { + MBeanInfo info =((ObjectMBean)mbean).getMBeanInfo(); + for (Object a :info.getAttributes()) + LOG.debug(" {}", a); + for (Object a :info.getOperations()) + LOG.debug(" {}", a); + + } + } return mbean; } diff --git a/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MetaData.java b/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MetaData.java index 425422f5a5f..24d80292968 100644 --- a/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MetaData.java +++ b/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MetaData.java @@ -188,7 +188,7 @@ class MetaData { AttributeInfo info = new AttributeInfo(attribute, method); if (LOG.isDebugEnabled()) - LOG.debug("Found attribute for {}: {}", klass.getName(), info); + LOG.debug("Found attribute {} for {}: {}", info._name, klass.getName(), info); _attributes.put(info._name, info); } ManagedOperation operation = method.getAnnotation(ManagedOperation.class); @@ -196,7 +196,7 @@ class MetaData { OperationInfo info = new OperationInfo(operation, method); if (LOG.isDebugEnabled()) - LOG.debug("Found operation for {}: {}", klass.getName(), info); + LOG.debug("Found operation {} for {}: {}", info._name, klass.getName(), info); _operations.put(info._name, info); } } @@ -375,6 +375,8 @@ class MetaData void setAttribute(Object value, ObjectMBean mbean) throws ReflectionException, MBeanException { + if (LOG.isDebugEnabled()) + LOG.debug("setAttribute {}.{}={} {}",mbean,_info.getName(), value, _info); try { if (_setter == null) @@ -441,8 +443,8 @@ class MetaData @Override public String toString() { - return String.format("%s@%x[%s,proxied=%b,convert=%b]", getClass().getSimpleName(), hashCode(), - _name, _proxied, _convert); + return String.format("%s@%x[%s,proxied=%b,convert=%b,info=%s]", getClass().getSimpleName(), hashCode(), + _name, _proxied, _convert, _info); } } @@ -484,6 +486,8 @@ class MetaData public Object invoke(Object[] args, ObjectMBean mbean) throws ReflectionException, MBeanException { + if (LOG.isDebugEnabled()) + LOG.debug("invoke {}.{}({}) {}",mbean,_info.getName(), Arrays.asList(args), _info); try { Object target = mbean.getManagedObject(); diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/AbstractConnector.java b/jetty-server/src/main/java/org/eclipse/jetty/server/AbstractConnector.java index 224f523b129..80d61b8dd09 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/AbstractConnector.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/AbstractConnector.java @@ -226,7 +226,7 @@ public abstract class AbstractConnector extends ContainerLifeCycle implements Co } @Override - @ManagedAttribute("Idle timeout") + @ManagedAttribute public long getIdleTimeout() { return _idleTimeout; From 87aba86d745257314363cd9e75b0b9ba45a3c2f2 Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Mon, 24 Sep 2018 17:00:58 +1000 Subject: [PATCH 42/88] fix findAttribute Signed-off-by: Greg Wilkins --- .../java/org/eclipse/jetty/jmx/MetaData.java | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MetaData.java b/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MetaData.java index 24d80292968..11b0fda18e1 100644 --- a/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MetaData.java +++ b/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MetaData.java @@ -120,18 +120,27 @@ class MetaData { if (name == null) return null; - AttributeInfo result = _attributes.get(name); - if (result != null) - return result; + + AttributeInfo result = null; for (MetaData intf : _interfaces) { - result = intf.findAttribute(name); - if (result != null) - return result; + AttributeInfo r = intf.findAttribute(name); + if (r != null) + result = r; } + if (_parent != null) - return _parent.findAttribute(name); - return null; + { + AttributeInfo r = _parent.findAttribute(name); + if (r != null) + result = r; + } + + AttributeInfo r = _attributes.get(name); + if (r != null) + result = r; + + return result; } Object invoke(String name, String[] params, Object[] args, ObjectMBean mbean) throws ReflectionException, MBeanException From 92e70f2c84fc8fe017fe361f32adca875c7b05e7 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Mon, 24 Sep 2018 10:49:29 +0200 Subject: [PATCH 43/88] Issue #2727 - Revisit JMX MBean lookup behavior. Fixed invoke() lookup. Signed-off-by: Simone Bordet --- .../main/resources/jetty-logging.properties | 2 +- .../org/eclipse/jetty/jmx/MBeanContainer.java | 11 ++++---- .../java/org/eclipse/jetty/jmx/MetaData.java | 28 ++++++++++++------- .../jetty/server/AbstractConnector.java | 2 +- 4 files changed, 25 insertions(+), 18 deletions(-) diff --git a/examples/embedded/src/main/resources/jetty-logging.properties b/examples/embedded/src/main/resources/jetty-logging.properties index 08b834611b3..c0a226179d4 100644 --- a/examples/embedded/src/main/resources/jetty-logging.properties +++ b/examples/embedded/src/main/resources/jetty-logging.properties @@ -9,4 +9,4 @@ #org.eclipse.jetty.server.LEVEL=DEBUG #org.eclipse.jetty.servlets.LEVEL=DEBUG #org.eclipse.jetty.alpn.LEVEL=DEBUG -org.eclipse.jetty.jmx.LEVEL=DEBUG +#org.eclipse.jetty.jmx.LEVEL=DEBUG diff --git a/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MBeanContainer.java b/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MBeanContainer.java index 1a49a9ee80e..17ef201b4e7 100644 --- a/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MBeanContainer.java +++ b/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MBeanContainer.java @@ -159,12 +159,11 @@ public class MBeanContainer implements Container.InheritedListener, Dumpable, De LOG.debug("MBean for {} is {}", o, mbean); if (mbean instanceof ObjectMBean) { - MBeanInfo info =((ObjectMBean)mbean).getMBeanInfo(); - for (Object a :info.getAttributes()) - LOG.debug(" {}", a); - for (Object a :info.getOperations()) - LOG.debug(" {}", a); - + MBeanInfo info = ((ObjectMBean)mbean).getMBeanInfo(); + for (Object a : info.getAttributes()) + LOG.debug(" {}", a); + for (Object a : info.getOperations()) + LOG.debug(" {}", a); } } return mbean; diff --git a/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MetaData.java b/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MetaData.java index 11b0fda18e1..c290c727770 100644 --- a/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MetaData.java +++ b/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MetaData.java @@ -154,18 +154,26 @@ class MetaData private OperationInfo findOperation(String signature) { - OperationInfo result = _operations.get(signature); - if (result != null) - return result; + OperationInfo result = null; for (MetaData intf : _interfaces) { - result = intf.findOperation(signature); - if (result != null) - return result; + OperationInfo r = intf.findOperation(signature); + if (r != null) + result = r; } + if (_parent != null) - return _parent.findOperation(signature); - return null; + { + OperationInfo r = _parent.findOperation(signature); + if (r != null) + result = r; + } + + OperationInfo r = _operations.get(signature); + if (r != null) + result = r; + + return result; } private static Object newInstance(Constructor constructor, Object bean) @@ -385,7 +393,7 @@ class MetaData void setAttribute(Object value, ObjectMBean mbean) throws ReflectionException, MBeanException { if (LOG.isDebugEnabled()) - LOG.debug("setAttribute {}.{}={} {}",mbean,_info.getName(), value, _info); + LOG.debug("setAttribute {}.{}={} {}", mbean, _info.getName(), value, _info); try { if (_setter == null) @@ -496,7 +504,7 @@ class MetaData public Object invoke(Object[] args, ObjectMBean mbean) throws ReflectionException, MBeanException { if (LOG.isDebugEnabled()) - LOG.debug("invoke {}.{}({}) {}",mbean,_info.getName(), Arrays.asList(args), _info); + LOG.debug("invoke {}.{}({}) {}", mbean, _info.getName(), Arrays.asList(args), _info); try { Object target = mbean.getManagedObject(); diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/AbstractConnector.java b/jetty-server/src/main/java/org/eclipse/jetty/server/AbstractConnector.java index 80d61b8dd09..ec7b51c62b4 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/AbstractConnector.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/AbstractConnector.java @@ -226,7 +226,7 @@ public abstract class AbstractConnector extends ContainerLifeCycle implements Co } @Override - @ManagedAttribute + @ManagedAttribute("The connection idle timeout in milliseconds") public long getIdleTimeout() { return _idleTimeout; From 08d0092cbde6fda3f664dd34b272c9fcd07c357f Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Tue, 25 Sep 2018 20:52:49 +1000 Subject: [PATCH 44/88] add a sys property with the it so we know which one fail otherwise it is always same name in jenkins (#2928) Signed-off-by: olivier lamy --- .../src/it/jetty-cdi-run-forked/pom.xml | 1 + .../src/it/jetty-deploy-war-mojo-it/pom.xml | 1 + .../jetty-simple-webapp/pom.xml | 1 + .../jetty-simple-webapp/pom.xml | 1 + .../jetty-run-mojo-it/jetty-simple-webapp/pom.xml | 1 + .../jetty-simple-webapp/pom.xml | 1 + .../jetty-simple-webapp/pom.xml | 1 + .../jetty-start-mojo-it/jetty-simple-webapp/pom.xml | 1 + .../src/it/run-mojo-gwt-it/beer-server/pom.xml | 1 + .../jetty/maven/plugin/it/TestGetContent.java | 13 +++++++------ 10 files changed, 16 insertions(+), 6 deletions(-) diff --git a/jetty-maven-plugin/src/it/jetty-cdi-run-forked/pom.xml b/jetty-maven-plugin/src/it/jetty-cdi-run-forked/pom.xml index 9208f7ecd10..0933746e86a 100644 --- a/jetty-maven-plugin/src/it/jetty-cdi-run-forked/pom.xml +++ b/jetty-maven-plugin/src/it/jetty-cdi-run-forked/pom.xml @@ -57,6 +57,7 @@ ${jetty.port.file} true + ${project.groupId}:${project.artifactId} org.eclipse.jetty:jetty-maven-plugin diff --git a/jetty-maven-plugin/src/it/jetty-deploy-war-mojo-it/pom.xml b/jetty-maven-plugin/src/it/jetty-deploy-war-mojo-it/pom.xml index 528b0890f38..2ca1b218e2d 100644 --- a/jetty-maven-plugin/src/it/jetty-deploy-war-mojo-it/pom.xml +++ b/jetty-maven-plugin/src/it/jetty-deploy-war-mojo-it/pom.xml @@ -43,6 +43,7 @@ ${jetty.port.file} + ${project.groupId}:${project.artifactId} Bean Validation Webapp example diff --git a/jetty-maven-plugin/src/it/jetty-run-distro-mojo-it/jetty-simple-webapp/pom.xml b/jetty-maven-plugin/src/it/jetty-run-distro-mojo-it/jetty-simple-webapp/pom.xml index 168dd7e7b2e..a1d4c8c1ea1 100644 --- a/jetty-maven-plugin/src/it/jetty-run-distro-mojo-it/jetty-simple-webapp/pom.xml +++ b/jetty-maven-plugin/src/it/jetty-run-distro-mojo-it/jetty-simple-webapp/pom.xml @@ -70,6 +70,7 @@ ${jetty.port.file} true true + ${project.groupId}:${project.artifactId} org.eclipse.jetty:jetty-maven-plugin diff --git a/jetty-maven-plugin/src/it/jetty-run-forked-mojo-it/jetty-simple-webapp/pom.xml b/jetty-maven-plugin/src/it/jetty-run-forked-mojo-it/jetty-simple-webapp/pom.xml index c8af2120bd4..9ba881556cf 100644 --- a/jetty-maven-plugin/src/it/jetty-run-forked-mojo-it/jetty-simple-webapp/pom.xml +++ b/jetty-maven-plugin/src/it/jetty-run-forked-mojo-it/jetty-simple-webapp/pom.xml @@ -70,6 +70,7 @@ ${jetty.port.file} true true + ${project.groupId}:${project.artifactId} org.eclipse.jetty:jetty-maven-plugin diff --git a/jetty-maven-plugin/src/it/jetty-run-mojo-it/jetty-simple-webapp/pom.xml b/jetty-maven-plugin/src/it/jetty-run-mojo-it/jetty-simple-webapp/pom.xml index d8514ea74e5..099146ad7e0 100644 --- a/jetty-maven-plugin/src/it/jetty-run-mojo-it/jetty-simple-webapp/pom.xml +++ b/jetty-maven-plugin/src/it/jetty-run-mojo-it/jetty-simple-webapp/pom.xml @@ -73,6 +73,7 @@ ${jetty.port.file} true true + ${project.groupId}:${project.artifactId} org.eclipse.jetty:jetty-maven-plugin diff --git a/jetty-maven-plugin/src/it/jetty-run-war-exploded-mojo-it/jetty-simple-webapp/pom.xml b/jetty-maven-plugin/src/it/jetty-run-war-exploded-mojo-it/jetty-simple-webapp/pom.xml index 0d75cad9095..ccb42203249 100644 --- a/jetty-maven-plugin/src/it/jetty-run-war-exploded-mojo-it/jetty-simple-webapp/pom.xml +++ b/jetty-maven-plugin/src/it/jetty-run-war-exploded-mojo-it/jetty-simple-webapp/pom.xml @@ -71,6 +71,7 @@ ${jetty.port.file} true true + ${project.groupId}:${project.artifactId} org.eclipse.jetty:jetty-maven-plugin diff --git a/jetty-maven-plugin/src/it/jetty-run-war-mojo-it/jetty-simple-webapp/pom.xml b/jetty-maven-plugin/src/it/jetty-run-war-mojo-it/jetty-simple-webapp/pom.xml index 6ab552d13e2..8b6c7257ac4 100644 --- a/jetty-maven-plugin/src/it/jetty-run-war-mojo-it/jetty-simple-webapp/pom.xml +++ b/jetty-maven-plugin/src/it/jetty-run-war-mojo-it/jetty-simple-webapp/pom.xml @@ -71,6 +71,7 @@ ${jetty.port.file} true true + ${project.groupId}:${project.artifactId} org.eclipse.jetty:jetty-maven-plugin diff --git a/jetty-maven-plugin/src/it/jetty-start-mojo-it/jetty-simple-webapp/pom.xml b/jetty-maven-plugin/src/it/jetty-start-mojo-it/jetty-simple-webapp/pom.xml index feea2dbd628..d807ad4c34f 100644 --- a/jetty-maven-plugin/src/it/jetty-start-mojo-it/jetty-simple-webapp/pom.xml +++ b/jetty-maven-plugin/src/it/jetty-start-mojo-it/jetty-simple-webapp/pom.xml @@ -69,6 +69,7 @@ ${jetty.port.file} true true + ${project.groupId}:${project.artifactId} org.eclipse.jetty:jetty-maven-plugin diff --git a/jetty-maven-plugin/src/it/run-mojo-gwt-it/beer-server/pom.xml b/jetty-maven-plugin/src/it/run-mojo-gwt-it/beer-server/pom.xml index eb5310f1eaa..9e6afd3bd7a 100644 --- a/jetty-maven-plugin/src/it/run-mojo-gwt-it/beer-server/pom.xml +++ b/jetty-maven-plugin/src/it/run-mojo-gwt-it/beer-server/pom.xml @@ -74,6 +74,7 @@ ${jetty.port.file} Please enter your name + ${project.groupId}:${project.artifactId} org.eclipse.jetty:jetty-maven-plugin diff --git a/jetty-maven-plugin/src/test/java/org/eclipse/jetty/maven/plugin/it/TestGetContent.java b/jetty-maven-plugin/src/test/java/org/eclipse/jetty/maven/plugin/it/TestGetContent.java index 5c74d08c79f..51495bf8d05 100644 --- a/jetty-maven-plugin/src/test/java/org/eclipse/jetty/maven/plugin/it/TestGetContent.java +++ b/jetty-maven-plugin/src/test/java/org/eclipse/jetty/maven/plugin/it/TestGetContent.java @@ -51,23 +51,24 @@ public class TestGetContent if (Boolean.getBoolean( "helloServlet" )) { String response = httpClient.GET( "http://localhost:" + port + "/hello?name=beer" ).getContentAsString(); - assertEquals( "Hello beer", response.trim() ); + assertEquals( "Hello beer", response.trim(), "it test " + System.getProperty( "maven.it.name" ) ); response = httpClient.GET( "http://localhost:" + port + "/hello?name=foo" ).getContentAsString(); - assertEquals( "Hello foo", response.trim() ); + assertEquals( "Hello foo", response.trim(), "it test " + System.getProperty( "maven.it.name" ) ); System.out.println( "helloServlet" ); } if (Boolean.getBoolean( "pingServlet" )) { - System.out.println( "pingServlet ok" ); - String response = httpClient.GET( "http://localhost:" + port + "/ping?name=beer" ).getContentAsString(); - assertEquals( "pong beer", response.trim() ); System.out.println( "pingServlet" ); + String response = httpClient.GET( "http://localhost:" + port + "/ping?name=beer" ).getContentAsString(); + assertEquals( "pong beer", response.trim(), "it test " + System.getProperty( "maven.it.name" ) ); + System.out.println( "pingServlet ok" ); } String contentCheck = System.getProperty( "contentCheck" ); if(StringUtils.isNotBlank( contentCheck ) ) { String response = httpClient.GET( "http://localhost:" + port ).getContentAsString(); - assertTrue(response.contains(contentCheck), "response not contentCheck: " + contentCheck + ", response:" + response); + assertTrue(response.contains(contentCheck), "it test " + System.getProperty( "maven.it.name" ) + + ", response not contentCheck: " + contentCheck + ", response:" + response); System.out.println( "contentCheck" ); } } From e4ff653295a0fe72b43736a74a9249c8c3b5b479 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Tue, 25 Sep 2018 22:11:25 +0200 Subject: [PATCH 45/88] Issue #2191 - JPMS Support. Introduced --jpms option in jetty-start to run Jetty from the module-path. Introduced [jpms] sections in *.mod files, to specify JPMS command line options that needs to be added to the command line generated by jetty-start. Bumped java.transaction-api to 1.3 because it has Automatic-Module-Name. Fixed ASM version lookup using ManifestUtils. Fixed WebInfConfiguration.findAndFilterContainerPaths() to properly scan the module-path, which may contain both files and directories. Signed-off-by: Simone Bordet --- .../src/main/config/modules/annotations.mod | 3 + .../jetty/annotations/AnnotationParser.java | 73 ++++---- .../startup/startup-base-vs-home.adoc | 2 +- .../startup/startup-classpath.adoc | 2 +- jetty-plus/pom.xml | 2 +- jetty-quickstart/pom.xml | 2 - .../java/org/eclipse/jetty/start/Main.java | 18 +- .../java/org/eclipse/jetty/start/Module.java | 11 ++ .../java/org/eclipse/jetty/start/Modules.java | 4 + .../org/eclipse/jetty/start/StartArgs.java | 159 +++++++++++++++++- .../org/eclipse/jetty/util/ManifestUtils.java | 28 +++ .../src/main/config/modules/webapp.mod | 3 + .../jetty/webapp/WebInfConfiguration.java | 44 ++--- pom.xml | 2 +- tests/test-quickstart/pom.xml | 1 - 15 files changed, 274 insertions(+), 80 deletions(-) diff --git a/jetty-annotations/src/main/config/modules/annotations.mod b/jetty-annotations/src/main/config/modules/annotations.mod index ca8c3bad139..5c58290955c 100644 --- a/jetty-annotations/src/main/config/modules/annotations.mod +++ b/jetty-annotations/src/main/config/modules/annotations.mod @@ -13,3 +13,6 @@ lib/annotations/*.jar [xml] # Enable annotation scanning webapp configurations etc/jetty-annotations.xml + +[jpms] +add-modules:org.objectweb.asm diff --git a/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationParser.java b/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationParser.java index b6d9d35ceff..0b3fe364b6d 100644 --- a/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationParser.java +++ b/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationParser.java @@ -24,7 +24,6 @@ import java.io.InputStream; import java.net.URI; import java.net.URL; import java.nio.file.Path; -import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; @@ -36,6 +35,7 @@ import java.util.concurrent.ConcurrentHashMap; import org.eclipse.jetty.util.JavaVersion; import org.eclipse.jetty.util.Loader; +import org.eclipse.jetty.util.ManifestUtils; import org.eclipse.jetty.util.MultiException; import org.eclipse.jetty.util.MultiReleaseJarFile; import org.eclipse.jetty.util.log.Log; @@ -69,9 +69,8 @@ import org.objectweb.asm.Opcodes; public class AnnotationParser { private static final Logger LOG = Log.getLogger(AnnotationParser.class); - protected static int ASM_OPCODE_VERSION = Opcodes.ASM6; //compatibility of api - protected static String ASM_OPCODE_VERSION_STR = "ASM6"; - + private static final int ASM_OPCODE_VERSION = Opcodes.ASM6; //compatibility of api + /** * Map of classnames scanned and the first location from which scan occurred */ @@ -86,48 +85,44 @@ public class AnnotationParser public static int asmVersion () { int asmVersion = ASM_OPCODE_VERSION; - Package asm = Opcodes.class.getPackage(); - if (asm == null) - LOG.warn("Unknown asm runtime version, assuming version {}", ASM_OPCODE_VERSION_STR); + String version = ManifestUtils.getVersion(Opcodes.class).orElse(null); + if (version == null) + { + LOG.warn("Unknown ASM version, assuming {}", ASM_OPCODE_VERSION); + } else { - String s = asm.getImplementationVersion(); - if (s==null) - LOG.info("Unknown asm implementation version, assuming version {}", ASM_OPCODE_VERSION_STR); - else + int dot = version.indexOf('.'); + version = version.substring(0, (dot < 0 ? version.length() : dot)).trim(); + try { - int dot = s.indexOf('.'); - s = s.substring(0, (dot < 0 ? s.length() : dot)).trim(); - try + int v = Integer.parseInt(version); + switch (v) { - int v = Integer.parseInt(s); - switch (v) + case 4: { - case 4: - { - asmVersion = Opcodes.ASM4; - break; - } - case 5: - { - asmVersion = Opcodes.ASM5; - break; - } - case 6: - { - asmVersion = Opcodes.ASM6; - break; - } - default: - { - LOG.warn("Unrecognized runtime asm version, assuming {}", ASM_OPCODE_VERSION_STR); - } + asmVersion = Opcodes.ASM4; + break; + } + case 5: + { + asmVersion = Opcodes.ASM5; + break; + } + case 6: + { + asmVersion = Opcodes.ASM6; + break; + } + default: + { + LOG.warn("Unrecognized ASM version, assuming {}", ASM_OPCODE_VERSION); } } - catch (NumberFormatException e) - { - LOG.warn("Unable to parse runtime asm version, assuming version {}", ASM_OPCODE_VERSION_STR); - } + } + catch (NumberFormatException e) + { + LOG.warn("Unable to parse ASM version, assuming {}", ASM_OPCODE_VERSION); } } return asmVersion; diff --git a/jetty-documentation/src/main/asciidoc/administration/startup/startup-base-vs-home.adoc b/jetty-documentation/src/main/asciidoc/administration/startup/startup-base-vs-home.adoc index e5c347a8a00..93634198870 100644 --- a/jetty-documentation/src/main/asciidoc/administration/startup/startup-base-vs-home.adoc +++ b/jetty-documentation/src/main/asciidoc/administration/startup/startup-base-vs-home.adoc @@ -170,7 +170,7 @@ Note: order presented here is how they would appear on the classpath. 13: {VERSION} | ${jetty.home}/lib/jetty-jndi-{VERSION}.jar 14: 1.1.0.v201105071233 | ${jetty.home}/lib/jndi/javax.activation-1.1.0.v201105071233.jar 15: 1.4.1.v201005082020 | ${jetty.home}/lib/jndi/javax.mail.glassfish-1.4.1.v201005082020.jar -16: 1.2 | ${jetty.home}/lib/jndi/javax.transaction-api-1.2.jar +16: 1.3 | ${jetty.home}/lib/jndi/javax.transaction-api-1.3.jar 17: {VERSION} | ${jetty.home}/lib/jetty-rewrite-{VERSION}.jar 18: {VERSION} | ${jetty.home}/lib/jetty-security-{VERSION}.jar 19: {VERSION} | ${jetty.home}/lib/jetty-servlet-{VERSION}.jar diff --git a/jetty-documentation/src/main/asciidoc/administration/startup/startup-classpath.adoc b/jetty-documentation/src/main/asciidoc/administration/startup/startup-classpath.adoc index 4a51bc158bb..648664e42f6 100644 --- a/jetty-documentation/src/main/asciidoc/administration/startup/startup-classpath.adoc +++ b/jetty-documentation/src/main/asciidoc/administration/startup/startup-classpath.adoc @@ -80,7 +80,7 @@ Note: order presented here is how they would appear on the classpath. 13: {VERSION} | ${jetty.home}/lib/jetty-jndi-{VERSION}.jar 14: 1.1.0.v201105071233 | ${jetty.home}/lib/jndi/javax.activation-1.1.0.v201105071233.jar 15: 1.4.1.v201005082020 | ${jetty.home}/lib/jndi/javax.mail.glassfish-1.4.1.v201005082020.jar -16: 1.2 | ${jetty.home}/lib/jndi/javax.transaction-api-1.2.jar +16: 1.3 | ${jetty.home}/lib/jndi/javax.transaction-api-1.3.jar 17: {VERSION} | ${jetty.home}/lib/jetty-rewrite-{VERSION}.jar 18: {VERSION} | ${jetty.home}/lib/jetty-security-{VERSION}.jar 19: {VERSION} | ${jetty.home}/lib/jetty-servlet-{VERSION}.jar diff --git a/jetty-plus/pom.xml b/jetty-plus/pom.xml index 5f5cdb99982..e1a32f8345f 100644 --- a/jetty-plus/pom.xml +++ b/jetty-plus/pom.xml @@ -43,7 +43,7 @@ true - javax.transaction*;version="[1.1,1.3)",* + javax.transaction*;version="[1.3)",* diff --git a/jetty-quickstart/pom.xml b/jetty-quickstart/pom.xml index 1f76a98f0cb..4547244c9c4 100644 --- a/jetty-quickstart/pom.xml +++ b/jetty-quickstart/pom.xml @@ -37,7 +37,6 @@ javax.transaction javax.transaction-api - 1.2 compile @@ -49,7 +48,6 @@ org.eclipse.jetty.orbit javax.mail.glassfish - 1.4.1.v201005082020 test diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/Main.java b/jetty-start/src/main/java/org/eclipse/jetty/start/Main.java index 59c7dc72a46..c032034f2ed 100644 --- a/jetty-start/src/main/java/org/eclipse/jetty/start/Main.java +++ b/jetty-start/src/main/java/org/eclipse/jetty/start/Main.java @@ -18,11 +18,6 @@ package org.eclipse.jetty.start; -import static org.eclipse.jetty.start.UsageException.ERR_BAD_STOP_PROPS; -import static org.eclipse.jetty.start.UsageException.ERR_INVOKE_MAIN; -import static org.eclipse.jetty.start.UsageException.ERR_NOT_STOPPED; -import static org.eclipse.jetty.start.UsageException.ERR_UNKNOWN; - import java.io.BufferedReader; import java.io.File; import java.io.IOException; @@ -44,6 +39,11 @@ import org.eclipse.jetty.start.Props.Prop; import org.eclipse.jetty.start.config.CommandLineConfigSource; import org.eclipse.jetty.start.config.ConfigSource; +import static org.eclipse.jetty.start.UsageException.ERR_BAD_STOP_PROPS; +import static org.eclipse.jetty.start.UsageException.ERR_INVOKE_MAIN; +import static org.eclipse.jetty.start.UsageException.ERR_NOT_STOPPED; +import static org.eclipse.jetty.start.UsageException.ERR_UNKNOWN; + /** * Main start class. *

@@ -353,9 +353,13 @@ public class Main // ------------------------------------------------------------ // 6) Resolve Extra XMLs args.resolveExtraXmls(); - + // ------------------------------------------------------------ - // 9) Resolve Property Files + // 7) JPMS Expansion + args.expandJPMS(activeModules); + + // ------------------------------------------------------------ + // 8) Resolve Property Files args.resolvePropertyFiles(); return args; diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/Module.java b/jetty-start/src/main/java/org/eclipse/jetty/start/Module.java index 0bdd74b2b11..d449001d39c 100644 --- a/jetty-start/src/main/java/org/eclipse/jetty/start/Module.java +++ b/jetty-start/src/main/java/org/eclipse/jetty/start/Module.java @@ -89,6 +89,9 @@ public class Module implements Comparable /** List of library options for this Module */ private final List _libs=new ArrayList<>(); + + /** List of JPMS options for this Module */ + private final List _jpms=new ArrayList<>(); /** List of files for this Module */ private final List _files=new ArrayList<>(); @@ -229,6 +232,11 @@ public class Module implements Comparable { return _xmls; } + + public List getJPMS() + { + return _jpms; + } public Version getVersion() { @@ -350,6 +358,9 @@ public class Module implements Comparable case "LIBS": _libs.add(line); break; + case "JPMS": + _jpms.add(line); + break; case "LICENSE": case "LICENSES": case "LICENCE": diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/Modules.java b/jetty-start/src/main/java/org/eclipse/jetty/start/Modules.java index 69bcad311d9..e5930122ca4 100644 --- a/jetty-start/src/main/java/org/eclipse/jetty/start/Modules.java +++ b/jetty-start/src/main/java/org/eclipse/jetty/start/Modules.java @@ -154,6 +154,10 @@ public class Modules implements Iterable { System.out.printf(" XML: %s%n",xml); } + for (String jpms : module.getJPMS()) + { + System.out.printf(" JPMS: %s%n",jpms); + } for (String jvm : module.getJvmArgs()) { System.out.printf(" JVM: %s%n",jvm); diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java b/jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java index 69c61b54023..cb363dfd485 100644 --- a/jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java +++ b/jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java @@ -27,9 +27,12 @@ import java.net.URL; import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; import java.util.List; import java.util.ListIterator; import java.util.Map; @@ -37,6 +40,8 @@ import java.util.Properties; import java.util.Set; import java.util.StringTokenizer; import java.util.jar.Manifest; +import java.util.stream.Collectors; +import java.util.stream.StreamSupport; import org.eclipse.jetty.start.Props.Prop; import org.eclipse.jetty.start.config.ConfigSource; @@ -109,7 +114,8 @@ public class StartArgs System.setProperty("jetty.tag.version", tag); } - private static final String SERVER_MAIN = "org.eclipse.jetty.xml.XmlConfiguration"; + private static final String MAIN_CLASS = "org.eclipse.jetty.xml.XmlConfiguration"; + private static final String MODULE_MAIN_CLASS = "org.eclipse.jetty.xml/org.eclipse.jetty.xml.XmlConfiguration"; private final BaseHome baseHome; @@ -131,6 +137,13 @@ public class StartArgs /** List of all active [xml] sections from enabled modules */ private List xmls = new ArrayList<>(); + /** List of all active [jpms] sections for enabled modules */ + private Set jmodAdds = new LinkedHashSet<>(); + private Map> jmodPatch = new LinkedHashMap<>(); + private Map> jmodOpens = new LinkedHashMap<>(); + private Map> jmodExports = new LinkedHashMap<>(); + private Map> jmodReads = new LinkedHashMap<>(); + /** JVM arguments, found via command line and in all active [exec] sections from enabled modules */ private List jvmArgs = new ArrayList<>(); @@ -173,6 +186,7 @@ public class StartArgs private boolean listConfig = false; private boolean version = false; private boolean dryRun = false; + private boolean jpms = false; private boolean createStartd = false; private boolean updateIni = false; private String mavenBaseUri; @@ -540,6 +554,57 @@ public class StartArgs } } + void expandJPMS(List activeModules) + { + for (Module module : activeModules) + { + for (String line : module.getJPMS()) + { + line = properties.expand(line); + String directive; + if (line.startsWith(directive = "add-modules:")) + { + String[] names = line.substring(directive.length()).split(","); + Arrays.stream(names).map(String::trim).collect(Collectors.toCollection(() -> jmodAdds)); + } + else if (line.startsWith(directive = "patch-module:")) + { + parseJPMSKeyValue(module, line, directive, File.pathSeparator, jmodPatch); + } + else if (line.startsWith(directive = "add-opens:")) + { + parseJPMSKeyValue(module, line, directive, ",", jmodOpens); + } + else if (line.startsWith(directive = "add-exports:")) + { + parseJPMSKeyValue(module, line, directive, ",", jmodExports); + } + else if (line.startsWith(directive = "add-reads:")) + { + parseJPMSKeyValue(module, line, directive, ",", jmodReads); + } + else + { + throw new IllegalArgumentException("Invalid [jpms] directive " + directive + " in module " + module.getName() + ": " + line); + } + } + } + StartLog.debug("Expanded JPMS directives:%nadd-modules: %s%npatch-modules: %s%nadd-opens: %s%nadd-exports: %s%nadd-reads: %s", + jmodAdds, jmodPatch, jmodOpens, jmodExports, jmodReads); + } + + private void parseJPMSKeyValue(Module module, String line, String directive, String delimiter, Map> output) + { + String value = line.substring(directive.length()); + int equals = value.indexOf('='); + if (equals <= 0) + throw new IllegalArgumentException("Invalid [jpms] directive " + directive + " in module " + module.getName() + ": " + line); + String key = value.substring(0, equals).trim(); + List values = Arrays.asList(value.substring(equals + 1).split(delimiter)); + values = values.stream().map(String::trim).collect(Collectors.toList()); + output.computeIfAbsent(key, k -> new LinkedHashSet<>()).addAll(values); + } + public List getStartModules() { return startModules; @@ -611,9 +676,76 @@ public class StartArgs cmd.addEqualsArg("-D" + propKey,value); } - cmd.addRawArg("-cp"); - cmd.addRawArg(classpath.toString()); - cmd.addRawArg(getMainClassname()); + if (isJPMS()) + { + Map> dirsAndFiles = StreamSupport.stream(classpath.spliterator(), false) + .collect(Collectors.groupingBy(File::isDirectory)); + List files = dirsAndFiles.get(false); + if (!files.isEmpty()) + { + cmd.addRawArg("--module-path"); + String modules = files.stream() + .map(File::getAbsolutePath) + .collect(Collectors.joining(File.pathSeparator)); + cmd.addRawArg(modules); + } + List dirs = dirsAndFiles.get(true); + if (!dirs.isEmpty()) + { + cmd.addRawArg("--class-path"); + String directories = dirs.stream() + .map(File::getAbsolutePath) + .collect(Collectors.joining(File.pathSeparator)); + cmd.addRawArg(directories); + } + + if (!jmodAdds.isEmpty()) + { + cmd.addRawArg("--add-modules"); + cmd.addRawArg(String.join(",", jmodAdds)); + } + if (!jmodPatch.isEmpty()) + { + for (Map.Entry> entry : jmodPatch.entrySet()) + { + cmd.addRawArg("--patch-module"); + cmd.addRawArg(entry.getKey() + "=" + String.join(File.pathSeparator, entry.getValue())); + } + } + if (!jmodOpens.isEmpty()) + { + for (Map.Entry> entry : jmodOpens.entrySet()) + { + cmd.addRawArg("--add-opens"); + cmd.addRawArg(entry.getKey() + "=" + String.join(",", entry.getValue())); + } + } + if (!jmodExports.isEmpty()) + { + for (Map.Entry> entry : jmodExports.entrySet()) + { + cmd.addRawArg("--add-exports"); + cmd.addRawArg(entry.getKey() + "=" + String.join(",", entry.getValue())); + } + } + if (!jmodReads.isEmpty()) + { + for (Map.Entry> entry : jmodReads.entrySet()) + { + cmd.addRawArg("--add-reads"); + cmd.addRawArg(entry.getKey() + "=" + String.join(",", entry.getValue())); + } + } + + cmd.addRawArg("--module"); + cmd.addRawArg(getMainClassname()); + } + else + { + cmd.addRawArg("-cp"); + cmd.addRawArg(classpath.toString()); + cmd.addRawArg(getMainClassname()); + } } @@ -656,8 +788,8 @@ public class StartArgs public String getMainClassname() { - String mainclass = System.getProperty("jetty.server",SERVER_MAIN); - return System.getProperty("main.class",mainclass); + String mainClass = System.getProperty("jetty.server", isJPMS() ? MODULE_MAIN_CLASS : MAIN_CLASS); + return System.getProperty("main.class", mainClass); } public String getMavenLocalRepoDir() @@ -764,6 +896,11 @@ public class StartArgs return createFiles; } + public boolean isJPMS() + { + return jpms; + } + public boolean isDryRun() { return dryRun; @@ -781,7 +918,7 @@ public class StartArgs public boolean isNormalMainClass() { - return SERVER_MAIN.equals(getMainClassname()); + return MAIN_CLASS.equals(getMainClassname()); } public boolean isHelp() @@ -973,6 +1110,14 @@ public class StartArgs return; } + if ("--jpms".equals(arg)) + { + jpms = true; + // Need to fork because we cannot use JDK 9 Module APIs. + exec = true; + return; + } + if ("--dry-run".equals(arg) || "--exec-print".equals(arg)) { dryRun = true; diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/ManifestUtils.java b/jetty-util/src/main/java/org/eclipse/jetty/util/ManifestUtils.java index f39d54caa3b..83e9f5517a8 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/ManifestUtils.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/ManifestUtils.java @@ -54,4 +54,32 @@ public class ManifestUtils return Optional.empty(); } } + + /** + *

Attempts to return the version of the jar/module for the given class.

+ *

First, retrieves the {@code Implementation-Version} main attribute of the manifest; + * if that is missing, retrieves the JPMS module version (via reflection); + * if that is missing, returns an empty Optional.

+ * + * @param klass the class of the jar/module to retrieve the version + * @return the jar/module version, or an empty Optional + */ + public static Optional getVersion(Class klass) + { + Optional version = getManifest(klass).map(Manifest::getMainAttributes) + .map(attributes -> attributes.getValue("Implementation-Version")); + if (version.isPresent()) + return version; + + try + { + Object module = klass.getClass().getMethod("getModule").invoke(klass); + Object descriptor = module.getClass().getMethod("getDescriptor").invoke(module); + return (Optional)descriptor.getClass().getMethod("rawVersion").invoke(descriptor); + } + catch (Throwable x) + { + return Optional.empty(); + } + } } diff --git a/jetty-webapp/src/main/config/modules/webapp.mod b/jetty-webapp/src/main/config/modules/webapp.mod index 8b9186549bc..d41e57ce4a9 100644 --- a/jetty-webapp/src/main/config/modules/webapp.mod +++ b/jetty-webapp/src/main/config/modules/webapp.mod @@ -30,3 +30,6 @@ lib/jetty-webapp-${jetty.version}.jar ## #jetty.webapp.addSystemClasses+=,org.example. #jetty.webapp.addServerClasses+=,org.example. + +[jpms] +add-modules:java.instrument diff --git a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebInfConfiguration.java b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebInfConfiguration.java index 8e7dc4b550f..d5cc4c1b09d 100644 --- a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebInfConfiguration.java +++ b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebInfConfiguration.java @@ -159,8 +159,6 @@ public class WebInfConfiguration extends AbstractConfiguration context.getMetaData().setWebInfClassesDirs(findClassDirs(context)); } - - /** * Find jars and directories that are on the container's classpath * and apply an optional filter. The filter is a pattern applied to the @@ -177,15 +175,14 @@ public class WebInfConfiguration extends AbstractConfiguration * @param context the WebAppContext being deployed * @throws Exception if unable to apply optional filtering on the container's classpath */ - public void findAndFilterContainerPaths (final WebAppContext context) - throws Exception + public void findAndFilterContainerPaths (final WebAppContext context) throws Exception { //assume the target jvm is the same as that running int targetPlatform = JavaVersion.VERSION.getPlatform(); //allow user to specify target jvm different to current runtime Object target = context.getAttribute(JavaVersion.JAVA_TARGET_PLATFORM); if (target!=null) - targetPlatform = Integer.valueOf(target.toString()).intValue(); + targetPlatform = Integer.parseInt(target.toString()); //Apply an initial name filter to the jars to select which will be eventually //scanned for META-INF info and annotations. The filter is based on inclusion patterns. @@ -199,7 +196,7 @@ public class WebInfConfiguration extends AbstractConfiguration List containerUris = new ArrayList<>(); - while (loader != null && (loader instanceof URLClassLoader)) + while (loader instanceof URLClassLoader) { URL[] urls = ((URLClassLoader)loader).getURLs(); if (urls != null) @@ -219,12 +216,13 @@ public class WebInfConfiguration extends AbstractConfiguration loader = loader.getParent(); } - if (LOG.isDebugEnabled()) LOG.debug("Matching container urls {}", containerUris); + if (LOG.isDebugEnabled()) + LOG.debug("Matching container urls {}", containerUris); containerPathNameMatcher.match(containerUris); //if running on jvm 9 or above, we we won't be able to look at the application classloader //to extract urls, so we need to examine the classpath instead. - if (JavaVersion.VERSION.getPlatform() >= 9) + if (targetPlatform >= 9) { tmp = System.getProperty("java.class.path"); if (tmp != null) @@ -236,7 +234,8 @@ public class WebInfConfiguration extends AbstractConfiguration File f = new File(entry); cpUris.add(f.toURI()); } - if (LOG.isDebugEnabled()) LOG.debug("Matching java.class.path {}", cpUris); + if (LOG.isDebugEnabled()) + LOG.debug("Matching java.class.path {}", cpUris); containerPathNameMatcher.match(cpUris); } } @@ -253,28 +252,33 @@ public class WebInfConfiguration extends AbstractConfiguration { List moduleUris = new ArrayList<>(); String[] entries = tmp.split(File.pathSeparator); - for (String entry:entries) + for (String entry : entries) { - File dir = new File(entry); - File[] files = dir.listFiles(); - if (files != null) + File file = new File(entry); + if (file.isDirectory()) { - for (File f:files) + File[] files = file.listFiles(); + if (files != null) { - moduleUris.add(f.toURI()); + for (File f : files) + moduleUris.add(f.toURI()); } } - + else + { + moduleUris.add(file.toURI()); + } } - if (LOG.isDebugEnabled()) LOG.debug("Matching jdk.module.path {}", moduleUris); + if (LOG.isDebugEnabled()) + LOG.debug("Matching jdk.module.path {}", moduleUris); containerPathNameMatcher.match(moduleUris); } } - if (LOG.isDebugEnabled()) LOG.debug("Container paths selected:{}", context.getMetaData().getContainerResources()); + if (LOG.isDebugEnabled()) + LOG.debug("Container paths selected:{}", context.getMetaData().getContainerResources()); } - - + /** * Finds the jars that are either physically or virtually in * WEB-INF/lib, and applies an optional filter to their full diff --git a/pom.xml b/pom.xml index 5f952f93347..0edb642ac71 100644 --- a/pom.xml +++ b/pom.xml @@ -1020,7 +1020,7 @@ javax.transaction javax.transaction-api - 1.2 + 1.3 provided diff --git a/tests/test-quickstart/pom.xml b/tests/test-quickstart/pom.xml index 013d9ca080a..1fd74d1ce22 100644 --- a/tests/test-quickstart/pom.xml +++ b/tests/test-quickstart/pom.xml @@ -44,7 +44,6 @@ javax.transaction javax.transaction-api - 1.2 org.eclipse.jetty.tests From 5593e5b479291c36ab3703d37753663c90c4cce6 Mon Sep 17 00:00:00 2001 From: Jan Bartel Date: Wed, 26 Sep 2018 11:27:57 +1000 Subject: [PATCH 46/88] Jetty 9.4.x 2903 delay listener instantiation (#2930) * Issue #2903 Ensure listeners not instantiated for quickstart gen Signed-off-by: Jan Bartel --- .../annotations/WebListenerAnnotation.java | 6 +- jetty-maven-plugin/pom.xml | 20 ++++ .../QuickStartDescriptorGenerator.java | 9 +- .../jetty/quickstart/TestQuickStart.java | 7 +- .../eclipse/jetty/servlet/ListenerHolder.java | 94 +++++++++++++++---- .../jetty/servlet/ServletContextHandler.java | 9 +- .../webapp/StandardDescriptorProcessor.java | 24 +---- 7 files changed, 118 insertions(+), 51 deletions(-) diff --git a/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/WebListenerAnnotation.java b/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/WebListenerAnnotation.java index 5478d5637ab..89f9ba4f704 100644 --- a/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/WebListenerAnnotation.java +++ b/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/WebListenerAnnotation.java @@ -81,12 +81,10 @@ public class WebListenerAnnotation extends DiscoveredAnnotation { MetaData metaData = _context.getMetaData(); if (metaData.getOrigin(clazz.getName()+".listener") == Origin.NotSet) - { - java.util.EventListener listener = (java.util.EventListener)_context.getServletContext().createInstance(clazz); + { ListenerHolder h = _context.getServletHandler().newListenerHolder(new Source(Source.Origin.ANNOTATION, clazz.getName())); - h.setListener(listener); + h.setHeldClass(clazz); _context.getServletHandler().addListener(h); - _context.addEventListener(listener); } } else diff --git a/jetty-maven-plugin/pom.xml b/jetty-maven-plugin/pom.xml index c4d02c88a29..d631db23eb0 100644 --- a/jetty-maven-plugin/pom.xml +++ b/jetty-maven-plugin/pom.xml @@ -185,6 +185,26 @@ jetty-server ${project.version} + + org.eclipse.jetty + jetty-servlet + ${project.version} + + + org.eclipse.jetty + jetty-client + ${project.version} + + + org.eclipse.jetty + jetty-http + ${project.version} + + + org.eclipse.jetty + jetty-io + ${project.version} + org.eclipse.jetty jetty-jmx diff --git a/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/QuickStartDescriptorGenerator.java b/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/QuickStartDescriptorGenerator.java index 9a27e1e36c2..896bc4f84bf 100644 --- a/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/QuickStartDescriptorGenerator.java +++ b/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/QuickStartDescriptorGenerator.java @@ -51,6 +51,7 @@ import org.eclipse.jetty.security.authentication.FormAuthenticator; import org.eclipse.jetty.servlet.ErrorPageErrorHandler; import org.eclipse.jetty.servlet.FilterHolder; import org.eclipse.jetty.servlet.FilterMapping; +import org.eclipse.jetty.servlet.ListenerHolder; import org.eclipse.jetty.servlet.ServletContextHandler.JspConfig; import org.eclipse.jetty.servlet.ServletHandler; import org.eclipse.jetty.servlet.ServletHolder; @@ -176,10 +177,10 @@ public class QuickStartDescriptorGenerator .tag("param-value",_webApp.getInitParameter(p)) .closeTag(); - if (_webApp.getEventListeners() != null) - for (EventListener e : _webApp.getEventListeners()) - out.openTag("listener",origin(md,e.getClass().getCanonicalName() + ".listener")) - .tag("listener-class",e.getClass().getCanonicalName()) + if (_webApp.getServletHandler().getListeners() != null) + for (ListenerHolder e : _webApp.getServletHandler().getListeners()) + out.openTag("listener",origin(md,e.getClassName() + ".listener")) + .tag("listener-class",e.getClassName()) .closeTag(); ServletHandler servlets = _webApp.getServletHandler(); diff --git a/jetty-quickstart/src/test/java/org/eclipse/jetty/quickstart/TestQuickStart.java b/jetty-quickstart/src/test/java/org/eclipse/jetty/quickstart/TestQuickStart.java index 0636f18b921..df0a5aa91d1 100644 --- a/jetty-quickstart/src/test/java/org/eclipse/jetty/quickstart/TestQuickStart.java +++ b/jetty-quickstart/src/test/java/org/eclipse/jetty/quickstart/TestQuickStart.java @@ -24,6 +24,7 @@ import static org.junit.jupiter.api.Assertions.*; import java.io.File; import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.servlet.ListenerHolder; import org.eclipse.jetty.servlet.ServletHolder; import org.eclipse.jetty.toolchain.test.FS; import org.eclipse.jetty.toolchain.test.MavenTestingUtils; @@ -69,8 +70,10 @@ public class TestQuickStart ServletHolder fooHolder = new ServletHolder(); fooHolder.setServlet(new FooServlet()); fooHolder.setName("foo"); - quickstart.getServletHandler().addServlet(fooHolder); - quickstart.addEventListener(new FooContextListener()); + quickstart.getServletHandler().addServlet(fooHolder); + ListenerHolder lholder = new ListenerHolder(); + lholder.setListener(new FooContextListener()); + quickstart.getServletHandler().addListener(lholder); server.setHandler(quickstart); server.start(); server.stop(); diff --git a/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ListenerHolder.java b/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ListenerHolder.java index d09e298e7e8..9e94f463f62 100644 --- a/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ListenerHolder.java +++ b/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ListenerHolder.java @@ -21,54 +21,112 @@ package org.eclipse.jetty.servlet; import java.util.EventListener; +import javax.servlet.ServletContext; +import javax.servlet.ServletException; + /** * ListenerHolder * - * Specialization of AbstractHolder for servlet listeners. This + * Specialization of BaseHolder for servlet listeners. This * allows us to record where the listener originated - web.xml, * annotation, api etc. */ public class ListenerHolder extends BaseHolder { private EventListener _listener; + private boolean _initialized = false; + public ListenerHolder () + { + this (Source.EMBEDDED); + } + public ListenerHolder(Source source) { super(source); } - - public void setListener(EventListener listener) - { - _listener = listener; - setClassName(listener.getClass().getName()); - setHeldClass(listener.getClass()); - _extInstance=true; - } - + public EventListener getListener() { return _listener; } + /** + * Set an explicit instance. In this case, + * just like ServletHolder and FilterHolder, + * the listener will not be introspected for + * annotations like Resource etc. + * + * @param listener + */ + public void setListener (EventListener listener) + { + _listener = listener; + _extInstance=true; + setHeldClass(_listener.getClass()); + setClassName(_listener.getClass().getName()); + } + + + public void initialize (ServletContext context) throws Exception + { + if (!_initialized) + { + initialize(); + + if (_listener == null) + { + //create an instance of the listener and decorate it + try + { + _listener = (context instanceof ServletContextHandler.Context) + ?((ServletContextHandler.Context)context).createListener(getHeldClass()) + :getHeldClass().getDeclaredConstructor().newInstance(); + + } + catch (ServletException se) + { + Throwable cause = se.getRootCause(); + if (cause instanceof InstantiationException) + throw (InstantiationException)cause; + if (cause instanceof IllegalAccessException) + throw (IllegalAccessException)cause; + throw se; + } + } + _initialized = true; + } + } + @Override public void doStart() throws Exception { - //Listeners always have an instance eagerly created, it cannot be deferred to the doStart method - if (_listener == null) - throw new IllegalStateException("No listener instance"); - super.doStart(); + if (!java.util.EventListener.class.isAssignableFrom(_class)) + { + String msg = _class+" is not a java.util.EventListener"; + super.stop(); + throw new IllegalStateException(msg); + } } + + @Override + public void doStop() throws Exception + { + super.doStop(); + if (!_extInstance) + _listener = null; + _initialized = false; + } + @Override public String toString() { - return super.toString()+(_listener == null?"":": "+getClassName()); - } - - + return super.toString()+": "+getClassName(); + } } diff --git a/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletContextHandler.java b/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletContextHandler.java index ec0b6e853d2..8729025410b 100644 --- a/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletContextHandler.java +++ b/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletContextHandler.java @@ -356,13 +356,16 @@ public class ServletContextHandler extends ContextHandler if (_servletHandler != null) { - // Call decorators on all holders, and also on any EventListeners before - // decorators are called on any other classes (like servlets and filters) + //Ensure listener instances are created, added to ContextHandler if(_servletHandler.getListeners() != null) { for (ListenerHolder holder:_servletHandler.getListeners()) { - _objFactory.decorate(holder.getListener()); + holder.start(); + //we need to pass in the context because the ServletHandler has not + //yet got a reference to the ServletContext (happens in super.startContext) + holder.initialize(_scontext); + addEventListener(holder.getListener()); } } } diff --git a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/StandardDescriptorProcessor.java b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/StandardDescriptorProcessor.java index cae3782b160..fdfaede611b 100644 --- a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/StandardDescriptorProcessor.java +++ b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/StandardDescriptorProcessor.java @@ -1911,17 +1911,11 @@ public class StandardDescriptorProcessor extends IterativeDescriptorProcessor } ((WebDescriptor)descriptor).addClassName(className); - - Class listenerClass = (Class)context.loadClass(className); - listener = newListenerInstance(context,listenerClass, descriptor); - if (!(listener instanceof EventListener)) - { - LOG.warn("Not an EventListener: " + listener); - return; - } - context.addEventListener(listener); + + ListenerHolder h = context.getServletHandler().newListenerHolder(new Source (Source.Origin.DESCRIPTOR, descriptor.getResource().toString())); + h.setClassName(className); + context.getServletHandler().addListener(h); context.getMetaData().setOrigin(className+".listener", descriptor); - } } catch (Exception e) @@ -1960,14 +1954,4 @@ public class StandardDescriptorProcessor extends IterativeDescriptorProcessor ((ConstraintAware)context.getSecurityHandler()).setDenyUncoveredHttpMethods(true); } - - public EventListener newListenerInstance(WebAppContext context,Class clazz, Descriptor descriptor) throws Exception - { - ListenerHolder h = context.getServletHandler().newListenerHolder(new Source (Source.Origin.DESCRIPTOR, descriptor.getResource().toString())); - EventListener l = context.getServletContext().createInstance(clazz); - h.setListener(l); - context.getServletHandler().addListener(h); - return l; - - } } From 22cbbdc90047ca1632622192a07dae92cdf44369 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Wed, 26 Sep 2018 12:41:12 +0200 Subject: [PATCH 47/88] Issue #2191 - JPMS Support. Reverted wrong change in WebInfConfiguration.findAndFilterContainerPaths(). Signed-off-by: Simone Bordet --- .../java/org/eclipse/jetty/webapp/WebInfConfiguration.java | 5 +++-- jetty-webapp/src/test/resources/jetty-logging.properties | 3 +-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebInfConfiguration.java b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebInfConfiguration.java index d5cc4c1b09d..f38bc347ad8 100644 --- a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebInfConfiguration.java +++ b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebInfConfiguration.java @@ -178,8 +178,9 @@ public class WebInfConfiguration extends AbstractConfiguration public void findAndFilterContainerPaths (final WebAppContext context) throws Exception { //assume the target jvm is the same as that running - int targetPlatform = JavaVersion.VERSION.getPlatform(); + int currentPlatform = JavaVersion.VERSION.getPlatform(); //allow user to specify target jvm different to current runtime + int targetPlatform = currentPlatform; Object target = context.getAttribute(JavaVersion.JAVA_TARGET_PLATFORM); if (target!=null) targetPlatform = Integer.parseInt(target.toString()); @@ -222,7 +223,7 @@ public class WebInfConfiguration extends AbstractConfiguration //if running on jvm 9 or above, we we won't be able to look at the application classloader //to extract urls, so we need to examine the classpath instead. - if (targetPlatform >= 9) + if (currentPlatform >= 9) { tmp = System.getProperty("java.class.path"); if (tmp != null) diff --git a/jetty-webapp/src/test/resources/jetty-logging.properties b/jetty-webapp/src/test/resources/jetty-logging.properties index 4c4c7f8eddc..3c7f5b26a47 100644 --- a/jetty-webapp/src/test/resources/jetty-logging.properties +++ b/jetty-webapp/src/test/resources/jetty-logging.properties @@ -1,6 +1,5 @@ -# Setup default logging implementation for during testing org.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.StdErrLog -org.eclipse.jetty.LEVEL=INFO +#org.eclipse.jetty.LEVEL=DEBUG # org.eclipse.jetty.webapp.WebAppClassLoader.LEVEL=DEBUG # org.eclipse.jetty.util.LEVEL=DEBUG # org.eclipse.jetty.util.PathWatcher.Noisy.LEVEL=OFF From 81d02893dc441db989b47d57546d40d3a4c426a8 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Wed, 26 Sep 2018 13:21:40 +0200 Subject: [PATCH 48/88] Issue #2191 - JPMS Support. Using BaseHome.getPaths() to resolve paths for patches modules. Signed-off-by: Simone Bordet --- .../org/eclipse/jetty/start/StartArgs.java | 37 +++++++++++++------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java b/jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java index cb363dfd485..314c9ed3bf4 100644 --- a/jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java +++ b/jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java @@ -554,7 +554,7 @@ public class StartArgs } } - void expandJPMS(List activeModules) + void expandJPMS(List activeModules) throws IOException { for (Module module : activeModules) { @@ -569,19 +569,19 @@ public class StartArgs } else if (line.startsWith(directive = "patch-module:")) { - parseJPMSKeyValue(module, line, directive, File.pathSeparator, jmodPatch); + parseJPMSKeyValue(module, line, directive, true, jmodPatch); } else if (line.startsWith(directive = "add-opens:")) { - parseJPMSKeyValue(module, line, directive, ",", jmodOpens); + parseJPMSKeyValue(module, line, directive, false, jmodOpens); } else if (line.startsWith(directive = "add-exports:")) { - parseJPMSKeyValue(module, line, directive, ",", jmodExports); + parseJPMSKeyValue(module, line, directive, false, jmodExports); } else if (line.startsWith(directive = "add-reads:")) { - parseJPMSKeyValue(module, line, directive, ",", jmodReads); + parseJPMSKeyValue(module, line, directive, false, jmodReads); } else { @@ -593,16 +593,29 @@ public class StartArgs jmodAdds, jmodPatch, jmodOpens, jmodExports, jmodReads); } - private void parseJPMSKeyValue(Module module, String line, String directive, String delimiter, Map> output) + private void parseJPMSKeyValue(Module module, String line, String directive, boolean valueIsFile, Map> output) throws IOException { - String value = line.substring(directive.length()); - int equals = value.indexOf('='); + String valueString = line.substring(directive.length()); + int equals = valueString.indexOf('='); if (equals <= 0) throw new IllegalArgumentException("Invalid [jpms] directive " + directive + " in module " + module.getName() + ": " + line); - String key = value.substring(0, equals).trim(); - List values = Arrays.asList(value.substring(equals + 1).split(delimiter)); - values = values.stream().map(String::trim).collect(Collectors.toList()); - output.computeIfAbsent(key, k -> new LinkedHashSet<>()).addAll(values); + String delimiter = valueIsFile ? File.pathSeparator : ","; + String key = valueString.substring(0, equals).trim(); + String[] values = valueString.substring(equals + 1).split(delimiter); + Set result = output.computeIfAbsent(key, k -> new LinkedHashSet<>()); + for (String value : values) + { + value = value.trim(); + if (valueIsFile) + { + List paths = baseHome.getPaths(value); + paths.stream().map(Path::toAbsolutePath).map(Path::toString).collect(Collectors.toCollection(() -> result)); + } + else + { + result.add(value); + } + } } public List getStartModules() From 7e68ef1e1787bc634123f2787eb68699d88748d9 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Wed, 26 Sep 2018 13:22:29 +0200 Subject: [PATCH 49/88] Issue #2191 - JPMS Support. Now server.mod patches the servlet.api JPMS module with jetty-schemas.jar. Signed-off-by: Simone Bordet --- jetty-server/src/main/config/modules/server.mod | 3 +++ 1 file changed, 3 insertions(+) diff --git a/jetty-server/src/main/config/modules/server.mod b/jetty-server/src/main/config/modules/server.mod index f739beafbbb..2bd4718fd0d 100644 --- a/jetty-server/src/main/config/modules/server.mod +++ b/jetty-server/src/main/config/modules/server.mod @@ -24,6 +24,9 @@ lib/jetty-io-${jetty.version}.jar [xml] etc/jetty.xml +[jpms] +patch-module: servlet.api=lib/jetty-schemas-3.1.jar + [ini-template] ### Common HTTP configuration ## Scheme to use to build URIs for secure redirects From 587ecfeb9c60ff34e932e04a21c44e67b83fd28e Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Wed, 26 Sep 2018 13:36:51 +0200 Subject: [PATCH 50/88] Issue #2191 - JPMS Support. Code cleanups. Signed-off-by: Simone Bordet --- .../org/eclipse/jetty/start/StartArgs.java | 74 +++++-------------- 1 file changed, 20 insertions(+), 54 deletions(-) diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java b/jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java index 314c9ed3bf4..e9c8e1464c8 100644 --- a/jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java +++ b/jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java @@ -416,8 +416,7 @@ public class StartArgs return; } - List sortedKeys = new ArrayList<>(); - sortedKeys.addAll(systemPropertySource.keySet()); + List sortedKeys = new ArrayList<>(systemPropertySource.keySet()); Collections.sort(sortedKeys); for (String key : sortedKeys) @@ -459,11 +458,8 @@ public class StartArgs /** * Expand any command line added {@code --lib} lib references. - * - * @throws IOException - * if unable to expand the libraries */ - public void expandSystemProperties() throws IOException + public void expandSystemProperties() { StartLog.debug("Expanding System Properties"); @@ -480,7 +476,7 @@ public class StartArgs } /** - * Expand any command line added --lib lib references. + * Expand any command line added {@code --lib} lib references. * * @throws IOException * if unable to expand the libraries @@ -665,7 +661,7 @@ public class StartArgs cmd.addRawArg("-Djetty.home=" + baseHome.getHome()); cmd.addRawArg("-Djetty.base=" + baseHome.getBase()); - for (String x : jvmArgs) + for (String x : getJvmArgs()) { if (x.startsWith("-D")) { @@ -717,37 +713,25 @@ public class StartArgs cmd.addRawArg("--add-modules"); cmd.addRawArg(String.join(",", jmodAdds)); } - if (!jmodPatch.isEmpty()) + for (Map.Entry> entry : jmodPatch.entrySet()) { - for (Map.Entry> entry : jmodPatch.entrySet()) - { - cmd.addRawArg("--patch-module"); - cmd.addRawArg(entry.getKey() + "=" + String.join(File.pathSeparator, entry.getValue())); - } + cmd.addRawArg("--patch-module"); + cmd.addRawArg(entry.getKey() + "=" + String.join(File.pathSeparator, entry.getValue())); } - if (!jmodOpens.isEmpty()) + for (Map.Entry> entry : jmodOpens.entrySet()) { - for (Map.Entry> entry : jmodOpens.entrySet()) - { - cmd.addRawArg("--add-opens"); - cmd.addRawArg(entry.getKey() + "=" + String.join(",", entry.getValue())); - } + cmd.addRawArg("--add-opens"); + cmd.addRawArg(entry.getKey() + "=" + String.join(",", entry.getValue())); } - if (!jmodExports.isEmpty()) + for (Map.Entry> entry : jmodExports.entrySet()) { - for (Map.Entry> entry : jmodExports.entrySet()) - { - cmd.addRawArg("--add-exports"); - cmd.addRawArg(entry.getKey() + "=" + String.join(",", entry.getValue())); - } + cmd.addRawArg("--add-exports"); + cmd.addRawArg(entry.getKey() + "=" + String.join(",", entry.getValue())); } - if (!jmodReads.isEmpty()) + for (Map.Entry> entry : jmodReads.entrySet()) { - for (Map.Entry> entry : jmodReads.entrySet()) - { - cmd.addRawArg("--add-reads"); - cmd.addRawArg(entry.getKey() + "=" + String.join(",", entry.getValue())); - } + cmd.addRawArg("--add-reads"); + cmd.addRawArg(entry.getKey() + "=" + String.join(",", entry.getValue())); } cmd.addRawArg("--module"); @@ -1241,10 +1225,7 @@ public class StartArgs if (arg.startsWith("--skip-file-validation=")) { List moduleNames = Props.getValues(arg); - for (String moduleName : moduleNames) - { - skipFileValidationModules.add(moduleName); - } + skipFileValidationModules.addAll(moduleNames); return; } @@ -1388,12 +1369,7 @@ public class StartArgs for (String moduleName : moduleNames) { modules.add(moduleName); - List list = sources.get(moduleName); - if (list == null) - { - list = new ArrayList<>(); - sources.put(moduleName,list); - } + List list = sources.computeIfAbsent(moduleName, k -> new ArrayList<>()); list.add(source); } } @@ -1484,17 +1460,7 @@ public class StartArgs @Override public String toString() { - StringBuilder builder = new StringBuilder(); - builder.append("StartArgs [enabledModules="); - builder.append(modules); - builder.append(", xmlRefs="); - builder.append(xmlRefs); - builder.append(", properties="); - builder.append(properties); - builder.append(", jvmArgs="); - builder.append(jvmArgs); - builder.append("]"); - return builder.toString(); + return String.format("%s[enabledModules=%s, xmlRefs=%s, properties=%s, jvmArgs=%s]", + getClass().getSimpleName(), modules, xmlRefs, properties, jvmArgs); } - } From c3ca4b7ee9d979e6d2e975bff521e4b3746c0c62 Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Fri, 28 Sep 2018 15:29:32 +1000 Subject: [PATCH 51/88] Issue #2936 Test bad message error page Signed-off-by: Greg Wilkins --- .../eclipse/jetty/servlet/ErrorPageTest.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/ErrorPageTest.java b/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/ErrorPageTest.java index dd2f1f7bfec..5ca8913035c 100644 --- a/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/ErrorPageTest.java +++ b/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/ErrorPageTest.java @@ -31,6 +31,7 @@ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.eclipse.jetty.http.BadMessageException; import org.eclipse.jetty.server.Dispatcher; import org.eclipse.jetty.server.HttpChannel; import org.eclipse.jetty.server.LocalConnector; @@ -63,11 +64,13 @@ public class ErrorPageTest context.addServlet(FailServlet.class, "/fail/*"); context.addServlet(FailClosedServlet.class, "/fail-closed/*"); context.addServlet(ErrorServlet.class, "/error/*"); + context.addServlet(AppServlet.class, "/app/*"); ErrorPageErrorHandler error = new ErrorPageErrorHandler(); context.setErrorHandler(error); error.addErrorPage(599,"/error/599"); error.addErrorPage(IllegalStateException.class.getCanonicalName(),"/error/TestException"); + error.addErrorPage(BadMessageException.class,"/error/TestException"); error.addErrorPage(ErrorPageErrorHandler.GLOBAL_ERROR_PAGE,"/error/GlobalErrorPage"); _server.start(); @@ -157,6 +160,33 @@ public class ErrorPageTest } } + @Test + public void testBadMessage() throws Exception + { + String response = _connector.getResponse("GET /app?baa=%88%A4 HTTP/1.0\r\n\r\n"); + assertThat(response, Matchers.containsString("HTTP/1.1 400 Unable to parse URI query")); + assertThat(response, Matchers.containsString("ERROR_PAGE: /TestException")); + assertThat(response, Matchers.containsString("ERROR_MESSAGE: Unable to parse URI query")); + assertThat(response, Matchers.containsString("ERROR_CODE: 400")); + assertThat(response, Matchers.containsString("ERROR_EXCEPTION: org.eclipse.jetty.http.BadMessageException: 400: Unable to parse URI query")); + assertThat(response, Matchers.containsString("ERROR_EXCEPTION_TYPE: class org.eclipse.jetty.http.BadMessageException")); + assertThat(response, Matchers.containsString("ERROR_SERVLET: org.eclipse.jetty.servlet.ErrorPageTest$AppServlet-")); + assertThat(response, Matchers.containsString("ERROR_REQUEST_URI: /app")); + assertThat(response, Matchers.containsString("getParameterMap()= {}")); + } + + + public static class AppServlet extends HttpServlet implements Servlet + { + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException + { + PrintWriter writer = response.getWriter(); + writer.println(request.getRequestURI()); + writer.println(request.getParameterMap().toString()); + } + } + public static class FailServlet extends HttpServlet implements Servlet { @Override @@ -202,6 +232,7 @@ public class ErrorPageTest writer.println("ERROR_EXCEPTION_TYPE: " + request.getAttribute(Dispatcher.ERROR_EXCEPTION_TYPE)); writer.println("ERROR_SERVLET: " + request.getAttribute(Dispatcher.ERROR_SERVLET_NAME)); writer.println("ERROR_REQUEST_URI: " + request.getAttribute(Dispatcher.ERROR_REQUEST_URI)); + writer.println("getParameterMap()= " + request.getParameterMap()); } } From 2b11d30a45969aa126bdbc53d68f98ef1ff22987 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Fri, 28 Sep 2018 09:29:52 +0200 Subject: [PATCH 52/88] Issue #2868 - Adding SPNEGO authentication support for Jetty Client. Renamed server-side classes and added javadocs. Deprecated old server-side classes in favor of the new ones. Signed-off-by: Simone Bordet --- .../client/util/SPNEGOAuthenticationTest.java | 10 ++--- ...va => ConfigurableSpnegoLoginService.java} | 41 +++++++++++++++++-- .../jetty/security/SpnegoLoginService.java | 4 ++ ...a => ConfigurableSpnegoAuthenticator.java} | 19 +++++++-- .../authentication/SpnegoAuthenticator.java | 4 ++ 5 files changed, 66 insertions(+), 12 deletions(-) rename jetty-security/src/main/java/org/eclipse/jetty/security/{SpnegoLoginService2.java => ConfigurableSpnegoLoginService.java} (86%) rename jetty-security/src/main/java/org/eclipse/jetty/security/authentication/{SpnegoAuthenticator2.java => ConfigurableSpnegoAuthenticator.java} (91%) diff --git a/jetty-client/src/test/java/org/eclipse/jetty/client/util/SPNEGOAuthenticationTest.java b/jetty-client/src/test/java/org/eclipse/jetty/client/util/SPNEGOAuthenticationTest.java index 906a36d751a..df8453def1b 100644 --- a/jetty-client/src/test/java/org/eclipse/jetty/client/util/SPNEGOAuthenticationTest.java +++ b/jetty-client/src/test/java/org/eclipse/jetty/client/util/SPNEGOAuthenticationTest.java @@ -39,12 +39,12 @@ import org.eclipse.jetty.client.api.AuthenticationStore; import org.eclipse.jetty.client.api.ContentResponse; import org.eclipse.jetty.client.api.Request; import org.eclipse.jetty.client.api.Response; +import org.eclipse.jetty.security.ConfigurableSpnegoLoginService; import org.eclipse.jetty.security.ConstraintMapping; import org.eclipse.jetty.security.ConstraintSecurityHandler; import org.eclipse.jetty.security.HashLoginService; -import org.eclipse.jetty.security.SpnegoLoginService2; import org.eclipse.jetty.security.authentication.AuthorizationService; -import org.eclipse.jetty.security.authentication.SpnegoAuthenticator2; +import org.eclipse.jetty.security.authentication.ConfigurableSpnegoAuthenticator; import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.session.DefaultSessionIdManager; @@ -88,7 +88,7 @@ public class SPNEGOAuthenticationTest extends AbstractHttpClientServerTest private Path serviceKeyTabPath = testDirPath.resolve("service.keytab"); private Path clientKeyTabPath = testDirPath.resolve("client.keytab"); private SimpleKdcServer kdc; - private SpnegoAuthenticator2 authenticator; + private ConfigurableSpnegoAuthenticator authenticator; @BeforeEach public void prepare() throws Exception @@ -123,7 +123,7 @@ public class SPNEGOAuthenticationTest extends AbstractHttpClientServerTest server = new Server(); server.setSessionIdManager(new DefaultSessionIdManager(server)); HashLoginService authorizationService = new HashLoginService(realm, realmPropsPath.toString()); - SpnegoLoginService2 loginService = new SpnegoLoginService2(realm, AuthorizationService.from(authorizationService, "")); + ConfigurableSpnegoLoginService loginService = new ConfigurableSpnegoLoginService(realm, AuthorizationService.from(authorizationService, "")); loginService.addBean(authorizationService); loginService.setKeyTabPath(serviceKeyTabPath); loginService.setServiceName(serviceName); @@ -138,7 +138,7 @@ public class SPNEGOAuthenticationTest extends AbstractHttpClientServerTest mapping.setPathSpec("/secure"); mapping.setConstraint(constraint); securityHandler.addConstraintMapping(mapping); - authenticator = new SpnegoAuthenticator2(); + authenticator = new ConfigurableSpnegoAuthenticator(); securityHandler.setAuthenticator(authenticator); securityHandler.setLoginService(loginService); securityHandler.setHandler(handler); diff --git a/jetty-security/src/main/java/org/eclipse/jetty/security/SpnegoLoginService2.java b/jetty-security/src/main/java/org/eclipse/jetty/security/ConfigurableSpnegoLoginService.java similarity index 86% rename from jetty-security/src/main/java/org/eclipse/jetty/security/SpnegoLoginService2.java rename to jetty-security/src/main/java/org/eclipse/jetty/security/ConfigurableSpnegoLoginService.java index 84c981a1817..48e9cc88047 100644 --- a/jetty-security/src/main/java/org/eclipse/jetty/security/SpnegoLoginService2.java +++ b/jetty-security/src/main/java/org/eclipse/jetty/security/ConfigurableSpnegoLoginService.java @@ -46,9 +46,20 @@ import org.ietf.jgss.GSSManager; import org.ietf.jgss.GSSName; import org.ietf.jgss.Oid; -public class SpnegoLoginService2 extends ContainerLifeCycle implements LoginService +/** + *

A configurable (as opposed to using system properties) SPNEGO LoginService.

+ *

At startup, this LoginService will login via JAAS the service principal, composed + * of the {@link #getServiceName() service name} and the {@link #getHostName() host name}, + * for example {@code HTTP/wonder.com}, using a {@code keyTab} file as the service principal + * credentials.

+ *

Upon receiving a HTTP request, the server tries to authenticate the client + * calling {@link #login(String, Object, ServletRequest)} where the GSS APIs are used to + * verify client tokens and (perhaps after a few round-trips) a {@code GSSContext} is + * established.

+ */ +public class ConfigurableSpnegoLoginService extends ContainerLifeCycle implements LoginService { - private static final Logger LOG = Log.getLogger(SpnegoLoginService2.class); + private static final Logger LOG = Log.getLogger(ConfigurableSpnegoLoginService.class); private final GSSManager _gssManager = GSSManager.getInstance(); private final String _realm; @@ -59,43 +70,67 @@ public class SpnegoLoginService2 extends ContainerLifeCycle implements LoginServ private String _hostName; private SpnegoContext _context; - public SpnegoLoginService2(String realm, AuthorizationService authorizationService) + public ConfigurableSpnegoLoginService(String realm, AuthorizationService authorizationService) { _realm = realm; _authorizationService = authorizationService; } + /** + * @return the realm name + */ @Override public String getName() { return _realm; } + /** + * @return the path of the keyTab file containing service credentials + */ public Path getKeyTabPath() { return _keyTabPath; } + /** + * @param keyTabFile the path of the keyTab file containing service credentials + */ public void setKeyTabPath(Path keyTabFile) { _keyTabPath = keyTabFile; } + /** + * @return the service name, typically "HTTP" + * @see #getHostName() + */ public String getServiceName() { return _serviceName; } + /** + * @param serviceName the service name + * @see #setHostName(String) + */ public void setServiceName(String serviceName) { _serviceName = serviceName; } + /** + * @return the host name of the service + * @see #setServiceName(String) + */ public String getHostName() { return _hostName; } + /** + * @param hostName the host name of the service + */ public void setHostName(String hostName) { _hostName = hostName; diff --git a/jetty-security/src/main/java/org/eclipse/jetty/security/SpnegoLoginService.java b/jetty-security/src/main/java/org/eclipse/jetty/security/SpnegoLoginService.java index 5ea42ddb145..41f30f0a736 100644 --- a/jetty-security/src/main/java/org/eclipse/jetty/security/SpnegoLoginService.java +++ b/jetty-security/src/main/java/org/eclipse/jetty/security/SpnegoLoginService.java @@ -36,6 +36,10 @@ import org.ietf.jgss.GSSManager; import org.ietf.jgss.GSSName; import org.ietf.jgss.Oid; +/** + * @deprecated use {@link ConfigurableSpnegoLoginService} instead + */ +@Deprecated public class SpnegoLoginService extends AbstractLifeCycle implements LoginService { private static final Logger LOG = Log.getLogger(SpnegoLoginService.class); diff --git a/jetty-security/src/main/java/org/eclipse/jetty/security/authentication/SpnegoAuthenticator2.java b/jetty-security/src/main/java/org/eclipse/jetty/security/authentication/ConfigurableSpnegoAuthenticator.java similarity index 91% rename from jetty-security/src/main/java/org/eclipse/jetty/security/authentication/SpnegoAuthenticator2.java rename to jetty-security/src/main/java/org/eclipse/jetty/security/authentication/ConfigurableSpnegoAuthenticator.java index 5e8bb43e881..59e0611af14 100644 --- a/jetty-security/src/main/java/org/eclipse/jetty/security/authentication/SpnegoAuthenticator2.java +++ b/jetty-security/src/main/java/org/eclipse/jetty/security/authentication/ConfigurableSpnegoAuthenticator.java @@ -42,14 +42,22 @@ import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Logger; import org.eclipse.jetty.util.security.Constraint; -public class SpnegoAuthenticator2 extends LoginAuthenticator +/** + *

A LoginAuthenticator that uses SPNEGO and the GSS API to authenticate requests.

+ *

A successful authentication from a client is cached for a configurable + * {@link #getAuthenticationDuration() duration} using the HTTP session; this avoids + * that the client is asked to authenticate for every request.

+ * + * @see org.eclipse.jetty.security.ConfigurableSpnegoLoginService + */ +public class ConfigurableSpnegoAuthenticator extends LoginAuthenticator { - private static final Logger LOG = Log.getLogger(SpnegoAuthenticator2.class); + private static final Logger LOG = Log.getLogger(ConfigurableSpnegoAuthenticator.class); private final String _authMethod; private Duration _authenticationDuration = Duration.ofNanos(-1); - public SpnegoAuthenticator2() + public ConfigurableSpnegoAuthenticator() { this(Constraint.__SPNEGO_AUTH); } @@ -59,7 +67,7 @@ public class SpnegoAuthenticator2 extends LoginAuthenticator * * @param authMethod the auth method */ - public SpnegoAuthenticator2(String authMethod) + public ConfigurableSpnegoAuthenticator(String authMethod) { _authMethod = authMethod; } @@ -70,6 +78,9 @@ public class SpnegoAuthenticator2 extends LoginAuthenticator return _authMethod; } + /** + * @return the authentication duration + */ public Duration getAuthenticationDuration() { return _authenticationDuration; diff --git a/jetty-security/src/main/java/org/eclipse/jetty/security/authentication/SpnegoAuthenticator.java b/jetty-security/src/main/java/org/eclipse/jetty/security/authentication/SpnegoAuthenticator.java index 0dfe1b6add5..8142eb7c4d8 100644 --- a/jetty-security/src/main/java/org/eclipse/jetty/security/authentication/SpnegoAuthenticator.java +++ b/jetty-security/src/main/java/org/eclipse/jetty/security/authentication/SpnegoAuthenticator.java @@ -35,6 +35,10 @@ import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Logger; import org.eclipse.jetty.util.security.Constraint; +/** + * @deprecated use {@link ConfigurableSpnegoAuthenticator} instead. + */ +@Deprecated public class SpnegoAuthenticator extends LoginAuthenticator { private static final Logger LOG = Log.getLogger(SpnegoAuthenticator.class); From 02eccd55aeb988c8a0eba9c9d442e60575e1f0f0 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Fri, 28 Sep 2018 10:22:51 +0200 Subject: [PATCH 53/88] Issue #2191 - JPMS Support. NPE fixes. Signed-off-by: Simone Bordet --- .../src/main/java/org/eclipse/jetty/start/StartArgs.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java b/jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java index e9c8e1464c8..58a31811064 100644 --- a/jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java +++ b/jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java @@ -690,7 +690,7 @@ public class StartArgs Map> dirsAndFiles = StreamSupport.stream(classpath.spliterator(), false) .collect(Collectors.groupingBy(File::isDirectory)); List files = dirsAndFiles.get(false); - if (!files.isEmpty()) + if (files != null && !files.isEmpty()) { cmd.addRawArg("--module-path"); String modules = files.stream() @@ -699,7 +699,7 @@ public class StartArgs cmd.addRawArg(modules); } List dirs = dirsAndFiles.get(true); - if (!dirs.isEmpty()) + if (dirs != null && !dirs.isEmpty()) { cmd.addRawArg("--class-path"); String directories = dirs.stream() From 5cac3376c60e024b70a18b31d41759dfe9775891 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Fri, 28 Sep 2018 13:23:43 +0200 Subject: [PATCH 54/88] Issue #2191 - JPMS Support. JPMS documentation. Signed-off-by: Simone Bordet --- .../administration/startup/chapter.adoc | 1 + .../administration/startup/startup-jpms.adoc | 190 ++++++++++++++++++ 2 files changed, 191 insertions(+) create mode 100644 jetty-documentation/src/main/asciidoc/administration/startup/startup-jpms.adoc diff --git a/jetty-documentation/src/main/asciidoc/administration/startup/chapter.adoc b/jetty-documentation/src/main/asciidoc/administration/startup/chapter.adoc index 441d8d47d87..3b63ab8ae5e 100644 --- a/jetty-documentation/src/main/asciidoc/administration/startup/chapter.adoc +++ b/jetty-documentation/src/main/asciidoc/administration/startup/chapter.adoc @@ -28,3 +28,4 @@ include::custom-modules.adoc[] include::startup-xml-config.adoc[] include::startup-unix-service.adoc[] include::startup-windows-service.adoc[] +include::startup-jpms.adoc[] diff --git a/jetty-documentation/src/main/asciidoc/administration/startup/startup-jpms.adoc b/jetty-documentation/src/main/asciidoc/administration/startup/startup-jpms.adoc new file mode 100644 index 00000000000..b6fdb7b9671 --- /dev/null +++ b/jetty-documentation/src/main/asciidoc/administration/startup/startup-jpms.adoc @@ -0,0 +1,190 @@ +// +// ======================================================================== +// Copyright (c) 1995-2018 Mort Bay Consulting Pty. Ltd. +// ======================================================================== +// All rights reserved. This program and the accompanying materials +// are made available under the terms of the Eclipse Public License v1.0 +// and Apache License v2.0 which accompanies this distribution. +// +// The Eclipse Public License is available at +// http://www.eclipse.org/legal/epl-v10.html +// +// The Apache License v2.0 is available at +// http://www.opensource.org/licenses/apache2.0.php +// +// You may elect to redistribute this code under either of these licenses. +// ======================================================================== +// + +[[startup-overview]] +=== Startup using the Java Platform Module System (JPMS) + +Jetty modules are also automatic https://en.wikipedia.org/wiki/Java_Platform_Module_System[JPMS] +modules via the `Automatic-Module-Name` attribute in the jar's `MANIFEST.MF` file. + +This makes possible to run Jetty from the module-path, rather than the class-path. + +We recommend to use JDK 11 or greater due to the fact that JDK 11 removed all the +"enterprise" modules from the JDK. +The classes in these "enterprise" modules were bundled with JDK 8, and present in +"enterprise" modules in JDK 9 and JDK 10. +With JDK 11, these "enterprise" classes are either not available in the JDK (because +their corresponding module was removed), or they are present in a different module. + +Some of these "enterprise" classes are required by Jetty or by applications running +in Jetty, so it is better to use a stable source for those classes by using JDK 11 +or greater. + +==== Starting Jetty on the module-path + +To start Jetty on the module-path, rather than the class-path, it is enough to add +the `--jpms` option to the command line, for example: + +[source, screen, subs="{sub-order}"] +.... +$ mkdir my-jetty-base +$ cd my-jetty-base +$ java -jar $JETTY_HOME/start.jar --add-to-start=http +INFO : server transitively enabled, ini template available with --add-to-start=server +INFO : http initialized in ${jetty.base}/start.ini +INFO : threadpool transitively enabled, ini template available with --add-to-start=threadpool +INFO : Base directory was modified +$ java -jar $JETTY_HOME/start.jar --jpms +.... + +The example above creates a link:#startup-base-and-home[Jetty base directory] and +enables the `http` module using `--add-to-start`. +Then starts Jetty on the module-path using the `--jpms` option. + +---- +[NOTE] +When running on the module-path using the `--jpms` option, the Jetty start mechanism +will fork a second JVM passing it the right JVM options to run on the module-path. + +You will have two JVMs running: one that runs `start.jar` and one that runs Jetty on +the module-path. +---- + +If you are interested in the details of how the command line to run Jetty on the +module-path looks like, you can add the `--dry-run` option: + +[source, screen, subs="{sub-order}"] +.... +$ java -jar $JETTY_HOME/start.jar --jpms --dry-run +.... + +You will see something like this (broken in sections for clarity): + +[source, screen, subs="{sub-order}"] +.... +/opt/openjdk-11+28/bin/java +--module-path /opt/jetty/lib/servlet-api-3.1.jar:/opt/jetty/lib/jetty-schemas-3.1.jar:/opt/jetty/lib/jetty-http-9.4.13-SNAPSHOT.jar:... +--patch-module servlet.api=/opt/jetty/lib/jetty-schemas-3.1.jar +--module org.eclipse.jetty.xml/org.eclipse.jetty.xml.XmlConfiguration /opt/jetty/etc/jetty-threadpool.xml /opt/jetty/etc/jetty.xml ... +.... + +The `--module-path` option specifies the list of Jetty jars. This list depends +on the Jetty modules that have been enabled via `--add-to-start`. + +The `--patch-module` option is necessary for Servlet and JSP Containers to find XML DTDs +and XML Schemas required to validate the various XML files present in web applications +(such as `web.xml` and others). + +The `--module` option tells the JVM to run main class `XmlConfiguration` from the +`org.eclipse.jetty.xml` module, with the given XML files as program arguments. + +When the JVM starts, module `org.eclipse.jetty.xml` is added to the set of JPMS +_root modules_; all other Jetty modules, being automatic, will be resolved and added +to the module graph; jars that are not modules such as `servlet-api-3.1.jar` are on +the module-path and therefore will be made automatic modules by the JVM (hence the +derived module name `servlet.api` for this jar, referenced by the `--patch-module` +command line option above). + +==== Advanced JPMS Configuration + +Web applications may need additional services from the Servlet Container, such as +JDBC `DataSource` references or JTA `UserTransaction` references. + +For example, for JDBC it is typical to store in JNDI a reference to the connection +pool's `DataSource` (for example `com.zaxxer.hikari.HikariDataSource`) or a +reference directly to the JDBC driver's `DataSource` (for example +`com.mysql.jdbc.jdbc2.optional.MysqlDataSource`). +Jetty needs to be able to instantiate those classes and therefore needs to be able +to load those classes and all their super-classes, among which `javax.sql.DataSource`. + +When Jetty runs on the class-path, this is easily achieved by using a +link:#custom-modules[custom module]: + +[source, screen, subs="{sub-order}"] +.mysql.mod +.... +[description] +MySQL module + +[lib] +lib/mysql/mysql-connector-java-*.jar +.... + +However, when running on the module-path, things are quite different. + +Class `javax.sql.DataSource` is in a JDK bundled module named `java.sql`, which is +not automatic (it's a proper JPMS module) and it is not in the _root modules_ set; +because it is not an automatic module, it is not added to the module graph, and +therefore needs to be added explicitly using the JVM command line `--add-modules`. + +To add the JPMS module `java.sql` to the module graph, you need to modify +`mysql.mod` in the following way: + +[source, screen, subs="{sub-order}"] +.mysql.mod +.... +[description] +MySQL module + +[lib] +lib/mysql/mysql-connector-java-*.jar + +[jpms] +add-modules: java.sql +.... + +The new `[jpms]` section is only used when Jetty is started on the module-path +via the `--jpms` command line option. + +Assuming that `mysql-connector-java-*.jar` is a non JPMS modular jar, or an +automatic JPMS modular jar, the Jetty start mechanism will add +`mysql-connector-java-*.jar` to the module-path, and will add the JVM command +line option `--add-modules java.sql`. + +If `mysql-connector-java-*.jar` were a proper JPMS modular jar with name +(for example) `com.mysql.jdbc`, then it would need to be explicitly added to +the module graph, in this way: + +[source, screen, subs="{sub-order}"] +.mysql.mod +.... +[description] +MySQL module + +[lib] +lib/mysql/mysql-connector-java-*.jar + +[jpms] +add-modules: com.mysql.jdbc +.... + +Now we don't need to add JPMS module `java.sql` explicitly because it would be +a dependency of the `com.mysql.jdbc` module and therefore automatically added +to the module graph. + +The `[jpms]` section has the following format: + +[source, screen, subs="{sub-order}"] +.... +[jpms] +add-modules: (,)* +patch-module: =(:)* +add-opens: /=(,)* +add-exports: /=(,)* +add-reads: =(,)* +.... From b3739f42b85fc1870ef520625185ebee591a61ef Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Sun, 30 Sep 2018 07:01:06 -0500 Subject: [PATCH 55/88] Issue #2936 - Improving testcase to replicate reported scenario as described --- .../eclipse/jetty/servlet/ErrorPageTest.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/ErrorPageTest.java b/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/ErrorPageTest.java index 5ca8913035c..b611afb6f6f 100644 --- a/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/ErrorPageTest.java +++ b/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/ErrorPageTest.java @@ -65,12 +65,15 @@ public class ErrorPageTest context.addServlet(FailClosedServlet.class, "/fail-closed/*"); context.addServlet(ErrorServlet.class, "/error/*"); context.addServlet(AppServlet.class, "/app/*"); + context.addServlet(LongerAppServlet.class, "/longer.app/*"); ErrorPageErrorHandler error = new ErrorPageErrorHandler(); context.setErrorHandler(error); error.addErrorPage(599,"/error/599"); + error.addErrorPage(400,"/error/400"); + // error.addErrorPage(500,"/error/500"); error.addErrorPage(IllegalStateException.class.getCanonicalName(),"/error/TestException"); - error.addErrorPage(BadMessageException.class,"/error/TestException"); + error.addErrorPage(BadMessageException.class,"/error/BadMessageException"); error.addErrorPage(ErrorPageErrorHandler.GLOBAL_ERROR_PAGE,"/error/GlobalErrorPage"); _server.start(); @@ -164,8 +167,8 @@ public class ErrorPageTest public void testBadMessage() throws Exception { String response = _connector.getResponse("GET /app?baa=%88%A4 HTTP/1.0\r\n\r\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 400 Unable to parse URI query")); - assertThat(response, Matchers.containsString("ERROR_PAGE: /TestException")); + assertThat(response, Matchers.containsString("HTTP/1.1 400 Bad Request")); + assertThat(response, Matchers.containsString("ERROR_PAGE: /BadMessageException")); assertThat(response, Matchers.containsString("ERROR_MESSAGE: Unable to parse URI query")); assertThat(response, Matchers.containsString("ERROR_CODE: 400")); assertThat(response, Matchers.containsString("ERROR_EXCEPTION: org.eclipse.jetty.http.BadMessageException: 400: Unable to parse URI query")); @@ -177,13 +180,21 @@ public class ErrorPageTest public static class AppServlet extends HttpServlet implements Servlet + { + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException + { + request.getRequestDispatcher("/longer.app/").forward(request, response); + } + } + + public static class LongerAppServlet extends HttpServlet implements Servlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter writer = response.getWriter(); writer.println(request.getRequestURI()); - writer.println(request.getParameterMap().toString()); } } From fe66e3d0cbda56c05c5e9de2cb7b59cd199c7096 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Mon, 1 Oct 2018 10:43:57 -0500 Subject: [PATCH 56/88] Issue #2936 - Allow Dispatcher.error() to work for BadMessageException Signed-off-by: Joakim Erdfelt --- .../org/eclipse/jetty/server/Dispatcher.java | 21 +++++++++++++++++-- .../eclipse/jetty/servlet/ErrorPageTest.java | 6 +++--- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/Dispatcher.java b/jetty-server/src/main/java/org/eclipse/jetty/server/Dispatcher.java index bba38c90b6e..d2033a488b7 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/Dispatcher.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/Dispatcher.java @@ -31,6 +31,7 @@ import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.eclipse.jetty.http.BadMessageException; import org.eclipse.jetty.http.HttpURI; import org.eclipse.jetty.server.handler.ContextHandler; import org.eclipse.jetty.util.Attributes; @@ -195,8 +196,24 @@ public class Dispatcher implements RequestDispatcher baseRequest.setContextPath(_contextHandler.getContextPath()); baseRequest.setServletPath(null); baseRequest.setPathInfo(_pathInContext); - if (_uri.getQuery()!=null || old_uri.getQuery()!=null) - baseRequest.mergeQueryParameters(old_uri.getQuery(),_uri.getQuery(), true); + + if (_uri.getQuery() != null || old_uri.getQuery() != null) + { + try + { + baseRequest.mergeQueryParameters(old_uri.getQuery(), _uri.getQuery(), true); + } + catch (BadMessageException e) + { + // Only throw BME if not in Error Dispatch Mode + // This allows application ErrorPageErrorHandler to handle BME messages + Boolean inErrorDispatch = (Boolean) request.getAttribute(__ERROR_DISPATCH); + if(inErrorDispatch == null || !inErrorDispatch) + { + throw e; + } + } + } baseRequest.setAttributes(attr); diff --git a/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/ErrorPageTest.java b/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/ErrorPageTest.java index b611afb6f6f..7fd8431a4cb 100644 --- a/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/ErrorPageTest.java +++ b/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/ErrorPageTest.java @@ -167,11 +167,11 @@ public class ErrorPageTest public void testBadMessage() throws Exception { String response = _connector.getResponse("GET /app?baa=%88%A4 HTTP/1.0\r\n\r\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 400 Bad Request")); + assertThat(response, Matchers.containsString("HTTP/1.1 400 Bad query encoding")); assertThat(response, Matchers.containsString("ERROR_PAGE: /BadMessageException")); - assertThat(response, Matchers.containsString("ERROR_MESSAGE: Unable to parse URI query")); + assertThat(response, Matchers.containsString("ERROR_MESSAGE: Bad query encoding")); assertThat(response, Matchers.containsString("ERROR_CODE: 400")); - assertThat(response, Matchers.containsString("ERROR_EXCEPTION: org.eclipse.jetty.http.BadMessageException: 400: Unable to parse URI query")); + assertThat(response, Matchers.containsString("ERROR_EXCEPTION: org.eclipse.jetty.http.BadMessageException: 400: Bad query encoding")); assertThat(response, Matchers.containsString("ERROR_EXCEPTION_TYPE: class org.eclipse.jetty.http.BadMessageException")); assertThat(response, Matchers.containsString("ERROR_SERVLET: org.eclipse.jetty.servlet.ErrorPageTest$AppServlet-")); assertThat(response, Matchers.containsString("ERROR_REQUEST_URI: /app")); From a094dbaa697b06b640deae5e2b083f89b4637310 Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Tue, 2 Oct 2018 16:44:24 +1000 Subject: [PATCH 57/88] fix osgi tests not running as paxexam is not junit5 ready (#2945) * fix osgi tests not running as paxexam is not junit5 ready Signed-off-by: olivier lamy * upgrade pax exam to 4.12.0 Signed-off-by: olivier lamy * cleanup comment, using transitive deps from pax-exam-junit4 Signed-off-by: olivier lamy --- jetty-osgi/test-jetty-osgi/pom.xml | 21 +++++++++------------ pom.xml | 7 ------- 2 files changed, 9 insertions(+), 19 deletions(-) diff --git a/jetty-osgi/test-jetty-osgi/pom.xml b/jetty-osgi/test-jetty-osgi/pom.xml index 921948f8ea6..40340aa2fbb 100644 --- a/jetty-osgi/test-jetty-osgi/pom.xml +++ b/jetty-osgi/test-jetty-osgi/pom.xml @@ -14,7 +14,7 @@ ${project.groupId}.boot.test.osgi http://download.eclipse.org/jetty/orbit/ target/distribution - 4.11.0 + 4.12.0 2.5.2 1.0 true @@ -45,15 +45,6 @@ pax-exam-junit4 ${exam.version} test - -
org.ops4j.pax.exam @@ -405,13 +396,11 @@ org.ow2.asm asm - ${asm.version} test org.ow2.asm asm-commons - ${asm.version} test @@ -438,6 +427,14 @@ ${settings.localRepository}
+ + + + org.apache.maven.surefire + surefire-junit47 + ${maven.surefire.version} + + diff --git a/pom.xml b/pom.xml index 4df812973df..fae174072ef 100644 --- a/pom.xml +++ b/pom.xml @@ -469,13 +469,6 @@ org.apache.maven.plugins maven-failsafe-plugin ${maven.surefire.version} - - - org.junit.jupiter - junit-jupiter-engine - ${junit.version} - - org.apache.maven.plugins From 27efa6e2ad7a046120472587736594b2e9b6e1fb Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Tue, 2 Oct 2018 11:24:45 +0200 Subject: [PATCH 58/88] Issue #2868 - Adding SPNEGO authentication support for Jetty Client. Added client-side classes javadocs. Signed-off-by: Simone Bordet --- .../client/util/SPNEGOAuthentication.java | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/jetty-client/src/main/java/org/eclipse/jetty/client/util/SPNEGOAuthentication.java b/jetty-client/src/main/java/org/eclipse/jetty/client/util/SPNEGOAuthentication.java index 7fd33f988be..5a383bedc56 100644 --- a/jetty-client/src/main/java/org/eclipse/jetty/client/util/SPNEGOAuthentication.java +++ b/jetty-client/src/main/java/org/eclipse/jetty/client/util/SPNEGOAuthentication.java @@ -36,6 +36,8 @@ import javax.security.auth.login.Configuration; import javax.security.auth.login.LoginContext; import javax.security.auth.login.LoginException; +import org.eclipse.jetty.client.HttpClient; +import org.eclipse.jetty.client.api.AuthenticationStore; import org.eclipse.jetty.client.api.ContentResponse; import org.eclipse.jetty.client.api.Request; import org.eclipse.jetty.http.HttpHeader; @@ -48,6 +50,16 @@ import org.ietf.jgss.GSSManager; import org.ietf.jgss.GSSName; import org.ietf.jgss.Oid; +/** + *

Implementation of the SPNEGO (or "Negotiate") authentication defined in RFC 4559.

+ *

A {@link #getUserName() user} is logged in via JAAS (either via userName/password or + * via userName/keyTab) once only.

+ *

For every request that needs authentication, a {@link GSSContext} is initiated and + * later established after reading the response from the server.

+ *

Applications should create objects of this class and add them to the + * {@link AuthenticationStore} retrieved from the {@link HttpClient} + * via {@link HttpClient#getAuthenticationStore()}.

+ */ public class SPNEGOAuthentication extends AbstractAuthentication { private static final Logger LOG = Log.getLogger(SPNEGOAuthentication.class); @@ -73,71 +85,117 @@ public class SPNEGOAuthentication extends AbstractAuthentication return NEGOTIATE; } + /** + * @return the user name of the user to login + */ public String getUserName() { return userName; } + /** + * @param userName user name of the user to login + */ public void setUserName(String userName) { this.userName = userName; } + /** + * @return the password of the user to login + */ public String getUserPassword() { return userPassword; } + /** + * @param userPassword the password of the user to login + * @see #setUserKeyTabPath(Path) + */ public void setUserPassword(String userPassword) { this.userPassword = userPassword; } + /** + * @return the path of the keyTab file with the user credentials + */ public Path getUserKeyTabPath() { return userKeyTabPath; } + /** + * @param userKeyTabPath the path of the keyTab file with the user credentials + * @see #setUserPassword(String) + */ public void setUserKeyTabPath(Path userKeyTabPath) { this.userKeyTabPath = userKeyTabPath; } + /** + * @return the name of the service to use + */ public String getServiceName() { return serviceName; } + /** + * @param serviceName the name of the service to use + */ public void setServiceName(String serviceName) { this.serviceName = serviceName; } + /** + * @return whether to use the ticket cache during login + */ public boolean isUseTicketCache() { return useTicketCache; } + /** + * @param useTicketCache whether to use the ticket cache during login + * @see #setTicketCachePath(Path) + */ public void setUseTicketCache(boolean useTicketCache) { this.useTicketCache = useTicketCache; } + /** + * @return the path of the ticket cache file + */ public Path getTicketCachePath() { return ticketCachePath; } + /** + * @param ticketCachePath the path of the ticket cache file + * @see #setUseTicketCache(boolean) + */ public void setTicketCachePath(Path ticketCachePath) { this.ticketCachePath = ticketCachePath; } + /** + * @return whether to renew the ticket granting ticket + */ public boolean isRenewTGT() { return renewTGT; } + /** + * @param renewTGT whether to renew the ticket granting ticket + */ public void setRenewTGT(boolean renewTGT) { this.renewTGT = renewTGT; From 6b5a46b63b61d82c3403a2fc6aa571a8a3e77237 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Tue, 2 Oct 2018 11:26:32 +0200 Subject: [PATCH 59/88] Issue #2868 - Adding SPNEGO authentication support for Jetty Client. Avoid hardcoded KDC port in tests. Updated Krb5LoginModule options with refreshKrb5Config=true, to make sure the KDC configuration is re-read for every test. Signed-off-by: Simone Bordet --- .../jetty/client/util/SPNEGOAuthentication.java | 1 + .../jetty/client/util/SPNEGOAuthenticationTest.java | 11 ++++++++++- .../security/ConfigurableSpnegoLoginService.java | 1 + 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/jetty-client/src/main/java/org/eclipse/jetty/client/util/SPNEGOAuthentication.java b/jetty-client/src/main/java/org/eclipse/jetty/client/util/SPNEGOAuthentication.java index 5a383bedc56..601f4abfd24 100644 --- a/jetty-client/src/main/java/org/eclipse/jetty/client/util/SPNEGOAuthentication.java +++ b/jetty-client/src/main/java/org/eclipse/jetty/client/util/SPNEGOAuthentication.java @@ -349,6 +349,7 @@ public class SPNEGOAuthentication extends AbstractAuthentication Map options = new HashMap<>(); if (LOG.isDebugEnabled()) options.put("debug", "true"); + options.put("refreshKrb5Config", "true"); options.put("principal", getUserName()); options.put("isInitiator", "true"); Path keyTabPath = getUserKeyTabPath(); diff --git a/jetty-client/src/test/java/org/eclipse/jetty/client/util/SPNEGOAuthenticationTest.java b/jetty-client/src/test/java/org/eclipse/jetty/client/util/SPNEGOAuthenticationTest.java index df8453def1b..1185418006a 100644 --- a/jetty-client/src/test/java/org/eclipse/jetty/client/util/SPNEGOAuthenticationTest.java +++ b/jetty-client/src/test/java/org/eclipse/jetty/client/util/SPNEGOAuthenticationTest.java @@ -27,6 +27,7 @@ import java.nio.file.Path; import java.time.Duration; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -102,13 +103,21 @@ public class SPNEGOAuthenticationTest extends AbstractHttpClientServerTest kdc.setAllowTcp(true); kdc.setKdcRealm(realm); kdc.setWorkDir(testDirPath.toFile()); - kdc.setKdcTcpPort(8844); kdc.init(); kdc.createAndExportPrincipals(serviceKeyTabPath.toFile(), serviceName + "/" + serviceHost); kdc.createPrincipal(clientName + "@" + realm, clientPassword); kdc.exportPrincipal(clientName, clientKeyTabPath.toFile()); kdc.start(); + + if (LOG.isDebugEnabled()) + { + LOG.debug("KDC started on port {}", kdc.getKdcTcpPort()); + String krb5 = Files.readAllLines(testDirPath.resolve("krb5.conf")).stream() + .filter(line -> !line.startsWith("#")) + .collect(Collectors.joining(System.lineSeparator())); + LOG.debug("krb5.conf{}{}", System.lineSeparator(), krb5); + } } @AfterEach diff --git a/jetty-security/src/main/java/org/eclipse/jetty/security/ConfigurableSpnegoLoginService.java b/jetty-security/src/main/java/org/eclipse/jetty/security/ConfigurableSpnegoLoginService.java index 48e9cc88047..fe256d8e749 100644 --- a/jetty-security/src/main/java/org/eclipse/jetty/security/ConfigurableSpnegoLoginService.java +++ b/jetty-security/src/main/java/org/eclipse/jetty/security/ConfigurableSpnegoLoginService.java @@ -295,6 +295,7 @@ public class ConfigurableSpnegoLoginService extends ContainerLifeCycle implement if (LOG.isDebugEnabled()) options.put("debug", "true"); options.put("doNotPrompt", "true"); + options.put("refreshKrb5Config", "true"); options.put("principal", principal); options.put("useKeyTab", "true"); Path keyTabPath = getKeyTabPath(); From 20fff533c80f3b60939a5e72e7ac22260bf129a2 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Tue, 2 Oct 2018 11:59:52 +0200 Subject: [PATCH 60/88] Issue #2868 - Adding SPNEGO authentication support for Jetty Client. Updated server-side authentication logic after review. Signed-off-by: Simone Bordet --- .../ConfigurableSpnegoAuthenticator.java | 79 +++++++++---------- 1 file changed, 37 insertions(+), 42 deletions(-) diff --git a/jetty-security/src/main/java/org/eclipse/jetty/security/authentication/ConfigurableSpnegoAuthenticator.java b/jetty-security/src/main/java/org/eclipse/jetty/security/authentication/ConfigurableSpnegoAuthenticator.java index 59e0611af14..23873e0f36d 100644 --- a/jetty-security/src/main/java/org/eclipse/jetty/security/authentication/ConfigurableSpnegoAuthenticator.java +++ b/jetty-security/src/main/java/org/eclipse/jetty/security/authentication/ConfigurableSpnegoAuthenticator.java @@ -108,8 +108,44 @@ public class ConfigurableSpnegoAuthenticator extends LoginAuthenticator HttpServletRequest request = (HttpServletRequest)req; HttpServletResponse response = (HttpServletResponse)res; + String header = request.getHeader(HttpHeader.AUTHORIZATION.asString()); + String spnegoToken = getSpnegoToken(header); HttpSession httpSession = request.getSession(false); - if (httpSession != null) + + // We have a token from the client, so run the login. + if (header != null && spnegoToken != null) + { + SpnegoUserIdentity identity = (SpnegoUserIdentity)login(null, spnegoToken, request); + if (identity.isEstablished()) + { + if (LOG.isDebugEnabled()) + LOG.debug("Sending final challenge"); + SpnegoUserPrincipal principal = (SpnegoUserPrincipal)identity.getUserPrincipal(); + setSpnegoToken(response, principal.getEncodedToken()); + + Duration authnDuration = getAuthenticationDuration(); + if (!authnDuration.isNegative()) + { + if (httpSession == null) + httpSession = request.getSession(true); + httpSession.setAttribute(UserIdentityHolder.ATTRIBUTE, new UserIdentityHolder(identity)); + } + return new UserAuthentication(getAuthMethod(), identity); + } + else + { + if (DeferredAuthentication.isDeferred(response)) + return Authentication.UNAUTHENTICATED; + if (LOG.isDebugEnabled()) + LOG.debug("Sending intermediate challenge"); + SpnegoUserPrincipal principal = (SpnegoUserPrincipal)identity.getUserPrincipal(); + sendChallenge(response, principal.getEncodedToken()); + return Authentication.SEND_CONTINUE; + } + } + // No token from the client; check if the client has logged in + // successfully before and the authentication has not expired. + else if (httpSession != null) { UserIdentityHolder holder = (UserIdentityHolder)httpSession.getAttribute(UserIdentityHolder.ATTRIBUTE); if (holder != null) @@ -130,47 +166,6 @@ public class ConfigurableSpnegoAuthenticator extends LoginAuthenticator } } - String header = request.getHeader(HttpHeader.AUTHORIZATION.asString()); - String spnegoToken = getSpnegoToken(header); - - // The client has responded to the challenge we sent previously. - if (header != null && spnegoToken != null) - { - SpnegoUserIdentity identity = (SpnegoUserIdentity)login(null, spnegoToken, request); - if (identity != null) - { - if (identity.isEstablished()) - { - if (!DeferredAuthentication.isDeferred(response)) - { - if (LOG.isDebugEnabled()) - LOG.debug("Sending final challenge"); - SpnegoUserPrincipal principal = (SpnegoUserPrincipal)identity.getUserPrincipal(); - setSpnegoToken(response, principal.getEncodedToken()); - } - - Duration authnDuration = getAuthenticationDuration(); - if (!authnDuration.isNegative()) - { - if (httpSession == null) - httpSession = request.getSession(true); - httpSession.setAttribute(UserIdentityHolder.ATTRIBUTE, new UserIdentityHolder(identity)); - } - return new UserAuthentication(getAuthMethod(), identity); - } - else - { - if (DeferredAuthentication.isDeferred(response)) - return Authentication.UNAUTHENTICATED; - if (LOG.isDebugEnabled()) - LOG.debug("Sending intermediate challenge"); - SpnegoUserPrincipal principal = (SpnegoUserPrincipal)identity.getUserPrincipal(); - sendChallenge(response, principal.getEncodedToken()); - return Authentication.SEND_CONTINUE; - } - } - } - if (DeferredAuthentication.isDeferred(response)) return Authentication.UNAUTHENTICATED; From 42de1dffe0b7e195f6f87e0ad53598acb62f69bb Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Tue, 2 Oct 2018 13:25:33 +0200 Subject: [PATCH 61/88] Issue #2868 - Adding SPNEGO authentication support for Jetty Client. Fixed server-side logic after review. Signed-off-by: Simone Bordet --- .../ConfigurableSpnegoAuthenticator.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/jetty-security/src/main/java/org/eclipse/jetty/security/authentication/ConfigurableSpnegoAuthenticator.java b/jetty-security/src/main/java/org/eclipse/jetty/security/authentication/ConfigurableSpnegoAuthenticator.java index 23873e0f36d..6cae1a4745b 100644 --- a/jetty-security/src/main/java/org/eclipse/jetty/security/authentication/ConfigurableSpnegoAuthenticator.java +++ b/jetty-security/src/main/java/org/eclipse/jetty/security/authentication/ConfigurableSpnegoAuthenticator.java @@ -118,10 +118,15 @@ public class ConfigurableSpnegoAuthenticator extends LoginAuthenticator SpnegoUserIdentity identity = (SpnegoUserIdentity)login(null, spnegoToken, request); if (identity.isEstablished()) { - if (LOG.isDebugEnabled()) - LOG.debug("Sending final challenge"); - SpnegoUserPrincipal principal = (SpnegoUserPrincipal)identity.getUserPrincipal(); - setSpnegoToken(response, principal.getEncodedToken()); + if (!DeferredAuthentication.isDeferred(response)) + { + if (LOG.isDebugEnabled()) + LOG.debug("Sending final token"); + // Send to the client the final token so that the + // client can establish the GSS context with the server. + SpnegoUserPrincipal principal = (SpnegoUserPrincipal)identity.getUserPrincipal(); + setSpnegoToken(response, principal.getEncodedToken()); + } Duration authnDuration = getAuthenticationDuration(); if (!authnDuration.isNegative()) From 103b1292ea42d625c38d73b168a879e0e52bcafa Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Tue, 2 Oct 2018 15:16:40 +0200 Subject: [PATCH 62/88] Fixed annotations on tests that should run on specific JDK versions. Signed-off-by: Simone Bordet --- .../jetty/client/ssl/SslBytesClientTest.java | 15 ++++++----- .../jetty/client/ssl/SslBytesServerTest.java | 25 +++++++++++-------- .../jetty/util/MultiReleaseJarFileTest.java | 12 ++++----- 3 files changed, 27 insertions(+), 25 deletions(-) diff --git a/jetty-client/src/test/java/org/eclipse/jetty/client/ssl/SslBytesClientTest.java b/jetty-client/src/test/java/org/eclipse/jetty/client/ssl/SslBytesClientTest.java index a738af91c95..b30c0a39765 100644 --- a/jetty-client/src/test/java/org/eclipse/jetty/client/ssl/SslBytesClientTest.java +++ b/jetty-client/src/test/java/org/eclipse/jetty/client/ssl/SslBytesClientTest.java @@ -18,11 +18,6 @@ package org.eclipse.jetty.client.ssl; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.assertTrue; - import java.io.BufferedReader; import java.io.File; import java.io.InputStream; @@ -54,9 +49,13 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledOnJre; import org.junit.jupiter.api.condition.JRE; -/* This whole test is very specific to how TLS < 1.3 works. - * Starting in Java 11, TLS/1.3 is now enabled by default. - */ +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +// This whole test is very specific to how TLS < 1.3 works. +// Starting in Java 11, TLS/1.3 is now enabled by default. @EnabledOnJre({JRE.JAVA_8, JRE.JAVA_9, JRE.JAVA_10}) public class SslBytesClientTest extends SslBytesTest { diff --git a/jetty-client/src/test/java/org/eclipse/jetty/client/ssl/SslBytesServerTest.java b/jetty-client/src/test/java/org/eclipse/jetty/client/ssl/SslBytesServerTest.java index 92c3ff6ef8c..1fc70235043 100644 --- a/jetty-client/src/test/java/org/eclipse/jetty/client/ssl/SslBytesServerTest.java +++ b/jetty-client/src/test/java/org/eclipse/jetty/client/ssl/SslBytesServerTest.java @@ -18,12 +18,6 @@ package org.eclipse.jetty.client.ssl; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.junit.jupiter.api.Assertions.*; -import static org.junit.jupiter.api.Assumptions.assumeTrue; -import static org.junit.jupiter.api.condition.OS.LINUX; -import static org.junit.jupiter.api.condition.OS.WINDOWS; - import java.io.BufferedReader; import java.io.EOFException; import java.io.File; @@ -72,20 +66,31 @@ import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.server.SslConnectionFactory; import org.eclipse.jetty.server.handler.AbstractHandler; import org.eclipse.jetty.toolchain.test.MavenTestingUtils; -import org.eclipse.jetty.util.JavaVersion; import org.eclipse.jetty.util.component.Dumpable; import org.eclipse.jetty.util.ssl.SslContextFactory; import org.hamcrest.Matchers; - import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Assumptions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.condition.DisabledOnJre; import org.junit.jupiter.api.condition.DisabledOnOs; +import org.junit.jupiter.api.condition.EnabledOnJre; import org.junit.jupiter.api.condition.EnabledOnOs; import org.junit.jupiter.api.condition.JRE; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; +import static org.junit.jupiter.api.condition.OS.LINUX; +import static org.junit.jupiter.api.condition.OS.WINDOWS; + +// This whole test is very specific to how TLS < 1.3 works. +@EnabledOnJre({JRE.JAVA_8, JRE.JAVA_9, JRE.JAVA_10}) public class SslBytesServerTest extends SslBytesTest { private final AtomicInteger sslFills = new AtomicInteger(); @@ -101,8 +106,6 @@ public class SslBytesServerTest extends SslBytesTest private SimpleProxy proxy; private Runnable idleHook; - // This whole test is very specific to how TLS < 1.3 works. - @DisabledOnJre( JRE.JAVA_11 ) @BeforeEach public void init() throws Exception { diff --git a/jetty-util/src/test/java/org/eclipse/jetty/util/MultiReleaseJarFileTest.java b/jetty-util/src/test/java/org/eclipse/jetty/util/MultiReleaseJarFileTest.java index e22e98065b2..eaffe9edd5b 100644 --- a/jetty-util/src/test/java/org/eclipse/jetty/util/MultiReleaseJarFileTest.java +++ b/jetty-util/src/test/java/org/eclipse/jetty/util/MultiReleaseJarFileTest.java @@ -18,10 +18,6 @@ package org.eclipse.jetty.util; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.junit.jupiter.api.Assertions.assertTrue; - import java.io.File; import java.net.URL; import java.net.URLClassLoader; @@ -31,9 +27,13 @@ import org.eclipse.jetty.toolchain.test.MavenTestingUtils; import org.eclipse.jetty.util.MultiReleaseJarFile.VersionedJarEntry; import org.hamcrest.Matchers; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.condition.EnabledOnJre; +import org.junit.jupiter.api.condition.DisabledOnJre; import org.junit.jupiter.api.condition.JRE; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.is; +import static org.junit.jupiter.api.Assertions.assertTrue; + public class MultiReleaseJarFileTest { private File example = MavenTestingUtils.getTestResourceFile("example.jar"); @@ -124,7 +124,7 @@ public class MultiReleaseJarFileTest @Test - @EnabledOnJre({JRE.JAVA_9, JRE.JAVA_10, JRE.JAVA_11}) + @DisabledOnJre(JRE.JAVA_8) public void testClassLoaderJava9() throws Exception { try(URLClassLoader loader = new URLClassLoader(new URL[]{example.toURI().toURL()})) From 57ef060325ba094b2d44264d1c0e2f24918d50b7 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Tue, 2 Oct 2018 08:39:05 -0500 Subject: [PATCH 63/88] Issue #2936 - Allow Dispatcher.error() to work for BadMessageException + Applying fixes from review Signed-off-by: Joakim Erdfelt --- .../org/eclipse/jetty/server/Dispatcher.java | 11 +++++++-- .../eclipse/jetty/servlet/ErrorPageTest.java | 24 ++++++++++--------- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/Dispatcher.java b/jetty-server/src/main/java/org/eclipse/jetty/server/Dispatcher.java index d2033a488b7..c1baef1553d 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/Dispatcher.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/Dispatcher.java @@ -36,9 +36,13 @@ import org.eclipse.jetty.http.HttpURI; import org.eclipse.jetty.server.handler.ContextHandler; import org.eclipse.jetty.util.Attributes; import org.eclipse.jetty.util.MultiMap; +import org.eclipse.jetty.util.log.Log; +import org.eclipse.jetty.util.log.Logger; public class Dispatcher implements RequestDispatcher { + private static final Logger LOG = Log.getLogger(Dispatcher.class); + public final static String __ERROR_DISPATCH="org.eclipse.jetty.server.Dispatcher.ERROR"; /** Dispatch include attribute names */ @@ -207,11 +211,14 @@ public class Dispatcher implements RequestDispatcher { // Only throw BME if not in Error Dispatch Mode // This allows application ErrorPageErrorHandler to handle BME messages - Boolean inErrorDispatch = (Boolean) request.getAttribute(__ERROR_DISPATCH); - if(inErrorDispatch == null || !inErrorDispatch) + if (dispatch != DispatcherType.ERROR) { throw e; } + else + { + LOG.warn("Ignoring Original Bad Request Query String: " + old_uri, e); + } } } diff --git a/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/ErrorPageTest.java b/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/ErrorPageTest.java index 7fd8431a4cb..a0c230d5fec 100644 --- a/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/ErrorPageTest.java +++ b/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/ErrorPageTest.java @@ -92,7 +92,6 @@ public class ErrorPageTest public void testSendErrorClosedResponse() throws Exception { String response = _connector.getResponse("GET /fail-closed/ HTTP/1.0\r\n\r\n"); - System.out.println(response); assertThat(response,Matchers.containsString("HTTP/1.1 599 599")); assertThat(response,Matchers.containsString("DISPATCH: ERROR")); assertThat(response,Matchers.containsString("ERROR_PAGE: /599")); @@ -166,16 +165,19 @@ public class ErrorPageTest @Test public void testBadMessage() throws Exception { - String response = _connector.getResponse("GET /app?baa=%88%A4 HTTP/1.0\r\n\r\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 400 Bad query encoding")); - assertThat(response, Matchers.containsString("ERROR_PAGE: /BadMessageException")); - assertThat(response, Matchers.containsString("ERROR_MESSAGE: Bad query encoding")); - assertThat(response, Matchers.containsString("ERROR_CODE: 400")); - assertThat(response, Matchers.containsString("ERROR_EXCEPTION: org.eclipse.jetty.http.BadMessageException: 400: Bad query encoding")); - assertThat(response, Matchers.containsString("ERROR_EXCEPTION_TYPE: class org.eclipse.jetty.http.BadMessageException")); - assertThat(response, Matchers.containsString("ERROR_SERVLET: org.eclipse.jetty.servlet.ErrorPageTest$AppServlet-")); - assertThat(response, Matchers.containsString("ERROR_REQUEST_URI: /app")); - assertThat(response, Matchers.containsString("getParameterMap()= {}")); + try (StacklessLogging ignore = new StacklessLogging(Dispatcher.class)) + { + String response = _connector.getResponse("GET /app?baa=%88%A4 HTTP/1.0\r\n\r\n"); + assertThat(response, Matchers.containsString("HTTP/1.1 400 Bad query encoding")); + assertThat(response, Matchers.containsString("ERROR_PAGE: /BadMessageException")); + assertThat(response, Matchers.containsString("ERROR_MESSAGE: Bad query encoding")); + assertThat(response, Matchers.containsString("ERROR_CODE: 400")); + assertThat(response, Matchers.containsString("ERROR_EXCEPTION: org.eclipse.jetty.http.BadMessageException: 400: Bad query encoding")); + assertThat(response, Matchers.containsString("ERROR_EXCEPTION_TYPE: class org.eclipse.jetty.http.BadMessageException")); + assertThat(response, Matchers.containsString("ERROR_SERVLET: org.eclipse.jetty.servlet.ErrorPageTest$AppServlet-")); + assertThat(response, Matchers.containsString("ERROR_REQUEST_URI: /app")); + assertThat(response, Matchers.containsString("getParameterMap()= {}")); + } } From 06430f1b041f55551f1afe075dd92fe9f5d00d3f Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Tue, 2 Oct 2018 16:10:52 +0200 Subject: [PATCH 64/88] Issue #2868 - Adding SPNEGO authentication support for Jetty Client. Restored behavior where authentication results are stored no matter the response status. Signed-off-by: Simone Bordet --- .../eclipse/jetty/client/AuthenticationProtocolHandler.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/jetty-client/src/main/java/org/eclipse/jetty/client/AuthenticationProtocolHandler.java b/jetty-client/src/main/java/org/eclipse/jetty/client/AuthenticationProtocolHandler.java index 3e40ae4fe6a..11328247ad1 100644 --- a/jetty-client/src/main/java/org/eclipse/jetty/client/AuthenticationProtocolHandler.java +++ b/jetty-client/src/main/java/org/eclipse/jetty/client/AuthenticationProtocolHandler.java @@ -37,7 +37,6 @@ import org.eclipse.jetty.client.api.Result; import org.eclipse.jetty.client.util.BufferingResponseListener; import org.eclipse.jetty.http.HttpField; import org.eclipse.jetty.http.HttpHeader; -import org.eclipse.jetty.http.HttpStatus; import org.eclipse.jetty.http.QuotedCSV; import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Logger; @@ -310,8 +309,7 @@ public abstract class AuthenticationProtocolHandler implements ProtocolHandler @Override public void onSuccess(Response response) { - if (response.getStatus() == HttpStatus.OK_200) - client.getAuthenticationStore().addAuthenticationResult(authenticationResult); + client.getAuthenticationStore().addAuthenticationResult(authenticationResult); } } } From 462668e80a111ac343dedb4c8a46cd41e9ebd6d5 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Tue, 2 Oct 2018 21:54:05 +0200 Subject: [PATCH 65/88] Issue #2868 - Adding SPNEGO authentication support for Jetty Client. Running tests only on JDK 11, as apparently other JDKs have problems with AES encryption/decryption. Another hypothesis is that Kerby does AES encryption differently from what earlier JDKs expect. Signed-off-by: Simone Bordet --- .../client/util/SPNEGOAuthenticationTest.java | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/jetty-client/src/test/java/org/eclipse/jetty/client/util/SPNEGOAuthenticationTest.java b/jetty-client/src/test/java/org/eclipse/jetty/client/util/SPNEGOAuthenticationTest.java index 1185418006a..8fa771ad4cd 100644 --- a/jetty-client/src/test/java/org/eclipse/jetty/client/util/SPNEGOAuthenticationTest.java +++ b/jetty-client/src/test/java/org/eclipse/jetty/client/util/SPNEGOAuthenticationTest.java @@ -57,6 +57,8 @@ import org.eclipse.jetty.util.log.Logger; import org.eclipse.jetty.util.security.Constraint; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.condition.DisabledOnJre; +import org.junit.jupiter.api.condition.JRE; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ArgumentsSource; @@ -64,6 +66,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertNull; +// Apparently only JDK 11 is able to run these tests. +// See for example: https://bugs.openjdk.java.net/browse/JDK-8202439 +// where apparently the compiler gets the AES CPU instructions wrong. +@DisabledOnJre({JRE.JAVA_8, JRE.JAVA_9, JRE.JAVA_10}) public class SPNEGOAuthenticationTest extends AbstractHttpClientServerTest { private static final Logger LOG = Log.getLogger(SPNEGOAuthenticationTest.class); @@ -180,7 +186,7 @@ public class SPNEGOAuthenticationTest extends AbstractHttpClientServerTest // Request without Authentication causes a 401 Request request = client.newRequest(uri).path("/secure"); - ContentResponse response = request.timeout(5, TimeUnit.SECONDS).send(); + ContentResponse response = request.timeout(15, TimeUnit.SECONDS).send(); assertNotNull(response); assertEquals(401, response.getStatus()); @@ -197,7 +203,7 @@ public class SPNEGOAuthenticationTest extends AbstractHttpClientServerTest // Request with authentication causes a 401 (no previous successful authentication) + 200 request = client.newRequest(uri).path("/secure"); - response = request.timeout(5, TimeUnit.SECONDS).send(); + response = request.timeout(15, TimeUnit.SECONDS).send(); assertNotNull(response); assertEquals(200, response.getStatus()); // Authentication results for SPNEGO cannot be cached. @@ -217,7 +223,7 @@ public class SPNEGOAuthenticationTest extends AbstractHttpClientServerTest // The server has infinite authentication duration, so // subsequent requests will be preemptively authorized. request = client.newRequest(uri).path("/secure"); - response = request.timeout(5, TimeUnit.SECONDS).send(); + response = request.timeout(15, TimeUnit.SECONDS).send(); assertNotNull(response); assertEquals(200, response.getStatus()); assertEquals(1, requests.get()); @@ -259,14 +265,14 @@ public class SPNEGOAuthenticationTest extends AbstractHttpClientServerTest }); Request request = client.newRequest(uri).path("/secure"); - Response response = request.timeout(5, TimeUnit.SECONDS).send(); + Response response = request.timeout(15, TimeUnit.SECONDS).send(); assertEquals(200, response.getStatus()); // Expect 401 + 200. assertEquals(2, requests.get()); requests.set(0); request = client.newRequest(uri).path("/secure"); - response = request.timeout(5, TimeUnit.SECONDS).send(); + response = request.timeout(15, TimeUnit.SECONDS).send(); assertEquals(200, response.getStatus()); // Authentication not expired on server, expect 200 only. assertEquals(1, requests.get()); @@ -276,7 +282,7 @@ public class SPNEGOAuthenticationTest extends AbstractHttpClientServerTest requests.set(0); request = client.newRequest(uri).path("/secure"); - response = request.timeout(5, TimeUnit.SECONDS).send(); + response = request.timeout(15, TimeUnit.SECONDS).send(); assertEquals(200, response.getStatus()); // Authentication expired, expect 401 + 200. assertEquals(2, requests.get()); @@ -287,7 +293,7 @@ public class SPNEGOAuthenticationTest extends AbstractHttpClientServerTest requests.set(0); ByteArrayInputStream input = new ByteArrayInputStream("hello_world".getBytes(StandardCharsets.UTF_8)); request = client.newRequest(uri).method("POST").path("/secure").content(new InputStreamContentProvider(input)); - response = request.timeout(5, TimeUnit.SECONDS).send(); + response = request.timeout(15, TimeUnit.SECONDS).send(); assertEquals(200, response.getStatus()); // Authentication expired, but POSTs are allowed. assertEquals(1, requests.get()); From 85d512ceecef5bcc8604f309ca8319f4cd92793c Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Tue, 2 Oct 2018 21:55:09 +0200 Subject: [PATCH 66/88] Restored proper test timeout. Signed-off-by: Simone Bordet --- .../eclipse/jetty/proxy/ProxyServletTest.java | 26 ++++++++----------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/jetty-proxy/src/test/java/org/eclipse/jetty/proxy/ProxyServletTest.java b/jetty-proxy/src/test/java/org/eclipse/jetty/proxy/ProxyServletTest.java index 076945ed9db..715ca1e4967 100644 --- a/jetty-proxy/src/test/java/org/eclipse/jetty/proxy/ProxyServletTest.java +++ b/jetty-proxy/src/test/java/org/eclipse/jetty/proxy/ProxyServletTest.java @@ -18,16 +18,6 @@ package org.eclipse.jetty.proxy; -import static org.eclipse.jetty.http.HttpFieldsMatchers.containsHeader; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.instanceOf; -import static org.junit.jupiter.api.Assertions.assertArrayEquals; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import java.io.ByteArrayOutputStream; import java.io.EOFException; import java.io.IOException; import java.io.InputStream; @@ -73,7 +63,6 @@ import javax.servlet.http.HttpServletResponse; import org.eclipse.jetty.client.DuplexConnectionPool; import org.eclipse.jetty.client.HttpClient; -import org.eclipse.jetty.client.HttpContentResponse; import org.eclipse.jetty.client.HttpProxy; import org.eclipse.jetty.client.api.ContentResponse; import org.eclipse.jetty.client.api.Request; @@ -96,7 +85,6 @@ import org.eclipse.jetty.servlet.FilterHolder; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; import org.eclipse.jetty.toolchain.test.MavenTestingUtils; -import org.eclipse.jetty.util.Callback; import org.eclipse.jetty.util.IO; import org.eclipse.jetty.util.thread.QueuedThreadPool; import org.hamcrest.Matchers; @@ -105,7 +93,15 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; -import org.junit.jupiter.params.provider.ValueSource; + +import static org.eclipse.jetty.http.HttpFieldsMatchers.containsHeader; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.instanceOf; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; public class ProxyServletTest { @@ -1400,8 +1396,8 @@ public class ProxyServletTest // Wait more than the idle timeout to break the connection. Thread.sleep(2 * idleTimeout); - assertTrue(serverLatch.await(555, TimeUnit.SECONDS)); - assertTrue(clientLatch.await(555, TimeUnit.SECONDS)); + assertTrue(serverLatch.await(5, TimeUnit.SECONDS)); + assertTrue(clientLatch.await(5, TimeUnit.SECONDS)); } @ParameterizedTest From baca9cae3982a51a39c406f9f3a457caa4fbf700 Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Wed, 3 Oct 2018 09:54:05 +1000 Subject: [PATCH 67/88] Use cache to download to mongo and upgrade mongodb plugin (#2949) * cache downloading mongodb and upgrade mongodb embeded plugin Signed-off-by: olivier lamy * force mongodb version Signed-off-by: olivier lamy --- tests/test-sessions/test-mongodb-sessions/pom.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/test-sessions/test-mongodb-sessions/pom.xml b/tests/test-sessions/test-mongodb-sessions/pom.xml index c1f719beadc..bc6224e3b78 100644 --- a/tests/test-sessions/test-mongodb-sessions/pom.xml +++ b/tests/test-sessions/test-mongodb-sessions/pom.xml @@ -121,7 +121,7 @@ com.github.joelittlejohn.embedmongo embedmongo-maven-plugin - 0.3.5 + 0.4.1 @@ -137,6 +137,8 @@ false + https://jenkins.webtide.net/userContent/ + 2.2.1 From 9d37feba3c6c9982883c51a2380cf1330b2125ce Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Wed, 3 Oct 2018 10:00:14 +1000 Subject: [PATCH 68/88] Cleanup after #2903 (#2933) Improved dump output of ServletHandler and ContextHandler Fixed duplicate listeners Removed unused fields Signed-off-by: Greg Wilkins --- .../jetty/embedded/OneServletContext.java | 80 +++++++++++++++++- .../jetty/server/handler/ContextHandler.java | 11 ++- .../eclipse/jetty/servlet/FilterMapping.java | 34 ++++++-- .../eclipse/jetty/servlet/ListenerHolder.java | 7 +- .../jetty/servlet/ServletContextHandler.java | 11 +-- .../eclipse/jetty/servlet/ServletHandler.java | 84 ++++++------------- .../util/component/DumpableCollection.java | 9 +- .../webapp/StandardDescriptorProcessor.java | 10 +-- 8 files changed, 155 insertions(+), 91 deletions(-) diff --git a/examples/embedded/src/main/java/org/eclipse/jetty/embedded/OneServletContext.java b/examples/embedded/src/main/java/org/eclipse/jetty/embedded/OneServletContext.java index a09dab91db1..832aa5af384 100644 --- a/examples/embedded/src/main/java/org/eclipse/jetty/embedded/OneServletContext.java +++ b/examples/embedded/src/main/java/org/eclipse/jetty/embedded/OneServletContext.java @@ -20,8 +20,23 @@ package org.eclipse.jetty.embedded; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.servlet.DefaultServlet; +import org.eclipse.jetty.servlet.ListenerHolder; import org.eclipse.jetty.servlet.ServletContextHandler; +import javax.servlet.DispatcherType; +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletContextEvent; +import javax.servlet.ServletContextListener; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletRequestEvent; +import javax.servlet.ServletRequestListener; +import javax.servlet.ServletResponse; +import java.io.IOException; +import java.util.EnumSet; + public class OneServletContext { public static void main( String[] args ) throws Exception @@ -35,11 +50,72 @@ public class OneServletContext server.setHandler(context); // Add dump servlet - context.addServlet(DumpServlet.class, "/dump/*"); - // Add default servlet + context.addServlet( + context.addServlet(DumpServlet.class, "/dump/*"), + "*.dump"); + context.addServlet(HelloServlet.class, "/hello/*"); context.addServlet(DefaultServlet.class, "/"); + context.addFilter(TestFilter.class,"/*", EnumSet.of(DispatcherType.REQUEST)); + context.addFilter(TestFilter.class,"/test", EnumSet.of(DispatcherType.REQUEST,DispatcherType.ASYNC)); + context.addFilter(TestFilter.class,"*.test", EnumSet.of(DispatcherType.REQUEST,DispatcherType.INCLUDE,DispatcherType.FORWARD)); + + context.getServletHandler().addListener(new ListenerHolder(InitListener.class)); + context.getServletHandler().addListener(new ListenerHolder(RequestListener.class)); + server.start(); + server.dumpStdErr(); server.join(); } + + + public static class TestFilter implements Filter + { + @Override + public void init(FilterConfig filterConfig) throws ServletException + { + + } + + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException + { + chain.doFilter(request, response); + } + + @Override + public void destroy() + { + + } + } + + public static class InitListener implements ServletContextListener + { + @Override + public void contextInitialized(ServletContextEvent sce) + { + } + + @Override + public void contextDestroyed(ServletContextEvent sce) + { + } + } + + + public static class RequestListener implements ServletRequestListener + { + @Override + public void requestDestroyed(ServletRequestEvent sre) + { + + } + + @Override + public void requestInitialized(ServletRequestEvent sre) + { + + } + } } diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java index e3fa2e32d81..e9560d603b2 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java @@ -201,7 +201,6 @@ public class ContextHandler extends ScopedHandler implements Attributes, Gracefu private final List _servletRequestAttributeListeners = new CopyOnWriteArrayList<>(); private final List _contextListeners = new CopyOnWriteArrayList<>(); private final List _durableListeners = new CopyOnWriteArrayList<>(); - private Map _managedAttributes; private String[] _protectedTargets; private final CopyOnWriteArrayList _aliasChecks = new CopyOnWriteArrayList(); @@ -258,9 +257,10 @@ public class ContextHandler extends ScopedHandler implements Attributes, Gracefu public void dump(Appendable out, String indent) throws IOException { dumpBeans(out,indent,Collections.singletonList(new ClassLoaderDump(getClassLoader())), - Collections.singletonList(new DumpableCollection("Handler attributes " + this,((AttributesMap)getAttributes()).getAttributeEntrySet())), - Collections.singletonList(new DumpableCollection("Context attributes " + this,((Context)getServletContext()).getAttributeEntrySet())), - Collections.singletonList(new DumpableCollection("Initparams " + this,getInitParams().entrySet()))); + Collections.singletonList(new DumpableCollection("eventListeners "+this,_eventListeners)), + Collections.singletonList(new DumpableCollection("handler attributes " + this,((AttributesMap)getAttributes()).getAttributeEntrySet())), + Collections.singletonList(new DumpableCollection("context attributes " + this,((Context)getServletContext()).getAttributeEntrySet())), + Collections.singletonList(new DumpableCollection("initparams " + this,getInitParams().entrySet()))); } /* ------------------------------------------------------------ */ @@ -1553,10 +1553,9 @@ public class ContextHandler extends ScopedHandler implements Attributes, Gracefu } /* ------------------------------------------------------------ */ + @Deprecated public void setManagedAttribute(String name, Object value) { - Object old = _managedAttributes.put(name,value); - updateBean(old,value); } /* ------------------------------------------------------------ */ diff --git a/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/FilterMapping.java b/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/FilterMapping.java index e37eef01166..50a1f6bf94e 100644 --- a/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/FilterMapping.java +++ b/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/FilterMapping.java @@ -19,7 +19,9 @@ package org.eclipse.jetty.servlet; import java.io.IOException; +import java.util.Arrays; import java.util.EnumSet; +import java.util.stream.Collectors; import javax.servlet.DispatcherType; @@ -86,11 +88,31 @@ public class FilterMapping implements Dumpable throw new IllegalArgumentException(type.toString()); } + /* ------------------------------------------------------------ */ + /** Dispatch type from name + * @param type the dispatcher type + * @return the type constant ({@link #REQUEST}, {@link #ASYNC}, {@link #FORWARD}, {@link #INCLUDE}, or {@link #ERROR}) + */ + public static DispatcherType dispatch(int type) + { + switch(type) + { + case REQUEST: + return DispatcherType.REQUEST; + case ASYNC: + return DispatcherType.ASYNC; + case FORWARD: + return DispatcherType.FORWARD; + case INCLUDE: + return DispatcherType.INCLUDE; + case ERROR: + return DispatcherType.ERROR; + } + throw new IllegalArgumentException(Integer.toString(type)); + } /* ------------------------------------------------------------ */ /* ------------------------------------------------------------ */ - - private int _dispatches=DEFAULT; private String _filterName; private transient FilterHolder _holder; @@ -122,7 +144,7 @@ public class FilterMapping implements Dumpable /* ------------------------------------------------------------ */ /** Check if this filter applies to a particular dispatch type. * @param type The type of request: - * {@link Handler#REQUEST}, {@link Handler#FORWARD}, {@link Handler#INCLUDE} or {@link Handler#ERROR}. + * {@link #REQUEST}, {@link #FORWARD}, {@link #INCLUDE} or {@link #ERROR}. * @return true if this filter applies */ boolean appliesTo(int type) @@ -295,9 +317,9 @@ public class FilterMapping implements Dumpable public String toString() { return - TypeUtil.asList(_pathSpecs)+"/"+ - TypeUtil.asList(_servletNames)+"=="+ - _dispatches+"=>"+ + TypeUtil.asList(_pathSpecs)+"/"+ + TypeUtil.asList(_servletNames)+"/"+ + Arrays.stream(DispatcherType.values()).filter(this::appliesTo).collect(Collectors.toSet())+"=>"+ _filterName; } diff --git a/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ListenerHolder.java b/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ListenerHolder.java index 9e94f463f62..b3aa0e4c845 100644 --- a/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ListenerHolder.java +++ b/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ListenerHolder.java @@ -46,7 +46,12 @@ public class ListenerHolder extends BaseHolder { super(source); } - + + public ListenerHolder(Class listenerClass) + { + super(Source.EMBEDDED); + setHeldClass(listenerClass); + } public EventListener getListener() { diff --git a/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletContextHandler.java b/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletContextHandler.java index 8729025410b..21f51b86ad7 100644 --- a/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletContextHandler.java +++ b/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletContextHandler.java @@ -153,7 +153,7 @@ public class ServletContextHandler extends ContextHandler /* ------------------------------------------------------------ */ public ServletContextHandler(HandlerContainer parent, String contextPath, SessionHandler sessionHandler, SecurityHandler securityHandler, ServletHandler servletHandler, ErrorHandler errorHandler,int options) { - super((ContextHandler.Context)null); + super(parent, contextPath); _options=options; _scontext = new Context(); _sessionHandler = sessionHandler; @@ -163,15 +163,6 @@ public class ServletContextHandler extends ContextHandler _objFactory = new DecoratedObjectFactory(); _objFactory.addDecorator(new DeprecationWarning()); - if (contextPath!=null) - setContextPath(contextPath); - - if (parent instanceof HandlerWrapper) - ((HandlerWrapper)parent).setHandler(this); - else if (parent instanceof HandlerCollection) - ((HandlerCollection)parent).addHandler(this); - - // Link the handlers relinkHandlers(); diff --git a/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletHandler.java b/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletHandler.java index 4ddaf61793f..34adff4bf68 100644 --- a/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletHandler.java +++ b/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletHandler.java @@ -32,6 +32,7 @@ import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.ConcurrentMap; +import java.util.stream.Stream; import javax.servlet.DispatcherType; import javax.servlet.Filter; @@ -67,6 +68,7 @@ import org.eclipse.jetty.util.MultiMap; import org.eclipse.jetty.util.URIUtil; import org.eclipse.jetty.util.annotation.ManagedAttribute; import org.eclipse.jetty.util.annotation.ManagedObject; +import org.eclipse.jetty.util.component.DumpableCollection; import org.eclipse.jetty.util.component.LifeCycle; import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Logger; @@ -124,8 +126,6 @@ public class ServletHandler extends ScopedHandler @SuppressWarnings("unchecked") protected final Queue[] _chainLRU = new Queue[FilterMapping.ALL]; - - /* ------------------------------------------------------------ */ /** Constructor. */ @@ -133,6 +133,18 @@ public class ServletHandler extends ScopedHandler { } + /* ------------------------------------------------------------ */ + @Override + public void dump(Appendable out, String indent) throws IOException + { + dumpBeans(out,indent, + Collections.singletonList(new DumpableCollection("listeners "+this,_listeners)), + Collections.singletonList(new DumpableCollection("filters "+this,_filters)), + Collections.singletonList(new DumpableCollection("filterMappings "+this,_filterMappings)), + Collections.singletonList(new DumpableCollection("servlets "+this,_servlets)), + Collections.singletonList(new DumpableCollection("servletMappings "+this,_servletMappings))); + } + /* ----------------------------------------------------------------- */ @Override protected synchronized void doStart() @@ -178,7 +190,7 @@ public class ServletHandler extends ScopedHandler if (_contextHandler==null) initialize(); - + super.doStart(); } @@ -257,10 +269,8 @@ public class ServletHandler extends ScopedHandler //Retain only filters and mappings that were added using jetty api (ie Source.EMBEDDED) FilterHolder[] fhs = (FilterHolder[]) LazyList.toArray(filterHolders, FilterHolder.class); - updateBeans(_filters, fhs); _filters = fhs; FilterMapping[] fms = (FilterMapping[]) LazyList.toArray(filterMappings, FilterMapping.class); - updateBeans(_filterMappings, fms); _filterMappings = fms; _matchAfterIndex = (_filterMappings == null || _filterMappings.length == 0 ? -1 : _filterMappings.length-1); @@ -302,10 +312,8 @@ public class ServletHandler extends ScopedHandler //Retain only Servlets and mappings added via jetty apis (ie Source.EMBEDDED) ServletHolder[] shs = (ServletHolder[]) LazyList.toArray(servletHolders, ServletHolder.class); - updateBeans(_servlets, shs); _servlets = shs; ServletMapping[] sms = (ServletMapping[])LazyList.toArray(servletMappings, ServletMapping.class); - updateBeans(_servletMappings, sms); _servletMappings = sms; //Retain only Listeners added via jetty apis (is Source.EMBEDDED) @@ -327,7 +335,6 @@ public class ServletHandler extends ScopedHandler } } ListenerHolder[] listeners = (ListenerHolder[])LazyList.toArray(listenerHolders, ListenerHolder.class); - updateBeans(_listeners, listeners); _listeners = listeners; //will be regenerated on next start @@ -730,60 +737,26 @@ public class ServletHandler extends ScopedHandler { MultiException mx = new MultiException(); - //start filter holders now - if (_filters != null) - { - for (FilterHolder f: _filters) - { + Stream.concat(Stream.concat( + Arrays.stream(_filters), + Arrays.stream(_servlets).sorted()), + Arrays.stream(_listeners)) + .forEach(h->{ try { - f.start(); - f.initialize(); - } - catch (Exception e) - { - mx.add(e); - } - } - } - - // Sort and Initialize servlets - if (_servlets!=null) - { - ServletHolder[] servlets = _servlets.clone(); - Arrays.sort(servlets); - for (ServletHolder servlet : servlets) - { - try - { - servlet.start(); - servlet.initialize(); + if (!h.isStarted()) + { + h.start(); + h.initialize(); + } } catch (Throwable e) { LOG.debug(Log.EXCEPTION, e); mx.add(e); } - } - } + }); - //any other beans - for (Holder h: getBeans(Holder.class)) - { - try - { - if (!h.isStarted()) - { - h.start(); - h.initialize(); - } - } - catch (Exception e) - { - mx.add(e); - } - } - mx.ifExceptionThrow(); } @@ -820,7 +793,6 @@ public class ServletHandler extends ScopedHandler for (ListenerHolder holder:listeners) holder.setServletHandler(this); - updateBeans(_listeners,listeners); _listeners = listeners; } @@ -1537,7 +1509,6 @@ public class ServletHandler extends ScopedHandler */ public void setFilterMappings(FilterMapping[] filterMappings) { - updateBeans(_filterMappings,filterMappings); _filterMappings = filterMappings; if (isStarted()) updateMappings(); invalidateChainsCache(); @@ -1550,7 +1521,6 @@ public class ServletHandler extends ScopedHandler for (FilterHolder holder:holders) holder.setServletHandler(this); - updateBeans(_filters,holders); _filters=holders; updateNameMappings(); invalidateChainsCache(); @@ -1562,7 +1532,6 @@ public class ServletHandler extends ScopedHandler */ public void setServletMappings(ServletMapping[] servletMappings) { - updateBeans(_servletMappings,servletMappings); _servletMappings = servletMappings; if (isStarted()) updateMappings(); invalidateChainsCache(); @@ -1578,7 +1547,6 @@ public class ServletHandler extends ScopedHandler for (ServletHolder holder:holders) holder.setServletHandler(this); - updateBeans(_servlets,holders); _servlets=holders; updateNameMappings(); invalidateChainsCache(); diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/component/DumpableCollection.java b/jetty-util/src/main/java/org/eclipse/jetty/util/component/DumpableCollection.java index 369e440758e..0fb4c13f139 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/component/DumpableCollection.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/component/DumpableCollection.java @@ -19,7 +19,9 @@ package org.eclipse.jetty.util.component; import java.io.IOException; +import java.util.Arrays; import java.util.Collection; +import java.util.Collections; public class DumpableCollection implements Dumpable { @@ -31,7 +33,12 @@ public class DumpableCollection implements Dumpable _name=name; _collection=collection; } - + + public DumpableCollection(String name,Object... items) + { + this(name, items==null?Collections.emptyList():Arrays.asList(items)); + } + @Override public String dump() { diff --git a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/StandardDescriptorProcessor.java b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/StandardDescriptorProcessor.java index fdfaede611b..21454cb806d 100644 --- a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/StandardDescriptorProcessor.java +++ b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/StandardDescriptorProcessor.java @@ -1900,14 +1900,10 @@ public class StandardDescriptorProcessor extends IterativeDescriptorProcessor { //Servlet Spec 3.0 p 74 //Duplicate listener declarations don't result in duplicate listener instances - EventListener[] listeners=context.getEventListeners(); - if (listeners!=null) + for (ListenerHolder holder : context.getServletHandler().getListeners()) { - for (EventListener l : listeners) - { - if (l.getClass().getName().equals(className)) - return; - } + if (holder.getClassName().equals(className)) + return; } ((WebDescriptor)descriptor).addClassName(className); From 64dc93050049c2f21a7b5af1092a22a0cc10801b Mon Sep 17 00:00:00 2001 From: WalkerWatch Date: Wed, 3 Oct 2018 11:13:40 -0400 Subject: [PATCH 69/88] Clarify Websocket intro. Resolves #2951 --- .../development/websockets/intro/chapter.adoc | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/jetty-documentation/src/main/asciidoc/development/websockets/intro/chapter.adoc b/jetty-documentation/src/main/asciidoc/development/websockets/intro/chapter.adoc index fab182278a7..9a43439e238 100644 --- a/jetty-documentation/src/main/asciidoc/development/websockets/intro/chapter.adoc +++ b/jetty-documentation/src/main/asciidoc/development/websockets/intro/chapter.adoc @@ -19,14 +19,11 @@ [[websocket-intro]] == WebSocket Introduction -WebSocket is a new protocol for bidirectional communications over HTTP. - -It is based on a low level framing protocol that delivers messages in either UTF-8 TEXT or BINARY format. - -A single message in WebSocket can be of any size (the underlying framing however does have a single frame limit of http://en.wikipedia.org/wiki/9223372036854775807[63-bits]) +WebSocket is a new protocol for bidirectional communications initiated via HTTP/1.1 upgrade and providing basic message framing, layered over TCP. +It is based on a low-level framing protocol that delivers messages in either UTF-8 TEXT or BINARY format. +A single message in WebSocket can be of any size (the underlying framing however does have a single frame limit of http://en.wikipedia.org/wiki/9223372036854775807[63-bits]). There can be an unlimited number of messages sent. - Messages are sent sequentially, the base protocol does not support interleaved messages. A WebSocket connection goes through some basic state changes: @@ -78,11 +75,9 @@ https://datatracker.ietf.org/doc/draft-ietf-hybi-websocket-perframe-compression/ Per Frame Compression Extension. + An early extension draft from the Google/Chromium team that would provide WebSocket frame compression. -+ perframe-compression using deflate algorithm is present on many versions of Chrome/Chromium. + Jetty's support for perframe-compression is based on the draft-04 spec. -+ This standard is being replaced with permessage-compression. https://datatracker.ietf.org/doc/draft-tyoshino-hybi-permessage-compression/[permessage-compression]:: @@ -108,12 +103,11 @@ Java WebSocket Server API:: === Enabling WebSocket -To enable websocket, you need to link:#enabling-modules[enable] the `websocket` link:#enabling-modules[module]. +To enable Websocket, you need to enable the `websocket` link:#enabling-modules[module]. -Once this module is enabled for your jetty base, it will apply to all webapps deployed to that base. -If you want to be more selective about which webapps use websocket, then you can: +Once this module is enabled for your Jetty base, it will apply to all webapps deployed to that base. If you want to be more selective about which webapps use Websocket, then you can: -Disable jsr-356 for a particular webapp::: +Disable JSR-356 for a particular webapp::: You can disable jsr-356 for a particular webapp by setting the link:#context_attributes[context attribute] `org.eclipse.jetty.websocket.jsr356` to `false`. This will mean that websockets are not available to your webapp, however deployment time scanning for websocket-related classes such as endpoints will still occur. This can be a significant impost if your webapp contains a lot of classes and/or jar files. From 20db6700c0912c421adc6c612cece2051d204a7d Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Wed, 3 Oct 2018 18:24:59 +0200 Subject: [PATCH 70/88] Fixes #859 - Stack overflow error in jetty high level API. Now executing the call to abort() so that the stack overflow is avoided. Signed-off-by: Simone Bordet --- .../org/eclipse/jetty/client/HttpSender.java | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/jetty-client/src/main/java/org/eclipse/jetty/client/HttpSender.java b/jetty-client/src/main/java/org/eclipse/jetty/client/HttpSender.java index d2d620c5e9a..a3093b994b2 100644 --- a/jetty-client/src/main/java/org/eclipse/jetty/client/HttpSender.java +++ b/jetty-client/src/main/java/org/eclipse/jetty/client/HttpSender.java @@ -19,6 +19,8 @@ package org.eclipse.jetty.client; import java.nio.ByteBuffer; +import java.util.concurrent.Executor; +import java.util.concurrent.RejectedExecutionException; import java.util.concurrent.atomic.AtomicReference; import java.util.function.Supplier; @@ -338,18 +340,31 @@ public abstract class HttpSender implements AsyncContentProvider.Listener } } - protected boolean anyToFailure(Throwable failure) + private void anyToFailure(Throwable failure) { HttpExchange exchange = getHttpExchange(); if (exchange == null) - return false; + return; // Mark atomically the request as completed, with respect // to concurrency between request success and request failure. if (exchange.requestComplete(failure)) - return abort(exchange, failure); + executeAbort(exchange, failure); + } - return false; + private void executeAbort(HttpExchange exchange, Throwable failure) + { + try + { + Executor executor = getHttpChannel().getHttpDestination().getHttpClient().getExecutor(); + executor.execute(() -> abort(exchange, failure)); + } + catch (RejectedExecutionException x) + { + if (LOG.isDebugEnabled()) + LOG.debug(x); + abort(exchange, failure); + } } private void terminateRequest(HttpExchange exchange) From 76a9be8a822781489885483cee1ab33395435904 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Wed, 3 Oct 2018 19:24:05 +0200 Subject: [PATCH 71/88] Issue #2191 - JPMS Support. Restored error message in case of wrong ASM version. Signed-off-by: Simone Bordet --- .../org/eclipse/jetty/annotations/AnnotationParser.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationParser.java b/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationParser.java index 0b3fe364b6d..e0b146bb006 100644 --- a/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationParser.java +++ b/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationParser.java @@ -84,11 +84,12 @@ public class AnnotationParser */ public static int asmVersion () { + String asmString = "ASM6"; int asmVersion = ASM_OPCODE_VERSION; String version = ManifestUtils.getVersion(Opcodes.class).orElse(null); if (version == null) { - LOG.warn("Unknown ASM version, assuming {}", ASM_OPCODE_VERSION); + LOG.warn("Unknown ASM version, assuming {}", asmString); } else { @@ -116,13 +117,13 @@ public class AnnotationParser } default: { - LOG.warn("Unrecognized ASM version, assuming {}", ASM_OPCODE_VERSION); + LOG.warn("Unrecognized ASM version, assuming {}", asmString); } } } catch (NumberFormatException e) { - LOG.warn("Unable to parse ASM version, assuming {}", ASM_OPCODE_VERSION); + LOG.warn("Unable to parse ASM version, assuming {}", asmString); } } return asmVersion; From 8e44abb1135f6b3e96b6040bebf2fb5b60c8754f Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Wed, 3 Oct 2018 22:20:58 +0200 Subject: [PATCH 72/88] Issue #2191 - JPMS Support. Fixed OSGi manifest version reference. Signed-off-by: Simone Bordet --- jetty-plus/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jetty-plus/pom.xml b/jetty-plus/pom.xml index e1a32f8345f..69a5a8a1980 100644 --- a/jetty-plus/pom.xml +++ b/jetty-plus/pom.xml @@ -43,7 +43,7 @@ true - javax.transaction*;version="[1.3)",* + javax.transaction.*;version="1.3",* From 4dcc7cbae6d5411d26094b52a7dfe05d93b05b43 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Thu, 4 Oct 2018 00:43:52 +0200 Subject: [PATCH 73/88] Issue #2191 - JPMS Support. Restored String constant for the ASM version. Signed-off-by: Simone Bordet --- .../org/eclipse/jetty/annotations/AnnotationParser.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationParser.java b/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationParser.java index e0b146bb006..9ab39a1de78 100644 --- a/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationParser.java +++ b/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationParser.java @@ -70,6 +70,7 @@ public class AnnotationParser { private static final Logger LOG = Log.getLogger(AnnotationParser.class); private static final int ASM_OPCODE_VERSION = Opcodes.ASM6; //compatibility of api + private static final String ASM_OPCODE_VERSION_STR = "ASM6"; /** * Map of classnames scanned and the first location from which scan occurred @@ -84,12 +85,11 @@ public class AnnotationParser */ public static int asmVersion () { - String asmString = "ASM6"; int asmVersion = ASM_OPCODE_VERSION; String version = ManifestUtils.getVersion(Opcodes.class).orElse(null); if (version == null) { - LOG.warn("Unknown ASM version, assuming {}", asmString); + LOG.warn("Unknown ASM version, assuming {}", ASM_OPCODE_VERSION_STR); } else { @@ -117,13 +117,13 @@ public class AnnotationParser } default: { - LOG.warn("Unrecognized ASM version, assuming {}", asmString); + LOG.warn("Unrecognized ASM version, assuming {}", ASM_OPCODE_VERSION_STR); } } } catch (NumberFormatException e) { - LOG.warn("Unable to parse ASM version, assuming {}", asmString); + LOG.warn("Unable to parse ASM version, assuming {}", ASM_OPCODE_VERSION_STR); } } return asmVersion; From 9f7f0bdc5f3eb90157398cad2a64745a275844e9 Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Thu, 4 Oct 2018 13:30:11 +1000 Subject: [PATCH 74/88] Pass BadMessageException from parser to HttpReceiverOVerHTTP This change has already mostly been made in 9.4, so essentially this is a back port. However the primary signature of HttpParser.Handler for badMessage has not been changed and a default method used to handle the cause. This avoids breaking any usages of the interface. Signed-off-by: Greg Wilkins --- .../jetty/client/HttpResponseException.java | 7 ++++++- .../client/http/HttpReceiverOverHTTP.java | 8 +++++++- .../client/http/HttpReceiverOverHTTPTest.java | 3 +++ .../org/eclipse/jetty/http/HttpParser.java | 18 ++++++++++++------ 4 files changed, 28 insertions(+), 8 deletions(-) diff --git a/jetty-client/src/main/java/org/eclipse/jetty/client/HttpResponseException.java b/jetty-client/src/main/java/org/eclipse/jetty/client/HttpResponseException.java index e494170c34e..b9e568d5821 100644 --- a/jetty-client/src/main/java/org/eclipse/jetty/client/HttpResponseException.java +++ b/jetty-client/src/main/java/org/eclipse/jetty/client/HttpResponseException.java @@ -26,7 +26,12 @@ public class HttpResponseException extends RuntimeException public HttpResponseException(String message, Response response) { - super(message); + this(message, response, null); + } + + public HttpResponseException(String message, Response response, Throwable cause) + { + super(message, cause); this.response = response; } diff --git a/jetty-client/src/main/java/org/eclipse/jetty/client/http/HttpReceiverOverHTTP.java b/jetty-client/src/main/java/org/eclipse/jetty/client/http/HttpReceiverOverHTTP.java index 3f839e7c535..8bc0ba2b3f2 100644 --- a/jetty-client/src/main/java/org/eclipse/jetty/client/http/HttpReceiverOverHTTP.java +++ b/jetty-client/src/main/java/org/eclipse/jetty/client/http/HttpReceiverOverHTTP.java @@ -302,13 +302,19 @@ public class HttpReceiverOverHTTP extends HttpReceiver implements HttpParser.Res @Override public void badMessage(int status, String reason) + { + badMessage(status, reason, null); + } + + @Override + public void badMessage(int status, String reason, Throwable cause) { HttpExchange exchange = getHttpExchange(); if (exchange != null) { HttpResponse response = exchange.getResponse(); response.status(status).reason(reason); - failAndClose(new HttpResponseException("HTTP protocol violation: bad response on " + getHttpConnection(), response)); + failAndClose(new HttpResponseException("HTTP protocol violation: bad response on " + getHttpConnection(), response, cause)); } } diff --git a/jetty-client/src/test/java/org/eclipse/jetty/client/http/HttpReceiverOverHTTPTest.java b/jetty-client/src/test/java/org/eclipse/jetty/client/http/HttpReceiverOverHTTPTest.java index 7702d27e8e8..cfef6dc577e 100644 --- a/jetty-client/src/test/java/org/eclipse/jetty/client/http/HttpReceiverOverHTTPTest.java +++ b/jetty-client/src/test/java/org/eclipse/jetty/client/http/HttpReceiverOverHTTPTest.java @@ -32,6 +32,7 @@ import org.eclipse.jetty.client.HttpResponseException; import org.eclipse.jetty.client.Origin; import org.eclipse.jetty.client.api.Response; import org.eclipse.jetty.client.util.FutureResponseListener; +import org.eclipse.jetty.http.BadMessageException; import org.eclipse.jetty.http.HttpFields; import org.eclipse.jetty.http.HttpHeader; import org.eclipse.jetty.http.HttpVersion; @@ -204,6 +205,8 @@ public class HttpReceiverOverHTTPTest catch (ExecutionException e) { Assert.assertTrue(e.getCause() instanceof HttpResponseException); + Assert.assertTrue(e.getCause().getCause() instanceof BadMessageException); + Assert.assertTrue(e.getCause().getCause().getCause() instanceof NumberFormatException); } } diff --git a/jetty-http/src/main/java/org/eclipse/jetty/http/HttpParser.java b/jetty-http/src/main/java/org/eclipse/jetty/http/HttpParser.java index 914a4068256..530b8c16644 100644 --- a/jetty-http/src/main/java/org/eclipse/jetty/http/HttpParser.java +++ b/jetty-http/src/main/java/org/eclipse/jetty/http/HttpParser.java @@ -996,7 +996,7 @@ public class HttpParser catch(NumberFormatException e) { LOG.ignore(e); - throw new BadMessageException(HttpStatus.BAD_REQUEST_400,"Invalid Content-Length Value"); + throw new BadMessageException(HttpStatus.BAD_REQUEST_400,"Invalid Content-Length Value",e); } } @@ -1453,7 +1453,7 @@ public class HttpParser else LOG.warn("bad HTTP parsed: "+e._code+(e.getReason()!=null?" "+e.getReason():"")+" for "+_handler); setState(State.CLOSE); - _handler.badMessage(e.getCode(), e.getReason()); + _handler.badMessage(e.getCode(), e.getReason(), e); } catch(NumberFormatException|IllegalStateException e) { @@ -1461,19 +1461,19 @@ public class HttpParser LOG.warn("parse exception: {} in {} for {}",e.toString(),_state,_handler); if (DEBUG) LOG.debug(e); - badMessage(); + badMessage(e); } catch(Exception|Error e) { BufferUtil.clear(buffer); LOG.warn("parse exception: "+e.toString()+" for "+_handler,e); - badMessage(); + badMessage(e); } return false; } - protected void badMessage() + protected void badMessage(Throwable cause) { if (_headerComplete) { @@ -1482,7 +1482,7 @@ public class HttpParser else if (_state!=State.CLOSED) { setState(State.CLOSE); - _handler.badMessage(400,_requestHandler!=null?"Bad Request":"Bad Response"); + _handler.badMessage(400,_requestHandler!=null?"Bad Request":"Bad Response", cause); } } @@ -1803,6 +1803,12 @@ public class HttpParser */ public void badMessage(int status, String reason); + /* ------------------------------------------------------------ */ + public default void badMessage(int status, String reason, Throwable cause) + { + badMessage(status, reason); + } + /* ------------------------------------------------------------ */ /** @return the size in bytes of the per parser header cache */ From 75942298f5dbfee03166e97ea4a17b3afda985bb Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Thu, 4 Oct 2018 10:51:16 +0200 Subject: [PATCH 75/88] Issue #2191 - JPMS Support. Restored previous OSGi bundle name for apache-jsp. Introduced a new property for the JPMS Automatic-Module-Name. Signed-off-by: Simone Bordet --- apache-jsp/pom.xml | 3 ++- pom.xml | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/apache-jsp/pom.xml b/apache-jsp/pom.xml index bf16e2ff53a..b82de9b0c08 100644 --- a/apache-jsp/pom.xml +++ b/apache-jsp/pom.xml @@ -10,7 +10,8 @@ http://www.eclipse.org/jetty jar - ${project.groupId}.apache.jsp + ${project.groupId}.apache-jsp + ${project.groupId}.apache.jsp diff --git a/pom.xml b/pom.xml index 0edb642ac71..011626e9bd2 100644 --- a/pom.xml +++ b/pom.xml @@ -39,6 +39,7 @@ false + ${bundle-symbolic-name} 2.22.0 @@ -49,7 +50,6 @@ 3.2.2 3.5.2 - 5.1 @@ -495,7 +495,7 @@ ${project.build.outputDirectory}/META-INF/MANIFEST.MF - ${bundle-symbolic-name} + ${jpms-module-name} ${project.version} Eclipse.org - Jetty ${jetty.url} From 31d82e148e709bdc516a213aa40421fc137cd29c Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Thu, 4 Oct 2018 11:06:14 +0200 Subject: [PATCH 76/88] Issue #2191 - JPMS Support. Using javax.transaction version starting from 1.1 for OSGi compatibility. Signed-off-by: Simone Bordet --- jetty-plus/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jetty-plus/pom.xml b/jetty-plus/pom.xml index 69a5a8a1980..c9d45980978 100644 --- a/jetty-plus/pom.xml +++ b/jetty-plus/pom.xml @@ -43,7 +43,7 @@ true - javax.transaction.*;version="1.3",* + javax.transaction.*;version="1.1",*
From 166eeaa1f6ecd2b50e7e4827bcaff2b683b3592a Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Fri, 5 Oct 2018 18:36:35 +1000 Subject: [PATCH 77/88] Jetty 9.3.x #2954 report cause (#2959) Issue #2954 Report badmessage cause Pass BadMessageException from parser to HttpReceiverOVerHTTP This change has already mostly been made in 9.4, so essentially this is a back port. However the primary signature of HttpParser.Handler for badMessage has not been changed and a default method used to handle the cause. This avoids breaking any usages of the interface. Signed-off-by: Greg Wilkins --- .../client/AbstractHttpClientTransport.java | 1 + .../jetty/client/HttpResponseException.java | 7 ++++++- .../client/http/HttpReceiverOverHTTP.java | 8 +++++++- .../client/http/HttpReceiverOverHTTPTest.java | 3 +++ .../org/eclipse/jetty/http/HttpParser.java | 18 ++++++++++++------ .../org/eclipse/jetty/io/ManagedSelector.java | 5 ++++- 6 files changed, 33 insertions(+), 9 deletions(-) diff --git a/jetty-client/src/main/java/org/eclipse/jetty/client/AbstractHttpClientTransport.java b/jetty-client/src/main/java/org/eclipse/jetty/client/AbstractHttpClientTransport.java index 7c091398948..9d61939458b 100644 --- a/jetty-client/src/main/java/org/eclipse/jetty/client/AbstractHttpClientTransport.java +++ b/jetty-client/src/main/java/org/eclipse/jetty/client/AbstractHttpClientTransport.java @@ -135,6 +135,7 @@ public abstract class AbstractHttpClientTransport extends ContainerLifeCycle imp catch (IOException xx) { LOG.ignore(xx); + x.addSuppressed(xx); } finally { diff --git a/jetty-client/src/main/java/org/eclipse/jetty/client/HttpResponseException.java b/jetty-client/src/main/java/org/eclipse/jetty/client/HttpResponseException.java index e494170c34e..b9e568d5821 100644 --- a/jetty-client/src/main/java/org/eclipse/jetty/client/HttpResponseException.java +++ b/jetty-client/src/main/java/org/eclipse/jetty/client/HttpResponseException.java @@ -26,7 +26,12 @@ public class HttpResponseException extends RuntimeException public HttpResponseException(String message, Response response) { - super(message); + this(message, response, null); + } + + public HttpResponseException(String message, Response response, Throwable cause) + { + super(message, cause); this.response = response; } diff --git a/jetty-client/src/main/java/org/eclipse/jetty/client/http/HttpReceiverOverHTTP.java b/jetty-client/src/main/java/org/eclipse/jetty/client/http/HttpReceiverOverHTTP.java index 3f839e7c535..8bc0ba2b3f2 100644 --- a/jetty-client/src/main/java/org/eclipse/jetty/client/http/HttpReceiverOverHTTP.java +++ b/jetty-client/src/main/java/org/eclipse/jetty/client/http/HttpReceiverOverHTTP.java @@ -302,13 +302,19 @@ public class HttpReceiverOverHTTP extends HttpReceiver implements HttpParser.Res @Override public void badMessage(int status, String reason) + { + badMessage(status, reason, null); + } + + @Override + public void badMessage(int status, String reason, Throwable cause) { HttpExchange exchange = getHttpExchange(); if (exchange != null) { HttpResponse response = exchange.getResponse(); response.status(status).reason(reason); - failAndClose(new HttpResponseException("HTTP protocol violation: bad response on " + getHttpConnection(), response)); + failAndClose(new HttpResponseException("HTTP protocol violation: bad response on " + getHttpConnection(), response, cause)); } } diff --git a/jetty-client/src/test/java/org/eclipse/jetty/client/http/HttpReceiverOverHTTPTest.java b/jetty-client/src/test/java/org/eclipse/jetty/client/http/HttpReceiverOverHTTPTest.java index 7702d27e8e8..cfef6dc577e 100644 --- a/jetty-client/src/test/java/org/eclipse/jetty/client/http/HttpReceiverOverHTTPTest.java +++ b/jetty-client/src/test/java/org/eclipse/jetty/client/http/HttpReceiverOverHTTPTest.java @@ -32,6 +32,7 @@ import org.eclipse.jetty.client.HttpResponseException; import org.eclipse.jetty.client.Origin; import org.eclipse.jetty.client.api.Response; import org.eclipse.jetty.client.util.FutureResponseListener; +import org.eclipse.jetty.http.BadMessageException; import org.eclipse.jetty.http.HttpFields; import org.eclipse.jetty.http.HttpHeader; import org.eclipse.jetty.http.HttpVersion; @@ -204,6 +205,8 @@ public class HttpReceiverOverHTTPTest catch (ExecutionException e) { Assert.assertTrue(e.getCause() instanceof HttpResponseException); + Assert.assertTrue(e.getCause().getCause() instanceof BadMessageException); + Assert.assertTrue(e.getCause().getCause().getCause() instanceof NumberFormatException); } } diff --git a/jetty-http/src/main/java/org/eclipse/jetty/http/HttpParser.java b/jetty-http/src/main/java/org/eclipse/jetty/http/HttpParser.java index 914a4068256..530b8c16644 100644 --- a/jetty-http/src/main/java/org/eclipse/jetty/http/HttpParser.java +++ b/jetty-http/src/main/java/org/eclipse/jetty/http/HttpParser.java @@ -996,7 +996,7 @@ public class HttpParser catch(NumberFormatException e) { LOG.ignore(e); - throw new BadMessageException(HttpStatus.BAD_REQUEST_400,"Invalid Content-Length Value"); + throw new BadMessageException(HttpStatus.BAD_REQUEST_400,"Invalid Content-Length Value",e); } } @@ -1453,7 +1453,7 @@ public class HttpParser else LOG.warn("bad HTTP parsed: "+e._code+(e.getReason()!=null?" "+e.getReason():"")+" for "+_handler); setState(State.CLOSE); - _handler.badMessage(e.getCode(), e.getReason()); + _handler.badMessage(e.getCode(), e.getReason(), e); } catch(NumberFormatException|IllegalStateException e) { @@ -1461,19 +1461,19 @@ public class HttpParser LOG.warn("parse exception: {} in {} for {}",e.toString(),_state,_handler); if (DEBUG) LOG.debug(e); - badMessage(); + badMessage(e); } catch(Exception|Error e) { BufferUtil.clear(buffer); LOG.warn("parse exception: "+e.toString()+" for "+_handler,e); - badMessage(); + badMessage(e); } return false; } - protected void badMessage() + protected void badMessage(Throwable cause) { if (_headerComplete) { @@ -1482,7 +1482,7 @@ public class HttpParser else if (_state!=State.CLOSED) { setState(State.CLOSE); - _handler.badMessage(400,_requestHandler!=null?"Bad Request":"Bad Response"); + _handler.badMessage(400,_requestHandler!=null?"Bad Request":"Bad Response", cause); } } @@ -1803,6 +1803,12 @@ public class HttpParser */ public void badMessage(int status, String reason); + /* ------------------------------------------------------------ */ + public default void badMessage(int status, String reason, Throwable cause) + { + badMessage(status, reason); + } + /* ------------------------------------------------------------ */ /** @return the size in bytes of the per parser header cache */ diff --git a/jetty-io/src/main/java/org/eclipse/jetty/io/ManagedSelector.java b/jetty-io/src/main/java/org/eclipse/jetty/io/ManagedSelector.java index e301c654a27..b3780d26b33 100644 --- a/jetty-io/src/main/java/org/eclipse/jetty/io/ManagedSelector.java +++ b/jetty-io/src/main/java/org/eclipse/jetty/io/ManagedSelector.java @@ -258,11 +258,14 @@ public class ManagedSelector extends AbstractLifeCycle implements Runnable, Dump } catch (Throwable x) { - closeNoExceptions(_selector); if (isRunning()) LOG.warn(x); else + { + LOG.warn(x.toString()); LOG.debug(x); + } + closeNoExceptions(_selector); } return false; } From 6b6036a21c0f130387cdbccb6d3dddb4fce30712 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Tue, 9 Oct 2018 23:21:00 +0200 Subject: [PATCH 78/88] Issue #2771 - h2spec test failures. Fixed Stream.isRemotelyClosed() to imply CLOSING as well. Fixed logging. Signed-off-by: Simone Bordet --- .../main/java/org/eclipse/jetty/http2/HTTP2Session.java | 7 ++++--- .../src/main/java/org/eclipse/jetty/http2/HTTP2Stream.java | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Session.java b/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Session.java index 04279864c5d..fe2b90e6526 100644 --- a/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Session.java +++ b/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Session.java @@ -333,15 +333,16 @@ public abstract class HTTP2Session extends ContainerLifeCycle implements ISessio } case SettingsFrame.ENABLE_PUSH: { + boolean enabled = value == 1; if (LOG.isDebugEnabled()) - LOG.debug("{} push for {}", pushEnabled ? "Enabling" : "Disabling", this); - pushEnabled = value == 1; + LOG.debug("{} push for {}", enabled ? "Enabling" : "Disabling", this); + pushEnabled = enabled; break; } case SettingsFrame.MAX_CONCURRENT_STREAMS: { if (LOG.isDebugEnabled()) - LOG.debug("Updating max local concurrent streams to {} for {}", maxLocalStreams, this); + LOG.debug("Updating max local concurrent streams to {} for {}", value, this); maxLocalStreams = value; break; } diff --git a/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Stream.java b/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Stream.java index b9609ad4903..e411c571e05 100644 --- a/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Stream.java +++ b/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Stream.java @@ -176,7 +176,8 @@ public class HTTP2Stream extends IdleTimeout implements IStream, Callback, Dumpa @Override public boolean isRemotelyClosed() { - return closeState.get() == CloseState.REMOTELY_CLOSED; + CloseState state = closeState.get(); + return state == CloseState.REMOTELY_CLOSED || state == CloseState.CLOSING; } public boolean isLocallyClosed() From 856b46b4b77ea9c523b3bf749b35428d1ff4809b Mon Sep 17 00:00:00 2001 From: Lachlan Roberts Date: Wed, 10 Oct 2018 15:17:07 +1100 Subject: [PATCH 79/88] Issue #2892 - NPE in MultiPartInputStreamParser#getPart Signed-off-by: Lachlan Roberts --- .../org/eclipse/jetty/util/MultiPartInputStreamParser.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/MultiPartInputStreamParser.java b/jetty-util/src/main/java/org/eclipse/jetty/util/MultiPartInputStreamParser.java index 1280e6f29d5..a1847b3540a 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/MultiPartInputStreamParser.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/MultiPartInputStreamParser.java @@ -39,8 +39,6 @@ import java.util.Collections; import java.util.EnumSet; import java.util.List; import java.util.Locale; -import java.util.Map; - import javax.servlet.MultipartConfigElement; import javax.servlet.ServletInputStream; import javax.servlet.http.Part; @@ -515,7 +513,7 @@ public class MultiPartInputStreamParser public Part getPart(String name) throws IOException { - if(_parsed) + if(!_parsed) parse(); throwIfError(); return _parts.getValue(name, 0); From e727ad893d2c3415645153807a8763a499090dc3 Mon Sep 17 00:00:00 2001 From: Lachlan Roberts Date: Wed, 10 Oct 2018 16:10:29 +1100 Subject: [PATCH 80/88] Fixes #2702 - ArithmeticException in Credential.stringEquals and .byteEquals Signed-off-by: Lachlan Roberts --- .../jetty/util/security/Credential.java | 4 ++-- .../jetty/util/security/CredentialTest.java | 22 ++++++++++++++++--- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/security/Credential.java b/jetty-util/src/main/java/org/eclipse/jetty/util/security/Credential.java index 862d3bd7605..2f86d7554e0 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/security/Credential.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/security/Credential.java @@ -105,7 +105,7 @@ public abstract class Credential implements Serializable int l1 = known.length(); int l2 = unknown.length(); for (int i = 0; i < l2; ++i) - result &= known.charAt(i%l1) == unknown.charAt(i); + result &= ((l1==0)?unknown.charAt(l2-i-1):known.charAt(i%l1)) == unknown.charAt(i); return result && l1 == l2; } @@ -127,7 +127,7 @@ public abstract class Credential implements Serializable int l1 = known.length; int l2 = unknown.length; for (int i = 0; i < l2; ++i) - result &= known[i%l1] == unknown[i]; + result &= ((l1==0)?unknown[l2-i-1]:known[i%l1]) == unknown[i]; return result && l1 == l2; } diff --git a/jetty-util/src/test/java/org/eclipse/jetty/util/security/CredentialTest.java b/jetty-util/src/test/java/org/eclipse/jetty/util/security/CredentialTest.java index a8aac3dbc48..5ea977f104a 100644 --- a/jetty-util/src/test/java/org/eclipse/jetty/util/security/CredentialTest.java +++ b/jetty-util/src/test/java/org/eclipse/jetty/util/security/CredentialTest.java @@ -20,13 +20,13 @@ package org.eclipse.jetty.util.security; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; - import org.eclipse.jetty.util.security.Credential.Crypt; import org.eclipse.jetty.util.security.Credential.MD5; import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + /** * CredentialTest @@ -94,4 +94,20 @@ public class CredentialTest assertFalse(Credential.byteEquals("foo".getBytes(),"fo".getBytes())); assertFalse(Credential.byteEquals("foo".getBytes(),"bar".getBytes())); } + + @Test + public void testEmptyString() + { + assertFalse(Credential.stringEquals("fooo","")); + assertFalse(Credential.stringEquals("","fooo")); + assertTrue(Credential.stringEquals("","")); + } + + @Test + public void testEmptyBytes() + { + assertFalse(Credential.byteEquals("fooo".getBytes(),"".getBytes())); + assertFalse(Credential.byteEquals("".getBytes(),"fooo".getBytes())); + assertTrue(Credential.byteEquals("".getBytes(),"".getBytes())); + } } From 34511670d108837de50bcb2d82429629ee40cc23 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Wed, 10 Oct 2018 10:27:02 +0200 Subject: [PATCH 81/88] Improved HTTP2Stream.toString(). Signed-off-by: Simone Bordet --- .../src/main/java/org/eclipse/jetty/http2/HTTP2Stream.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Stream.java b/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Stream.java index e411c571e05..3cc9d531ce0 100644 --- a/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Stream.java +++ b/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Stream.java @@ -628,13 +628,14 @@ public class HTTP2Stream extends IdleTimeout implements IStream, Callback, Dumpa @Override public String toString() { - return String.format("%s@%x#%d{sendWindow=%s,recvWindow=%s,reset=%b,%s,age=%d,attachment=%s}", + return String.format("%s@%x#%d{sendWindow=%s,recvWindow=%s,reset=%b/%b,%s,age=%d,attachment=%s}", getClass().getSimpleName(), hashCode(), getId(), sendWindow, recvWindow, - isReset(), + localReset, + remoteReset, closeState, TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - timeStamp), attachment); From 8b44bed25ad22ab98f8b8103d0ee6e8e418040f2 Mon Sep 17 00:00:00 2001 From: Jan Bartel Date: Thu, 11 Oct 2018 15:37:16 +1100 Subject: [PATCH 82/88] Issue #2975 Quickstart tests broken --- tests/test-quickstart/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test-quickstart/pom.xml b/tests/test-quickstart/pom.xml index 1fd74d1ce22..3e4363415b3 100644 --- a/tests/test-quickstart/pom.xml +++ b/tests/test-quickstart/pom.xml @@ -138,7 +138,7 @@ copy - package + process-test-classes copy From 29c51091c771cadae025fb6708047e7a0cdbbd9e Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Thu, 11 Oct 2018 17:47:52 +1000 Subject: [PATCH 83/88] Jetty 9.4.x simplify jenkinsfile (#2976) * simplify Jenkinsfile Signed-off-by: olivier lamy * we need checkout scm Signed-off-by: olivier lamy * do not run the first install and move javadoc test to last part Signed-off-by: olivier lamy * remove comments Signed-off-by: olivier lamy --- Jenkinsfile | 54 +++++------------------------------------------------ 1 file changed, 5 insertions(+), 49 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index d116857064b..9ad5fa93007 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -22,58 +22,11 @@ def getFullBuild(jdk, os) { def settingsName = 'oss-settings.xml' def mavenOpts = '-Xms1g -Xmx4g -Djava.awt.headless=true' - try { - stage("Checkout - ${jdk}") { - checkout scm - } - } catch (Exception e) { - notifyBuild("Checkout Failure", jdk) - throw e - } - - try { - stage("Compile - ${jdk}") { - timeout(time: 15, unit: 'MINUTES') { - withMaven( - maven: mvnName, - jdk: "$jdk", - publisherStrategy: 'EXPLICIT', - globalMavenSettingsConfig: settingsName, - mavenOpts: mavenOpts, - mavenLocalRepo: localRepo) { - sh "mvn -V -B clean install -DskipTests -T6 -e" - } - } - } - } catch(Exception e) { - notifyBuild("Compile Failure", jdk) - throw e - } - - try { - stage("Javadoc - ${jdk}") { - timeout(time: 20, unit: 'MINUTES') { - withMaven( - maven: mvnName, - jdk: "$jdk", - publisherStrategy: 'EXPLICIT', - globalMavenSettingsConfig: settingsName, - mavenOpts: mavenOpts, - mavenLocalRepo: localRepo) { - sh "mvn -V -B javadoc:javadoc -T6 -e" - } - } - } - } catch(Exception e) { - notifyBuild("Javadoc Failure", jdk) - throw e - } - - try { - stage("Test - ${jdk}") { + stage("Build ${jdk}/${os}") { timeout(time: 90, unit: 'MINUTES') { // Run test phase / ignore test failures + checkout scm withMaven( maven: mvnName, jdk: "$jdk", @@ -83,6 +36,7 @@ def getFullBuild(jdk, os) { mavenOpts: mavenOpts, mavenLocalRepo: localRepo) { sh "mvn -V -B install -Dmaven.test.failure.ignore=true -e -Pmongodb -T3 -Djetty.testtracker.log=true -Dunix.socket.tmp="+env.JENKINS_HOME + sh "mvn -V -B javadoc:javadoc -T6 -e" } // withMaven doesn't label.. // Report failures in the jenkins UI @@ -112,6 +66,8 @@ def getFullBuild(jdk, os) { consoleParsers = [[parserName: 'Maven'], [parserName: 'JavaDoc'], [parserName: 'JavaC']]; + step([$class: 'MavenInvokerRecorder', reportsFilenamePattern: "**/target/invoker-reports/BUILD*.xml", + invokerBuildDir: "**/target/its"]) } // Report on Maven and Javadoc warnings From 68911c54fbb95888febefe803ef8e58b110e8bd3 Mon Sep 17 00:00:00 2001 From: WalkerWatch Date: Thu, 11 Oct 2018 14:08:24 -0400 Subject: [PATCH 84/88] Updating/augmenting JPMS documentation included in PR #2934 --- .../startup/custom-modules.adoc | 2 + .../administration/startup/startup-jpms.adoc | 96 +++++++------------ 2 files changed, 34 insertions(+), 64 deletions(-) diff --git a/jetty-documentation/src/main/asciidoc/administration/startup/custom-modules.adoc b/jetty-documentation/src/main/asciidoc/administration/startup/custom-modules.adoc index e070669d1be..dff59d79315 100644 --- a/jetty-documentation/src/main/asciidoc/administration/startup/custom-modules.adoc +++ b/jetty-documentation/src/main/asciidoc/administration/startup/custom-modules.adoc @@ -79,6 +79,8 @@ If a user does not accept the license agreement, the module will not be activate Additional Startup Commands - `[exec]`:: The `[exec]` section is used to define additional parameters specific to the module. These commands are added to the server startup. +JPMS Module-Path Definitions - `[jpms]`:: +The `[jpms]` section is used to add link:#startup-jpms[JPMS modules] to the module-path for startup when using the `--jpms` command. [[custom-module-properties]] ==== Module Properties diff --git a/jetty-documentation/src/main/asciidoc/administration/startup/startup-jpms.adoc b/jetty-documentation/src/main/asciidoc/administration/startup/startup-jpms.adoc index b6fdb7b9671..075b75d9c96 100644 --- a/jetty-documentation/src/main/asciidoc/administration/startup/startup-jpms.adoc +++ b/jetty-documentation/src/main/asciidoc/administration/startup/startup-jpms.adoc @@ -16,29 +16,24 @@ // ======================================================================== // -[[startup-overview]] +[[startup-jpms]] === Startup using the Java Platform Module System (JPMS) -Jetty modules are also automatic https://en.wikipedia.org/wiki/Java_Platform_Module_System[JPMS] -modules via the `Automatic-Module-Name` attribute in the jar's `MANIFEST.MF` file. +Jetty modules also act ass automatic https://en.wikipedia.org/wiki/Java_Platform_Module_System[JPMS] modules via the `Automatic-Module-Name` attribute in the jar's `MANIFEST.MF` file. This makes possible to run Jetty from the module-path, rather than the class-path. -We recommend to use JDK 11 or greater due to the fact that JDK 11 removed all the -"enterprise" modules from the JDK. -The classes in these "enterprise" modules were bundled with JDK 8, and present in -"enterprise" modules in JDK 9 and JDK 10. -With JDK 11, these "enterprise" classes are either not available in the JDK (because -their corresponding module was removed), or they are present in a different module. +We recommend using JDK 11 or greater due to the fact that JDK 11 removed all the "enterprise" modules from the JDK. +The classes in these "enterprise" modules were bundled with JDK 8, and present in "enterprise" modules in JDK 9 and JDK 10. +With JDK 11, these "enterprise" classes are either not available in the JDK (because their corresponding module was removed), or they are present in a different module. -Some of these "enterprise" classes are required by Jetty or by applications running -in Jetty, so it is better to use a stable source for those classes by using JDK 11 +Because some of these "enterprise" classes are required by Jetty or by applications running in Jetty, it is better to use a stable source for those classes - in this case by using JDK 11 or greater. +[[jpms-module-path]] ==== Starting Jetty on the module-path -To start Jetty on the module-path, rather than the class-path, it is enough to add -the `--jpms` option to the command line, for example: +To start Jetty on the module-path rather than the class-path, it is enough to add the `--jpms` option to the command line, for example: [source, screen, subs="{sub-order}"] .... @@ -52,28 +47,24 @@ INFO : Base directory was modified $ java -jar $JETTY_HOME/start.jar --jpms .... -The example above creates a link:#startup-base-and-home[Jetty base directory] and -enables the `http` module using `--add-to-start`. -Then starts Jetty on the module-path using the `--jpms` option. +The example above creates a link:#startup-base-and-home[Jetty base directory] and enables the `http` module using the `--add-to-start` command. +The server then starts Jetty on the module-path using the `--jpms` option. ---- [NOTE] -When running on the module-path using the `--jpms` option, the Jetty start mechanism -will fork a second JVM passing it the right JVM options to run on the module-path. +When running on the module-path using the `--jpms` option, the Jetty start mechanism will fork a second JVM passing it the right JVM options to run on the module-path. -You will have two JVMs running: one that runs `start.jar` and one that runs Jetty on -the module-path. +You will have two JVMs running: one that runs `start.jar` and one that runs Jetty on the module-path. ---- -If you are interested in the details of how the command line to run Jetty on the -module-path looks like, you can add the `--dry-run` option: +If you are interested in the details of how the command line to run Jetty on the module-path looks like, you can add the `--dry-run` option: [source, screen, subs="{sub-order}"] .... $ java -jar $JETTY_HOME/start.jar --jpms --dry-run .... -You will see something like this (broken in sections for clarity): +This will give an out put looking something like this (broken in sections for clarity): [source, screen, subs="{sub-order}"] .... @@ -83,37 +74,25 @@ You will see something like this (broken in sections for clarity): --module org.eclipse.jetty.xml/org.eclipse.jetty.xml.XmlConfiguration /opt/jetty/etc/jetty-threadpool.xml /opt/jetty/etc/jetty.xml ... .... -The `--module-path` option specifies the list of Jetty jars. This list depends -on the Jetty modules that have been enabled via `--add-to-start`. +The `--module-path` option specifies the list of Jetty jars. +This list depends on the Jetty modules that have been enabled via the link:#startup-modules[`--add-to-start`] command. -The `--patch-module` option is necessary for Servlet and JSP Containers to find XML DTDs -and XML Schemas required to validate the various XML files present in web applications -(such as `web.xml` and others). +The `--patch-module` option is necessary for Servlet and JSP Containers to find XML DTDs and XML Schemas required to validate the various XML files present in web applications (such as `web.xml` and others). -The `--module` option tells the JVM to run main class `XmlConfiguration` from the -`org.eclipse.jetty.xml` module, with the given XML files as program arguments. +The `--module` option tells the JVM to run main class `XmlConfiguration` from the `org.eclipse.jetty.xml` module, with the given XML files as program arguments. -When the JVM starts, module `org.eclipse.jetty.xml` is added to the set of JPMS -_root modules_; all other Jetty modules, being automatic, will be resolved and added -to the module graph; jars that are not modules such as `servlet-api-3.1.jar` are on -the module-path and therefore will be made automatic modules by the JVM (hence the -derived module name `servlet.api` for this jar, referenced by the `--patch-module` -command line option above). +When the JVM starts, module `org.eclipse.jetty.xml` is added to the set of JPMS _root modules_; all other Jetty modules, being automatic, will be resolved and added to the module graph. +JAR files that are not modules, such as `servlet-api-3.1.jar`, are on the module-path and therefore will be made automatic modules by the JVM (hence the derived module name `servlet.api` for this jar, referenced by the `--patch-module` command line option above). +[[jpms-advanced-config]] ==== Advanced JPMS Configuration -Web applications may need additional services from the Servlet Container, such as -JDBC `DataSource` references or JTA `UserTransaction` references. +Web applications may need additional services from the Servlet Container, such as JDBC `DataSource` references or JTA `UserTransaction` references. -For example, for JDBC it is typical to store in JNDI a reference to the connection -pool's `DataSource` (for example `com.zaxxer.hikari.HikariDataSource`) or a -reference directly to the JDBC driver's `DataSource` (for example -`com.mysql.jdbc.jdbc2.optional.MysqlDataSource`). -Jetty needs to be able to instantiate those classes and therefore needs to be able -to load those classes and all their super-classes, among which `javax.sql.DataSource`. +For example, for JDBC it is typical to store, in JNDI, a reference to the connection pool's `DataSource` (such as `com.zaxxer.hikari.HikariDataSource`) or a reference directly to the JDBC driver's `DataSource` (`com.mysql.jdbc.jdbc2.optional.MysqlDataSource`). +Jetty needs to be able to instantiate those classes and therefore needs to be able to load those classes and all their super-classes, among which includes `javax.sql.DataSource`. -When Jetty runs on the class-path, this is easily achieved by using a -link:#custom-modules[custom module]: +When Jetty runs on the class-path, this is easily achieved by using a link:#custom-modules[custom module]: [source, screen, subs="{sub-order}"] .mysql.mod @@ -127,13 +106,10 @@ lib/mysql/mysql-connector-java-*.jar However, when running on the module-path, things are quite different. -Class `javax.sql.DataSource` is in a JDK bundled module named `java.sql`, which is -not automatic (it's a proper JPMS module) and it is not in the _root modules_ set; -because it is not an automatic module, it is not added to the module graph, and -therefore needs to be added explicitly using the JVM command line `--add-modules`. +Class `javax.sql.DataSource` is in a JDK bundled module named `java.sql`, which is not automatic (it's a proper JPMS module) and it is not in the _root modules_ set. +Because it is not an automatic module, it is not added to the module graph, and therefore needs to be added explicitly using the JVM command line `--add-modules`. -To add the JPMS module `java.sql` to the module graph, you need to modify -`mysql.mod` in the following way: +To add the JPMS module `java.sql` to the module graph, you need to modify your custom module in the following way, using our `mysql.mod` as an example: [source, screen, subs="{sub-order}"] .mysql.mod @@ -148,17 +124,11 @@ lib/mysql/mysql-connector-java-*.jar add-modules: java.sql .... -The new `[jpms]` section is only used when Jetty is started on the module-path -via the `--jpms` command line option. +The new `[jpms]` section is only used when Jetty is started on the module-path via the `--jpms` command line option. -Assuming that `mysql-connector-java-*.jar` is a non JPMS modular jar, or an -automatic JPMS modular jar, the Jetty start mechanism will add -`mysql-connector-java-*.jar` to the module-path, and will add the JVM command -line option `--add-modules java.sql`. +Assuming that `mysql-connector-java-*.jar` is a non JPMS modular jar, or an automatic JPMS modular jar, the Jetty start mechanism will add `mysql-connector-java-*.jar` to the module-path, and will add the JVM command line option `--add-modules java.sql`. -If `mysql-connector-java-*.jar` were a proper JPMS modular jar with name -(for example) `com.mysql.jdbc`, then it would need to be explicitly added to -the module graph, in this way: +If `mysql-connector-java-*.jar` were a proper JPMS modular jar with name (for example) `com.mysql.jdbc`, then it would need to be explicitly added to the module graph, in this way: [source, screen, subs="{sub-order}"] .mysql.mod @@ -173,9 +143,7 @@ lib/mysql/mysql-connector-java-*.jar add-modules: com.mysql.jdbc .... -Now we don't need to add JPMS module `java.sql` explicitly because it would be -a dependency of the `com.mysql.jdbc` module and therefore automatically added -to the module graph. +The JPMS module `java.sql` does not need to be explicitly added because it would be a dependency of the `com.mysql.jdbc` module and therefore automatically added to the module graph. The `[jpms]` section has the following format: From 64e561dcb13692024ba3b2bee56427b412cc4b9b Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Sun, 14 Oct 2018 10:50:02 +1000 Subject: [PATCH 85/88] upgrade surefire plugin 2.22.1 (#2980) Signed-off-by: olivier lamy --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 18f65cb915c..62be04d2d80 100644 --- a/pom.xml +++ b/pom.xml @@ -42,7 +42,7 @@ ${bundle-symbolic-name} - 2.22.0 + 2.22.1 3.8.0 3.1.1 3.1.0 From 5c8d3f041bee47ed133b68389446e74e46854607 Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Tue, 16 Oct 2018 14:28:51 +1100 Subject: [PATCH 86/88] Cleanup to avoid duplication method (noticed while reviewing #2977) --- .../jetty/http2/hpack/MetaDataBuilder.java | 53 ++++++++----------- 1 file changed, 22 insertions(+), 31 deletions(-) diff --git a/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/MetaDataBuilder.java b/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/MetaDataBuilder.java index d891ab3dfe5..636d464686e 100644 --- a/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/MetaDataBuilder.java +++ b/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/MetaDataBuilder.java @@ -33,7 +33,7 @@ public class MetaDataBuilder { private final int _maxSize; private int _size; - private int _status=-1; + private Integer _status; private String _method; private HttpScheme _scheme; private HostPortHttpField _authority; @@ -47,7 +47,7 @@ public class MetaDataBuilder /** * @param maxHeadersSize The maximum size of the headers, expressed as total name and value characters. */ - MetaDataBuilder(int maxHeadersSize) + protected MetaDataBuilder(int maxHeadersSize) { _maxSize=maxHeadersSize; } @@ -84,7 +84,7 @@ public class MetaDataBuilder switch(header) { case C_STATUS: - if(checkHeader(header, _status)) + if(checkPseudoHeader(header, _status)) _status = (Integer)staticField.getStaticValue(); _response = true; break; @@ -110,8 +110,8 @@ public class MetaDataBuilder switch(header) { case C_STATUS: - if(checkHeader(header, _status)) - _status = field.getIntValue(); + if(checkPseudoHeader(header, _status)) + _status = Integer.valueOf(field.getIntValue()); _response = true; break; @@ -197,7 +197,7 @@ public class MetaDataBuilder } } - void streamException(String messageFormat, Object... args) + protected void streamException(String messageFormat, Object... args) { HpackException.StreamException stream = new HpackException.StreamException(messageFormat, args); if (_streamException==null) @@ -206,20 +206,7 @@ public class MetaDataBuilder _streamException.addSuppressed(stream); } - private boolean checkHeader(HttpHeader header, int value) - { - if (_fields.size()>0) - { - streamException("Pseudo header %s after fields", header.asString()); - return false; - } - if (value==-1) - return true; - streamException("Duplicate pseudo header %s", header.asString()); - return false; - } - - private boolean checkPseudoHeader(HttpHeader header, Object value) + protected boolean checkPseudoHeader(HttpHeader header, Object value) { if (_fields.size()>0) { @@ -258,22 +245,26 @@ public class MetaDataBuilder return new MetaData.Request(_method,_scheme,_authority,_path,HttpVersion.HTTP_2,fields,_contentLength); } if (_response) - return new MetaData.Response(HttpVersion.HTTP_2,_status,fields,_contentLength); + { + if (_status==null) + throw new HpackException.StreamException("No Status"); + return new MetaData.Response(HttpVersion.HTTP_2, _status, fields, _contentLength); + } return new MetaData(HttpVersion.HTTP_2,fields,_contentLength); } finally { - _fields = new HttpFields(Math.max(10,fields.size()+5)); - _request=false; - _response=false; - _status=-1; - _method=null; - _scheme=null; - _authority=null; - _path=null; - _size=0; - _contentLength=Long.MIN_VALUE; + _fields = new HttpFields(Math.max(10, fields.size() + 5)); + _request = false; + _response = false; + _status = null; + _method = null; + _scheme = null; + _authority = null; + _path = null; + _size = 0; + _contentLength = Long.MIN_VALUE; } } From 211f3d928b95e4c7748cd7eaf5a962399eab715d Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Wed, 17 Oct 2018 11:45:42 +1000 Subject: [PATCH 87/88] upgrade jackson-databind in maven it to 2.9.7 (#2993) Signed-off-by: olivier lamy --- jetty-maven-plugin/src/it/it-parent-pom/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jetty-maven-plugin/src/it/it-parent-pom/pom.xml b/jetty-maven-plugin/src/it/it-parent-pom/pom.xml index a58f3a3bc4c..2ad7f139b01 100644 --- a/jetty-maven-plugin/src/it/it-parent-pom/pom.xml +++ b/jetty-maven-plugin/src/it/it-parent-pom/pom.xml @@ -39,7 +39,7 @@ com.fasterxml.jackson.core jackson-databind - 2.8.1 + 2.9.7 org.slf4j From add74bf8898efc2bba7c05ebd9f443ff9d60e79c Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Wed, 17 Oct 2018 11:56:39 +0200 Subject: [PATCH 88/88] Updated ALPN version for JDK 8u191 and 8u192. Signed-off-by: Simone Bordet --- .../modules/protonego-impl/alpn-1.8.0_191.mod | 8 +++++++ .../modules/protonego-impl/alpn-1.8.0_192.mod | 8 +++++++ .../modules/protonego-impl/alpn-1.8.0_191.mod | 8 +++++++ .../modules/protonego-impl/alpn-1.8.0_192.mod | 8 +++++++ pom.xml | 24 +++++++++++++++++++ 5 files changed, 56 insertions(+) create mode 100644 jetty-alpn/jetty-alpn-server/src/main/config/modules/protonego-impl/alpn-1.8.0_191.mod create mode 100644 jetty-alpn/jetty-alpn-server/src/main/config/modules/protonego-impl/alpn-1.8.0_192.mod create mode 100644 jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.8.0_191.mod create mode 100644 jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.8.0_192.mod diff --git a/jetty-alpn/jetty-alpn-server/src/main/config/modules/protonego-impl/alpn-1.8.0_191.mod b/jetty-alpn/jetty-alpn-server/src/main/config/modules/protonego-impl/alpn-1.8.0_191.mod new file mode 100644 index 00000000000..d49c0780441 --- /dev/null +++ b/jetty-alpn/jetty-alpn-server/src/main/config/modules/protonego-impl/alpn-1.8.0_191.mod @@ -0,0 +1,8 @@ +[name] +protonego-boot + +[files] +http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/8.1.13.v20181017/alpn-boot-8.1.13.v20181017.jar|lib/alpn/alpn-boot-8.1.13.v20181017.jar + +[exec] +-Xbootclasspath/p:lib/alpn/alpn-boot-8.1.13.v20181017.jar diff --git a/jetty-alpn/jetty-alpn-server/src/main/config/modules/protonego-impl/alpn-1.8.0_192.mod b/jetty-alpn/jetty-alpn-server/src/main/config/modules/protonego-impl/alpn-1.8.0_192.mod new file mode 100644 index 00000000000..d49c0780441 --- /dev/null +++ b/jetty-alpn/jetty-alpn-server/src/main/config/modules/protonego-impl/alpn-1.8.0_192.mod @@ -0,0 +1,8 @@ +[name] +protonego-boot + +[files] +http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/8.1.13.v20181017/alpn-boot-8.1.13.v20181017.jar|lib/alpn/alpn-boot-8.1.13.v20181017.jar + +[exec] +-Xbootclasspath/p:lib/alpn/alpn-boot-8.1.13.v20181017.jar diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.8.0_191.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.8.0_191.mod new file mode 100644 index 00000000000..d49c0780441 --- /dev/null +++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.8.0_191.mod @@ -0,0 +1,8 @@ +[name] +protonego-boot + +[files] +http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/8.1.13.v20181017/alpn-boot-8.1.13.v20181017.jar|lib/alpn/alpn-boot-8.1.13.v20181017.jar + +[exec] +-Xbootclasspath/p:lib/alpn/alpn-boot-8.1.13.v20181017.jar diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.8.0_192.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.8.0_192.mod new file mode 100644 index 00000000000..d49c0780441 --- /dev/null +++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.8.0_192.mod @@ -0,0 +1,8 @@ +[name] +protonego-boot + +[files] +http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/8.1.13.v20181017/alpn-boot-8.1.13.v20181017.jar|lib/alpn/alpn-boot-8.1.13.v20181017.jar + +[exec] +-Xbootclasspath/p:lib/alpn/alpn-boot-8.1.13.v20181017.jar diff --git a/pom.xml b/pom.xml index c98ee1d6811..89c6c980d6e 100644 --- a/pom.xml +++ b/pom.xml @@ -1516,6 +1516,30 @@ 8.1.12.v20180117 + + 8u191 + + + java.version + 1.8.0_191 + + + + 8.1.13.v20181017 + + + + 8u192 + + + java.version + 1.8.0_192 + + + + 8.1.13.v20181017 + +