From e036e6a7b5cfebb49f00f2cb0df20472a19b862a Mon Sep 17 00:00:00 2001 From: olivier lamy Date: Tue, 28 Mar 2017 16:53:26 +1100 Subject: [PATCH 01/80] #1348 add BOM artifact Signed-off-by: olivier lamy --- jetty-dependencies/pom.xml | 178 +++++++++++++++++++++++++++++++++++++ pom.xml | 1 + 2 files changed, 179 insertions(+) create mode 100644 jetty-dependencies/pom.xml diff --git a/jetty-dependencies/pom.xml b/jetty-dependencies/pom.xml new file mode 100644 index 00000000000..d8c60a28da4 --- /dev/null +++ b/jetty-dependencies/pom.xml @@ -0,0 +1,178 @@ + + + org.eclipse.jetty + jetty-project + 9.3.18-SNAPSHOT + + 4.0.0 + jetty-dependencies + Jetty :: Dependencies + Jetty Dependencies (BOM artifact + pom + + + + + org.eclipse.jetty + jetty-annotations + ${project.version} + + + org.eclipse.jetty + jetty-client + ${project.version} + + + org.eclipse.jetty + jetty-continuation + ${project.version} + + + org.eclipse.jetty + jetty-http + ${project.version} + + + org.eclipse.jetty.http2 + http2-client + ${project.version} + + + org.eclipse.jetty.http2 + http2-common + ${project.version} + + + org.eclipse.jetty.http2 + http2-hpack + ${project.version} + + + org.eclipse.jetty.http2 + http2-server + ${project.version} + + + org.eclipse.jetty + jetty-http-spi + ${project.version} + + + org.eclipse.jetty + jetty-infinispan + ${project.version} + + + org.eclipse.jetty + jetty-io + ${project.version} + + + org.eclipse.jetty + jetty-jaas + ${project.version} + + + org.eclipse.jetty + jetty-jaspi + ${project.version} + + + org.eclipse.jetty + jetty-jmx + ${project.version} + + + org.eclipse.jetty + jetty-jndi + ${project.version} + + + org.eclipse.jetty + jetty-monitor + ${project.version} + + + org.eclipse.jetty + jetty-nosql + ${project.version} + + + org.eclipse.jetty + jetty-plus + ${project.version} + + + org.eclipse.jetty + jetty-proxy + ${project.version} + + + org.eclipse.jetty + jetty-quickstart + ${project.version} + + + org.eclipse.jetty + jetty-rewrite + ${project.version} + + + org.eclipse.jetty + jetty-runner + ${project.version} + + + org.eclipse.jetty + jetty-security + ${project.version} + + + org.eclipse.jetty + jetty-server + ${project.version} + + + org.eclipse.jetty + jetty-servlet + ${project.version} + + + org.eclipse.jetty + jetty-servlets + ${project.version} + + + org.eclipse.jetty + jetty-spring + ${project.version} + + + org.eclipse.jetty + jetty-start + ${project.version} + + + org.eclipse.jetty + jetty-util + ${project.version} + + + org.eclipse.jetty + jetty-util-ajax + ${project.version} + + + org.eclipse.jetty + jetty-webapp + ${project.version} + + + org.eclipse.jetty + jetty-xml + ${project.version} + + + + + diff --git a/pom.xml b/pom.xml index 7f87c72b4f2..07109e71232 100644 --- a/pom.xml +++ b/pom.xml @@ -604,6 +604,7 @@ jetty-http-spi jetty-osgi jetty-alpn + jetty-dependencies jetty-documentation From 9a8b7533430471ca05bb1be88305f31baa7d56ad Mon Sep 17 00:00:00 2001 From: olivier lamy Date: Thu, 30 Mar 2017 11:07:24 +1100 Subject: [PATCH 02/80] change to jetty-bom Signed-off-by: olivier lamy --- {jetty-dependencies => jetty-bom}/pom.xml | 6 +++--- pom.xml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) rename {jetty-dependencies => jetty-bom}/pom.xml (97%) diff --git a/jetty-dependencies/pom.xml b/jetty-bom/pom.xml similarity index 97% rename from jetty-dependencies/pom.xml rename to jetty-bom/pom.xml index d8c60a28da4..8afbee9ccf8 100644 --- a/jetty-dependencies/pom.xml +++ b/jetty-bom/pom.xml @@ -5,9 +5,9 @@ 9.3.18-SNAPSHOT 4.0.0 - jetty-dependencies - Jetty :: Dependencies - Jetty Dependencies (BOM artifact + jetty-bom + Jetty :: Bom + Jetty BOM artifact pom diff --git a/pom.xml b/pom.xml index 07109e71232..51b760a3a9e 100644 --- a/pom.xml +++ b/pom.xml @@ -604,7 +604,7 @@ jetty-http-spi jetty-osgi jetty-alpn - jetty-dependencies + jetty-bom jetty-documentation From daf61cd2942abe93e6f3d728e5220691d08a9372 Mon Sep 17 00:00:00 2001 From: Denis Nedelyaev Date: Thu, 30 Mar 2017 04:15:32 +0300 Subject: [PATCH 03/80] Fix memory leak in GzipHandler (#1429) Looks like this leak shows itself only with asynchronous responses. Some relevant info: http://www.devguli.com/blog/eng/java-deflater-and-outofmemoryerror/ Signed-off-by: Denis Nedelyaev --- .../org/eclipse/jetty/server/handler/gzip/GzipHandler.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/gzip/GzipHandler.java b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/gzip/GzipHandler.java index 783afd2bd64..d645c8dcf5e 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/gzip/GzipHandler.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/gzip/GzipHandler.java @@ -542,9 +542,13 @@ public class GzipHandler extends HandlerWrapper implements GzipFactory @Override public void recycle(Deflater deflater) { - deflater.reset(); if (_deflater.get()==null) + { + deflater.reset(); _deflater.set(deflater); + } + else + deflater.end(); } /* ------------------------------------------------------------ */ From 9a00c038ff1e59140e6de8392173752a14bd126a Mon Sep 17 00:00:00 2001 From: Fabian van der Veen Date: Thu, 30 Mar 2017 16:03:11 +0200 Subject: [PATCH 04/80] Make PathResource UNC compatible again The newly added checkAliasPath used the File constructor on a uri resulting from Path's toUri, which caused an IllegalArgumentException due to the uri having an authority component. (File's toURI and Path's toUri differ slightly wrt. UNC paths; file:////unc vs file://unc.) Signed-off-by: Fabian van der Veen --- .../jetty/util/resource/PathResource.java | 4 ++-- .../util/resource/FileSystemResourceTest.java | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/resource/PathResource.java b/jetty-util/src/main/java/org/eclipse/jetty/util/resource/PathResource.java index 52bc0f0ff78..5a58a015a6e 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/resource/PathResource.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/resource/PathResource.java @@ -73,7 +73,7 @@ public class PathResource extends Resource if(!URIUtil.equalsIgnoreEncodings(uri,path.toUri())) { - return new File(uri).toPath().toAbsolutePath(); + return Paths.get(uri).toAbsolutePath(); } if (!abs.isAbsolute()) @@ -568,4 +568,4 @@ public class PathResource extends Resource { return this.uri.toASCIIString(); } -} \ No newline at end of file +} diff --git a/jetty-util/src/test/java/org/eclipse/jetty/util/resource/FileSystemResourceTest.java b/jetty-util/src/test/java/org/eclipse/jetty/util/resource/FileSystemResourceTest.java index 03e52c6b5f8..f1e3e16316b 100644 --- a/jetty-util/src/test/java/org/eclipse/jetty/util/resource/FileSystemResourceTest.java +++ b/jetty-util/src/test/java/org/eclipse/jetty/util/resource/FileSystemResourceTest.java @@ -29,6 +29,7 @@ import static org.junit.Assert.assertThat; import static org.junit.Assume.assumeFalse; import static org.junit.Assume.assumeNoException; import static org.junit.Assume.assumeThat; +import static org.junit.Assume.assumeTrue; import java.io.BufferedWriter; import java.io.File; @@ -1397,5 +1398,19 @@ public class FileSystemResourceTest } } - + @Test + public void testUncPath() throws Exception + { + assumeTrue("Only windows supports UNC paths", OS.IS_WINDOWS); + assumeFalse("FileResource does not support this test", _class.equals(FileResource.class)); + + try (Resource base = newResource(URI.create("file://127.0.0.1/path"))) + { + Resource resource = base.addPath("WEB-INF/"); + assertThat("getURI()", resource.getURI().toASCIIString(), containsString("path/WEB-INF/")); + assertThat("isAlias()", resource.isAlias(), is(true)); + assertThat("getAlias()", resource.getAlias(), notNullValue()); + assertThat("getAlias()", resource.getAlias().toASCIIString(), containsString("path/WEB-INF")); + } + } } From e8f8e6a279723c3a3210c6f84015d3753a046083 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Fri, 31 Mar 2017 11:18:30 -0700 Subject: [PATCH 05/80] Issue #1439 - Cleanup of PR #1438 to enable UNC support + Uses Path.toRealPath() to satisfy requirements on both Windows and Linux respectively --- .../eclipse/jetty/util/resource/PathResource.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/resource/PathResource.java b/jetty-util/src/main/java/org/eclipse/jetty/util/resource/PathResource.java index 5a58a015a6e..54fdd56dc56 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/resource/PathResource.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/resource/PathResource.java @@ -73,7 +73,17 @@ public class PathResource extends Resource if(!URIUtil.equalsIgnoreEncodings(uri,path.toUri())) { - return Paths.get(uri).toAbsolutePath(); + try + { + return Paths.get(uri).toRealPath(FOLLOW_LINKS); + } + catch (IOException ignored) + { + // If the toRealPath() call fails, then let + // the alias checking routines continue on + // to other techniques. + LOG.ignore(ignored); + } } if (!abs.isAbsolute()) From a9fbfc0868aafae79296b091e8aa004d9473808a Mon Sep 17 00:00:00 2001 From: olivier lamy Date: Sat, 1 Apr 2017 19:43:48 +1100 Subject: [PATCH 06/80] fix issues from pr review #1348 Signed-off-by: olivier lamy --- jetty-bom/pom.xml | 110 +++++++++++++++++++++++++++++++++------------- 1 file changed, 80 insertions(+), 30 deletions(-) diff --git a/jetty-bom/pom.xml b/jetty-bom/pom.xml index 8afbee9ccf8..26b41b9e927 100644 --- a/jetty-bom/pom.xml +++ b/jetty-bom/pom.xml @@ -17,6 +17,26 @@ jetty-annotations ${project.version} + + org.eclipse.jetty + cdi-core + ${project.version} + + + org.eclipse.jetty + cdi-full-servlet + ${project.version} + + + org.eclipse.jetty + cdi-servlet + ${project.version} + + + org.eclipse.jetty + cdi-websocket + ${project.version} + org.eclipse.jetty jetty-client @@ -27,31 +47,21 @@ jetty-continuation ${project.version} + + org.eclipse.jetty + jetty-gcloud-memcached-session-manager + ${project.version} + + + org.eclipse.jetty + jetty-gcloud-session-manager + ${project.version} + org.eclipse.jetty jetty-http ${project.version} - - org.eclipse.jetty.http2 - http2-client - ${project.version} - - - org.eclipse.jetty.http2 - http2-common - ${project.version} - - - org.eclipse.jetty.http2 - http2-hpack - ${project.version} - - - org.eclipse.jetty.http2 - http2-server - ${project.version} - org.eclipse.jetty jetty-http-spi @@ -97,6 +107,21 @@ jetty-nosql ${project.version} + + org.eclipse.jetty + jetty-osgi-boot + ${project.version} + + + org.eclipse.jetty + jetty-osgi-boot-jsp + ${project.version} + + + org.eclipse.jetty + jetty-osgi-boot-warurl + ${project.version} + org.eclipse.jetty jetty-plus @@ -117,11 +142,6 @@ jetty-rewrite ${project.version} - - org.eclipse.jetty - jetty-runner - ${project.version} - org.eclipse.jetty jetty-security @@ -147,11 +167,6 @@ jetty-spring ${project.version} - - org.eclipse.jetty - jetty-start - ${project.version} - org.eclipse.jetty jetty-util @@ -167,6 +182,41 @@ jetty-webapp ${project.version} + + org.eclipse.jetty + javax-websocket-client-impl + ${project.version} + + + org.eclipse.jetty + javax-websocket-server-impl + ${project.version} + + + org.eclipse.jetty + javax-websocket-api + ${project.version} + + + org.eclipse.jetty + javax-websocket-client + ${project.version} + + + org.eclipse.jetty + javax-websocket-common + ${project.version} + + + org.eclipse.jetty + javax-websocket-server + ${project.version} + + + org.eclipse.jetty + javax-websocket-servlet + ${project.version} + org.eclipse.jetty jetty-xml From 1b9ec463a3b8b83d60359fe786c5be9b99b40591 Mon Sep 17 00:00:00 2001 From: Mat Booth Date: Wed, 5 Apr 2017 11:32:17 +0100 Subject: [PATCH 07/80] Make the requirement on "osgi.serviceloader.registrar" optional Follow-up to acf3608. This better allows Eclipse to continue to make use of jetty-http without requiring the presence of Apache Aries bundles. Signed-off-by: Mat Booth --- jetty-http/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jetty-http/pom.xml b/jetty-http/pom.xml index 08ec561e54f..8d12d0b1c6a 100644 --- a/jetty-http/pom.xml +++ b/jetty-http/pom.xml @@ -37,7 +37,7 @@ true - osgi.serviceloader; filter:="(osgi.serviceloader=org.eclipse.jetty.http.HttpFieldPreEncoder)";resolution:=optional;cardinality:=multiple, osgi.extender; filter:="(osgi.extender=osgi.serviceloader.processor)";resolution:=optional, osgi.extender; filter:="(osgi.extender=osgi.serviceloader.registrar)" + osgi.serviceloader; filter:="(osgi.serviceloader=org.eclipse.jetty.http.HttpFieldPreEncoder)";resolution:=optional;cardinality:=multiple, osgi.extender; filter:="(osgi.extender=osgi.serviceloader.processor)";resolution:=optional, osgi.extender; filter:="(osgi.extender=osgi.serviceloader.registrar)";resolution:=optional From 63273aa40b52c1e4d93217df87f72f1139d4ff36 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Thu, 6 Apr 2017 06:31:02 -0700 Subject: [PATCH 08/80] Updating to version 9.3.18.v20170406 --- VERSION.txt | 7 ++++++- aggregates/jetty-all-compact3/pom.xml | 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-java-client/pom.xml | 2 +- jetty-alpn/jetty-alpn-java-server/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/cdi-core/pom.xml | 2 +- jetty-cdi/cdi-full-servlet/pom.xml | 2 +- jetty-cdi/cdi-servlet/pom.xml | 2 +- jetty-cdi/cdi-websocket/pom.xml | 2 +- jetty-cdi/pom.xml | 2 +- jetty-cdi/test-cdi-webapp/pom.xml | 2 +- jetty-client/pom.xml | 2 +- jetty-continuation/pom.xml | 2 +- jetty-deploy/pom.xml | 2 +- jetty-distribution/pom.xml | 2 +- jetty-documentation/pom.xml | 2 +- jetty-fcgi/fcgi-client/pom.xml | 2 +- jetty-fcgi/fcgi-server/pom.xml | 2 +- jetty-fcgi/pom.xml | 2 +- .../jetty-gcloud-memcached-session-manager/pom.xml | 2 +- jetty-gcloud/jetty-gcloud-session-manager/pom.xml | 2 +- jetty-gcloud/pom.xml | 2 +- jetty-http-spi/pom.xml | 2 +- jetty-http/pom.xml | 2 +- jetty-http2/http2-alpn-tests/pom.xml | 2 +- jetty-http2/http2-client/pom.xml | 2 +- jetty-http2/http2-common/pom.xml | 2 +- jetty-http2/http2-hpack/pom.xml | 2 +- jetty-http2/http2-http-client-transport/pom.xml | 2 +- jetty-http2/http2-server/pom.xml | 2 +- jetty-http2/pom.xml | 2 +- jetty-infinispan/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-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-fragment/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-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-http-client-transport/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-gcloud-memcached-sessions/pom.xml | 2 +- tests/test-sessions/test-gcloud-sessions/pom.xml | 2 +- tests/test-sessions/test-hash-sessions/pom.xml | 2 +- tests/test-sessions/test-infinispan-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 +- 115 files changed, 120 insertions(+), 115 deletions(-) diff --git a/VERSION.txt b/VERSION.txt index de909508ea9..22d62c59e87 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1,4 +1,9 @@ -jetty-9.3.18-SNAPSHOT +jetty-9.3.18.v20170406 - 06 April 2017 + + 877 Programmatic servlet mappings cannot override mappings from + webdefault.xml using quickstart + + 1201 X-Forwarded-For incorrectly set in jetty-http-forwarded.xml + + 1417 Improve classloader dumping + + 1439 Allow UNC paths to function as Resource bases jetty-9.3.17.v20170317 - 17 March 2017 + 329 Javadoc for HttpTester and ServletTester needs to reference limited HTTP diff --git a/aggregates/jetty-all-compact3/pom.xml b/aggregates/jetty-all-compact3/pom.xml index 876aa689cb9..786dedc0c48 100644 --- a/aggregates/jetty-all-compact3/pom.xml +++ b/aggregates/jetty-all-compact3/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 ../../pom.xml 4.0.0 diff --git a/aggregates/jetty-all/pom.xml b/aggregates/jetty-all/pom.xml index 921352201a7..119acb98f8b 100644 --- a/aggregates/jetty-all/pom.xml +++ b/aggregates/jetty-all/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 ../../pom.xml 4.0.0 diff --git a/apache-jsp/pom.xml b/apache-jsp/pom.xml index 1635aa42519..039faba5d8e 100644 --- a/apache-jsp/pom.xml +++ b/apache-jsp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 apache-jsp diff --git a/apache-jstl/pom.xml b/apache-jstl/pom.xml index 4f053d6fe98..982b6a3c35c 100644 --- a/apache-jstl/pom.xml +++ b/apache-jstl/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 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 247897f8d4f..f48c6b36e1b 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.3.18-SNAPSHOT + 9.3.18.v20170406 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 0b045beb83a..2f2d6e88e4f 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.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 org.eclipse.jetty.example-async-rest diff --git a/examples/async-rest/pom.xml b/examples/async-rest/pom.xml index f4eae18a1de..725bdcf3bc4 100644 --- a/examples/async-rest/pom.xml +++ b/examples/async-rest/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.examples examples-parent - 9.3.18-SNAPSHOT + 9.3.18.v20170406 ../pom.xml 4.0.0 diff --git a/examples/embedded/pom.xml b/examples/embedded/pom.xml index ee3a515065a..bcdbdfb11c2 100644 --- a/examples/embedded/pom.xml +++ b/examples/embedded/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.examples examples-parent - 9.3.18-SNAPSHOT + 9.3.18.v20170406 ../pom.xml 4.0.0 diff --git a/examples/pom.xml b/examples/pom.xml index 364c9dbe3f9..ef3e6c8fbd6 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 ../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 ce1bdd9f009..f3b188d68a2 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.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 jetty-alpn-client diff --git a/jetty-alpn/jetty-alpn-java-client/pom.xml b/jetty-alpn/jetty-alpn-java-client/pom.xml index 7a59237c750..3a48694cd20 100644 --- a/jetty-alpn/jetty-alpn-java-client/pom.xml +++ b/jetty-alpn/jetty-alpn-java-client/pom.xml @@ -6,7 +6,7 @@ org.eclipse.jetty jetty-alpn-parent - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 diff --git a/jetty-alpn/jetty-alpn-java-server/pom.xml b/jetty-alpn/jetty-alpn-java-server/pom.xml index 524bc559ef2..bd4c1edfa47 100644 --- a/jetty-alpn/jetty-alpn-java-server/pom.xml +++ b/jetty-alpn/jetty-alpn-java-server/pom.xml @@ -5,7 +5,7 @@ org.eclipse.jetty jetty-alpn-parent - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 diff --git a/jetty-alpn/jetty-alpn-server/pom.xml b/jetty-alpn/jetty-alpn-server/pom.xml index a49226ba278..e96fe9a8b12 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.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 jetty-alpn-server diff --git a/jetty-alpn/pom.xml b/jetty-alpn/pom.xml index a819d9e7a2e..cdf2959fbe8 100644 --- a/jetty-alpn/pom.xml +++ b/jetty-alpn/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 jetty-alpn-parent diff --git a/jetty-annotations/pom.xml b/jetty-annotations/pom.xml index 0a2c206dd83..63b4918a168 100644 --- a/jetty-annotations/pom.xml +++ b/jetty-annotations/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 jetty-annotations diff --git a/jetty-ant/pom.xml b/jetty-ant/pom.xml index 954a85b504b..c3359397381 100644 --- a/jetty-ant/pom.xml +++ b/jetty-ant/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 jetty-ant diff --git a/jetty-cdi/cdi-core/pom.xml b/jetty-cdi/cdi-core/pom.xml index 37ca6258950..b4fc7f40b87 100644 --- a/jetty-cdi/cdi-core/pom.xml +++ b/jetty-cdi/cdi-core/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.cdi jetty-cdi-parent - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 cdi-core diff --git a/jetty-cdi/cdi-full-servlet/pom.xml b/jetty-cdi/cdi-full-servlet/pom.xml index 5e6cf3c250d..94f3920099d 100644 --- a/jetty-cdi/cdi-full-servlet/pom.xml +++ b/jetty-cdi/cdi-full-servlet/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.cdi jetty-cdi-parent - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 cdi-full-servlet diff --git a/jetty-cdi/cdi-servlet/pom.xml b/jetty-cdi/cdi-servlet/pom.xml index 4682020407f..c6bb64f882b 100644 --- a/jetty-cdi/cdi-servlet/pom.xml +++ b/jetty-cdi/cdi-servlet/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.cdi jetty-cdi-parent - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 cdi-servlet diff --git a/jetty-cdi/cdi-websocket/pom.xml b/jetty-cdi/cdi-websocket/pom.xml index dda5c639490..45e3b524e55 100644 --- a/jetty-cdi/cdi-websocket/pom.xml +++ b/jetty-cdi/cdi-websocket/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.cdi jetty-cdi-parent - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 cdi-websocket diff --git a/jetty-cdi/pom.xml b/jetty-cdi/pom.xml index bc3a60f43bc..185a92216fb 100644 --- a/jetty-cdi/pom.xml +++ b/jetty-cdi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 org.eclipse.jetty.cdi diff --git a/jetty-cdi/test-cdi-webapp/pom.xml b/jetty-cdi/test-cdi-webapp/pom.xml index 209871f5c42..c6519535276 100644 --- a/jetty-cdi/test-cdi-webapp/pom.xml +++ b/jetty-cdi/test-cdi-webapp/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.cdi jetty-cdi-parent - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 test-cdi-webapp diff --git a/jetty-client/pom.xml b/jetty-client/pom.xml index 6ee28ed9d9e..1ca1ce4d268 100644 --- a/jetty-client/pom.xml +++ b/jetty-client/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 diff --git a/jetty-continuation/pom.xml b/jetty-continuation/pom.xml index c8862d0300a..8682f70c7e8 100644 --- a/jetty-continuation/pom.xml +++ b/jetty-continuation/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 jetty-continuation diff --git a/jetty-deploy/pom.xml b/jetty-deploy/pom.xml index df95c61fd0d..c4f72c19686 100644 --- a/jetty-deploy/pom.xml +++ b/jetty-deploy/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 jetty-deploy diff --git a/jetty-distribution/pom.xml b/jetty-distribution/pom.xml index 97eeedec618..264aa7669da 100644 --- a/jetty-distribution/pom.xml +++ b/jetty-distribution/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 jetty-distribution diff --git a/jetty-documentation/pom.xml b/jetty-documentation/pom.xml index 4e372020525..55468ca03db 100644 --- a/jetty-documentation/pom.xml +++ b/jetty-documentation/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 jetty-documentation Jetty :: Documentation diff --git a/jetty-fcgi/fcgi-client/pom.xml b/jetty-fcgi/fcgi-client/pom.xml index e11063982e0..4722100b625 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.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 diff --git a/jetty-fcgi/fcgi-server/pom.xml b/jetty-fcgi/fcgi-server/pom.xml index f237802e8ac..f687e572bb5 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.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 diff --git a/jetty-fcgi/pom.xml b/jetty-fcgi/pom.xml index 3fdc1f0c5e7..7f096c37212 100644 --- a/jetty-fcgi/pom.xml +++ b/jetty-fcgi/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 diff --git a/jetty-gcloud/jetty-gcloud-memcached-session-manager/pom.xml b/jetty-gcloud/jetty-gcloud-memcached-session-manager/pom.xml index 8f9a94af15c..456efd48251 100644 --- a/jetty-gcloud/jetty-gcloud-memcached-session-manager/pom.xml +++ b/jetty-gcloud/jetty-gcloud-memcached-session-manager/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.gcloud gcloud-parent - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 diff --git a/jetty-gcloud/jetty-gcloud-session-manager/pom.xml b/jetty-gcloud/jetty-gcloud-session-manager/pom.xml index c5a7070ac47..bab208ecbd1 100644 --- a/jetty-gcloud/jetty-gcloud-session-manager/pom.xml +++ b/jetty-gcloud/jetty-gcloud-session-manager/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.gcloud gcloud-parent - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 diff --git a/jetty-gcloud/pom.xml b/jetty-gcloud/pom.xml index 8346d9da4ff..8b195803a80 100644 --- a/jetty-gcloud/pom.xml +++ b/jetty-gcloud/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 diff --git a/jetty-http-spi/pom.xml b/jetty-http-spi/pom.xml index 8d94ce835f4..60d0daec965 100644 --- a/jetty-http-spi/pom.xml +++ b/jetty-http-spi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 jetty-http-spi diff --git a/jetty-http/pom.xml b/jetty-http/pom.xml index ac40292a652..2e4e90faca9 100644 --- a/jetty-http/pom.xml +++ b/jetty-http/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 jetty-http diff --git a/jetty-http2/http2-alpn-tests/pom.xml b/jetty-http2/http2-alpn-tests/pom.xml index 057f586f074..3bae207b2cb 100644 --- a/jetty-http2/http2-alpn-tests/pom.xml +++ b/jetty-http2/http2-alpn-tests/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.http2 http2-parent - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 diff --git a/jetty-http2/http2-client/pom.xml b/jetty-http2/http2-client/pom.xml index e75b49ce5b5..219f8a6ddc6 100644 --- a/jetty-http2/http2-client/pom.xml +++ b/jetty-http2/http2-client/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.http2 http2-parent - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 diff --git a/jetty-http2/http2-common/pom.xml b/jetty-http2/http2-common/pom.xml index bd73bed2d7f..8fc289c3ecc 100644 --- a/jetty-http2/http2-common/pom.xml +++ b/jetty-http2/http2-common/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.http2 http2-parent - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 diff --git a/jetty-http2/http2-hpack/pom.xml b/jetty-http2/http2-hpack/pom.xml index 8c79bf5ce6e..e146213833f 100644 --- a/jetty-http2/http2-hpack/pom.xml +++ b/jetty-http2/http2-hpack/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.http2 http2-parent - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 diff --git a/jetty-http2/http2-http-client-transport/pom.xml b/jetty-http2/http2-http-client-transport/pom.xml index 26ef827b8d3..6f18169981a 100644 --- a/jetty-http2/http2-http-client-transport/pom.xml +++ b/jetty-http2/http2-http-client-transport/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.http2 http2-parent - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 diff --git a/jetty-http2/http2-server/pom.xml b/jetty-http2/http2-server/pom.xml index 01dbec4d8f4..179c3c42ac0 100644 --- a/jetty-http2/http2-server/pom.xml +++ b/jetty-http2/http2-server/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.http2 http2-parent - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 diff --git a/jetty-http2/pom.xml b/jetty-http2/pom.xml index 45dc042cbff..388d34dd797 100644 --- a/jetty-http2/pom.xml +++ b/jetty-http2/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 diff --git a/jetty-infinispan/pom.xml b/jetty-infinispan/pom.xml index 0a082674e89..0fe0471307d 100644 --- a/jetty-infinispan/pom.xml +++ b/jetty-infinispan/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 jetty-infinispan diff --git a/jetty-io/pom.xml b/jetty-io/pom.xml index 6d2755022a4..96a095b5b0a 100644 --- a/jetty-io/pom.xml +++ b/jetty-io/pom.xml @@ -2,7 +2,7 @@ jetty-project org.eclipse.jetty - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 jetty-io diff --git a/jetty-jaas/pom.xml b/jetty-jaas/pom.xml index 7dcb977356f..555e0b47326 100644 --- a/jetty-jaas/pom.xml +++ b/jetty-jaas/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 jetty-jaas diff --git a/jetty-jaspi/pom.xml b/jetty-jaspi/pom.xml index 8e820874a8e..dfacf3b39f5 100644 --- a/jetty-jaspi/pom.xml +++ b/jetty-jaspi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 jetty-jaspi diff --git a/jetty-jmx/pom.xml b/jetty-jmx/pom.xml index b5055602732..51628aeca42 100644 --- a/jetty-jmx/pom.xml +++ b/jetty-jmx/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 jetty-jmx diff --git a/jetty-jndi/pom.xml b/jetty-jndi/pom.xml index 71e7887c2cc..c2630f88755 100644 --- a/jetty-jndi/pom.xml +++ b/jetty-jndi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 jetty-jndi diff --git a/jetty-jspc-maven-plugin/pom.xml b/jetty-jspc-maven-plugin/pom.xml index 54d621a9a3a..4811ed9a66e 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.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 jetty-jspc-maven-plugin diff --git a/jetty-maven-plugin/pom.xml b/jetty-maven-plugin/pom.xml index c5d30223a88..9626035d284 100644 --- a/jetty-maven-plugin/pom.xml +++ b/jetty-maven-plugin/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 jetty-maven-plugin diff --git a/jetty-monitor/pom.xml b/jetty-monitor/pom.xml index d28c92b6ee7..c69ec5766a6 100644 --- a/jetty-monitor/pom.xml +++ b/jetty-monitor/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 jetty-monitor diff --git a/jetty-nosql/pom.xml b/jetty-nosql/pom.xml index 89a69647559..8b0720af8e0 100644 --- a/jetty-nosql/pom.xml +++ b/jetty-nosql/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 jetty-nosql diff --git a/jetty-osgi/jetty-osgi-alpn/pom.xml b/jetty-osgi/jetty-osgi-alpn/pom.xml index a025fe134d6..c8280686255 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.3.18-SNAPSHOT + 9.3.18.v20170406 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 f9c6406c30b..d199b49365d 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.3.18-SNAPSHOT + 9.3.18.v20170406 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 f54c9a9aee8..3d6269f3c5f 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.3.18-SNAPSHOT + 9.3.18.v20170406 ../pom.xml 4.0.0 diff --git a/jetty-osgi/jetty-osgi-boot/pom.xml b/jetty-osgi/jetty-osgi-boot/pom.xml index 8f27d8bcba8..28e2099f0dd 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.3.18-SNAPSHOT + 9.3.18.v20170406 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 46b7cd3a986..a2c6c98f6fe 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.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 jetty-httpservice diff --git a/jetty-osgi/pom.xml b/jetty-osgi/pom.xml index 9378a69d374..4e9c2e136b0 100644 --- a/jetty-osgi/pom.xml +++ b/jetty-osgi/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 diff --git a/jetty-osgi/test-jetty-osgi-context/pom.xml b/jetty-osgi/test-jetty-osgi-context/pom.xml index 90c3e91b443..53e7582dd83 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.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 test-jetty-osgi-context diff --git a/jetty-osgi/test-jetty-osgi-fragment/pom.xml b/jetty-osgi/test-jetty-osgi-fragment/pom.xml index 34f67ced1f1..8051a240772 100644 --- a/jetty-osgi/test-jetty-osgi-fragment/pom.xml +++ b/jetty-osgi/test-jetty-osgi-fragment/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 ../pom.xml 4.0.0 diff --git a/jetty-osgi/test-jetty-osgi-webapp/pom.xml b/jetty-osgi/test-jetty-osgi-webapp/pom.xml index bc9fd741a44..fe2163b6d7e 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.3.18-SNAPSHOT + 9.3.18.v20170406 ../pom.xml 4.0.0 diff --git a/jetty-osgi/test-jetty-osgi/pom.xml b/jetty-osgi/test-jetty-osgi/pom.xml index 3988bec670b..d7923a23aa1 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.3.18-SNAPSHOT + 9.3.18.v20170406 ../pom.xml 4.0.0 diff --git a/jetty-plus/pom.xml b/jetty-plus/pom.xml index a67e3e1d558..95ed1aa13c5 100644 --- a/jetty-plus/pom.xml +++ b/jetty-plus/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 jetty-plus diff --git a/jetty-proxy/pom.xml b/jetty-proxy/pom.xml index bbb629fcd5a..077997955bf 100644 --- a/jetty-proxy/pom.xml +++ b/jetty-proxy/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 jetty-proxy diff --git a/jetty-quickstart/pom.xml b/jetty-quickstart/pom.xml index 3030e23b41e..268afb9ce67 100644 --- a/jetty-quickstart/pom.xml +++ b/jetty-quickstart/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 org.eclipse.jetty diff --git a/jetty-rewrite/pom.xml b/jetty-rewrite/pom.xml index 4dfe2ccba0b..b68e61902ae 100644 --- a/jetty-rewrite/pom.xml +++ b/jetty-rewrite/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 jetty-rewrite diff --git a/jetty-runner/pom.xml b/jetty-runner/pom.xml index b5494b34255..9173df7ae54 100644 --- a/jetty-runner/pom.xml +++ b/jetty-runner/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 jetty-runner diff --git a/jetty-security/pom.xml b/jetty-security/pom.xml index 684fc3308b3..efd2044b72f 100644 --- a/jetty-security/pom.xml +++ b/jetty-security/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 jetty-security diff --git a/jetty-server/pom.xml b/jetty-server/pom.xml index b4a94f6b251..a1fc6c034a4 100644 --- a/jetty-server/pom.xml +++ b/jetty-server/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 jetty-server diff --git a/jetty-servlet/pom.xml b/jetty-servlet/pom.xml index 06689656d94..cad0bd622bb 100644 --- a/jetty-servlet/pom.xml +++ b/jetty-servlet/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 jetty-servlet diff --git a/jetty-servlets/pom.xml b/jetty-servlets/pom.xml index 65877a8134c..e56019a210e 100644 --- a/jetty-servlets/pom.xml +++ b/jetty-servlets/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 jetty-servlets diff --git a/jetty-spring/pom.xml b/jetty-spring/pom.xml index 9feceb57c24..fd74699c9c0 100644 --- a/jetty-spring/pom.xml +++ b/jetty-spring/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 jetty-spring diff --git a/jetty-start/pom.xml b/jetty-start/pom.xml index 09d8e371d18..e3063813d6f 100644 --- a/jetty-start/pom.xml +++ b/jetty-start/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 jetty-start diff --git a/jetty-util-ajax/pom.xml b/jetty-util-ajax/pom.xml index 073f10b1b13..e22c7d8a4a7 100644 --- a/jetty-util-ajax/pom.xml +++ b/jetty-util-ajax/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 jetty-util-ajax diff --git a/jetty-util/pom.xml b/jetty-util/pom.xml index e7a71315a38..d4d23f222f1 100644 --- a/jetty-util/pom.xml +++ b/jetty-util/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 jetty-util diff --git a/jetty-webapp/pom.xml b/jetty-webapp/pom.xml index a1d2ac6da85..858f6630a0d 100644 --- a/jetty-webapp/pom.xml +++ b/jetty-webapp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 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 2571369ea9b..78eb40d45c9 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.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 diff --git a/jetty-websocket/javax-websocket-server-impl/pom.xml b/jetty-websocket/javax-websocket-server-impl/pom.xml index 1239dd35a3f..e8e24fc0351 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.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 diff --git a/jetty-websocket/pom.xml b/jetty-websocket/pom.xml index 7f9f52ab7eb..f3ea388de8c 100644 --- a/jetty-websocket/pom.xml +++ b/jetty-websocket/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 diff --git a/jetty-websocket/websocket-api/pom.xml b/jetty-websocket/websocket-api/pom.xml index 014e0b7f31e..e31ebdf7bc0 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.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 diff --git a/jetty-websocket/websocket-client/pom.xml b/jetty-websocket/websocket-client/pom.xml index 256b5859a19..fd034de47d7 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.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 diff --git a/jetty-websocket/websocket-common/pom.xml b/jetty-websocket/websocket-common/pom.xml index 3c5317b44c4..ff9ef7bdfc7 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.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 diff --git a/jetty-websocket/websocket-server/pom.xml b/jetty-websocket/websocket-server/pom.xml index a9e512388b7..200247adcd5 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.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 diff --git a/jetty-websocket/websocket-servlet/pom.xml b/jetty-websocket/websocket-servlet/pom.xml index c4457a6a75d..d3e82a78670 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.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 diff --git a/jetty-xml/pom.xml b/jetty-xml/pom.xml index 5479b06413d..bad4bda67c8 100644 --- a/jetty-xml/pom.xml +++ b/jetty-xml/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 jetty-xml diff --git a/pom.xml b/pom.xml index 7f87c72b4f2..fd23c238d69 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ 4.0.0 jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 Jetty :: Project http://www.eclipse.org/jetty pom diff --git a/tests/pom.xml b/tests/pom.xml index 92d7cd771b4..72d5f70ebf2 100644 --- a/tests/pom.xml +++ b/tests/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.18.v20170406 ../pom.xml org.eclipse.jetty.tests diff --git a/tests/test-continuation/pom.xml b/tests/test-continuation/pom.xml index c1804d353aa..9ef4bd269bb 100644 --- a/tests/test-continuation/pom.xml +++ b/tests/test-continuation/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests tests-parent - 9.3.18-SNAPSHOT + 9.3.18.v20170406 ../pom.xml 4.0.0 diff --git a/tests/test-http-client-transport/pom.xml b/tests/test-http-client-transport/pom.xml index 00fae0479e2..333591a3c6e 100644 --- a/tests/test-http-client-transport/pom.xml +++ b/tests/test-http-client-transport/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests tests-parent - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 diff --git a/tests/test-integration/pom.xml b/tests/test-integration/pom.xml index 97c8310d267..d16d421f9a8 100644 --- a/tests/test-integration/pom.xml +++ b/tests/test-integration/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests tests-parent - 9.3.18-SNAPSHOT + 9.3.18.v20170406 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 ac5f05ff101..abfc06eb4b4 100644 --- a/tests/test-jmx/jmx-webapp-it/pom.xml +++ b/tests/test-jmx/jmx-webapp-it/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-jmx-parent - 9.3.18-SNAPSHOT + 9.3.18.v20170406 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 bffc382ebc7..8e4cf85ae4e 100644 --- a/tests/test-jmx/jmx-webapp/pom.xml +++ b/tests/test-jmx/jmx-webapp/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-jmx-parent - 9.3.18-SNAPSHOT + 9.3.18.v20170406 jmx-webapp war diff --git a/tests/test-jmx/pom.xml b/tests/test-jmx/pom.xml index ea9a8603dd9..0c2e9a841ca 100644 --- a/tests/test-jmx/pom.xml +++ b/tests/test-jmx/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests tests-parent - 9.3.18-SNAPSHOT + 9.3.18.v20170406 4.0.0 test-jmx-parent diff --git a/tests/test-loginservice/pom.xml b/tests/test-loginservice/pom.xml index da3ccdaacbb..fb9e0c26201 100644 --- a/tests/test-loginservice/pom.xml +++ b/tests/test-loginservice/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests tests-parent - 9.3.18-SNAPSHOT + 9.3.18.v20170406 test-loginservice Jetty Tests :: Login Service diff --git a/tests/test-quickstart/pom.xml b/tests/test-quickstart/pom.xml index a45d1dcf4dc..d6703837690 100644 --- a/tests/test-quickstart/pom.xml +++ b/tests/test-quickstart/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.tests tests-parent - 9.3.18-SNAPSHOT + 9.3.18.v20170406 ../pom.xml 4.0.0 diff --git a/tests/test-sessions/pom.xml b/tests/test-sessions/pom.xml index 3b16249443e..87a8b7feba1 100644 --- a/tests/test-sessions/pom.xml +++ b/tests/test-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests tests-parent - 9.3.18-SNAPSHOT + 9.3.18.v20170406 test-sessions-parent Jetty Tests :: Sessions :: Parent diff --git a/tests/test-sessions/test-gcloud-memcached-sessions/pom.xml b/tests/test-sessions/test-gcloud-memcached-sessions/pom.xml index e74f326ab06..40976a9efe3 100644 --- a/tests/test-sessions/test-gcloud-memcached-sessions/pom.xml +++ b/tests/test-sessions/test-gcloud-memcached-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.3.18-SNAPSHOT + 9.3.18.v20170406 test-gcloud-memcached-sessions Jetty Tests :: Sessions :: GCloud with Memcached diff --git a/tests/test-sessions/test-gcloud-sessions/pom.xml b/tests/test-sessions/test-gcloud-sessions/pom.xml index 88d3b72a584..fec079e5538 100644 --- a/tests/test-sessions/test-gcloud-sessions/pom.xml +++ b/tests/test-sessions/test-gcloud-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.3.18-SNAPSHOT + 9.3.18.v20170406 test-gcloud-sessions Jetty Tests :: Sessions :: GCloud diff --git a/tests/test-sessions/test-hash-sessions/pom.xml b/tests/test-sessions/test-hash-sessions/pom.xml index 9115be4c361..fd8d320357a 100644 --- a/tests/test-sessions/test-hash-sessions/pom.xml +++ b/tests/test-sessions/test-hash-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.3.18-SNAPSHOT + 9.3.18.v20170406 test-hash-sessions Jetty Tests :: Sessions :: Hash diff --git a/tests/test-sessions/test-infinispan-sessions/pom.xml b/tests/test-sessions/test-infinispan-sessions/pom.xml index c42692b5821..ccd3d580fdc 100644 --- a/tests/test-sessions/test-infinispan-sessions/pom.xml +++ b/tests/test-sessions/test-infinispan-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.3.18-SNAPSHOT + 9.3.18.v20170406 test-infinispan-sessions Jetty Tests :: Sessions :: Infinispan diff --git a/tests/test-sessions/test-jdbc-sessions/pom.xml b/tests/test-sessions/test-jdbc-sessions/pom.xml index 9a8f19a571a..ca7a1cc4ae3 100644 --- a/tests/test-sessions/test-jdbc-sessions/pom.xml +++ b/tests/test-sessions/test-jdbc-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.3.18-SNAPSHOT + 9.3.18.v20170406 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 69d9224240e..3302344501f 100644 --- a/tests/test-sessions/test-mongodb-sessions/pom.xml +++ b/tests/test-sessions/test-mongodb-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.3.18-SNAPSHOT + 9.3.18.v20170406 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 04e9ee0614c..d9369b14aab 100644 --- a/tests/test-sessions/test-sessions-common/pom.xml +++ b/tests/test-sessions/test-sessions-common/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.3.18-SNAPSHOT + 9.3.18.v20170406 test-sessions-common Jetty Tests :: Sessions :: Common diff --git a/tests/test-webapps/pom.xml b/tests/test-webapps/pom.xml index 199432b836b..c6845f5f174 100644 --- a/tests/test-webapps/pom.xml +++ b/tests/test-webapps/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests tests-parent - 9.3.18-SNAPSHOT + 9.3.18.v20170406 ../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 d3274e7c46e..b3fda55aac6 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.3.18-SNAPSHOT + 9.3.18.v20170406 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 c7c690fde53..ac9e7056fe9 100644 --- a/tests/test-webapps/test-jetty-webapp/pom.xml +++ b/tests/test-webapps/test-jetty-webapp/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.3.18-SNAPSHOT + 9.3.18.v20170406 ../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 79e4a28c95a..1f78c15503d 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.3.18-SNAPSHOT + 9.3.18.v20170406 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 d4c45f4926a..7e879d58936 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.3.18-SNAPSHOT + 9.3.18.v20170406 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 5eb09837113..278fe5bf778 100644 --- a/tests/test-webapps/test-proxy-webapp/pom.xml +++ b/tests/test-webapps/test-proxy-webapp/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.3.18-SNAPSHOT + 9.3.18.v20170406 ../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 4848727f336..b170611cef9 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.3.18-SNAPSHOT + 9.3.18.v20170406 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 aa383d43908..6d2b35ab628 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.3.18-SNAPSHOT + 9.3.18.v20170406 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 a03e8469dd0..e4b761eece5 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.3.18-SNAPSHOT + 9.3.18.v20170406 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 201806e1f30..d1093504f98 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.3.18-SNAPSHOT + 9.3.18.v20170406 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 7a9f587ce2a..f424d2270fa 100644 --- a/tests/test-webapps/test-webapp-rfc2616/pom.xml +++ b/tests/test-webapps/test-webapp-rfc2616/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.3.18-SNAPSHOT + 9.3.18.v20170406 test-webapp-rfc2616 Jetty Tests :: WebApp :: RFC2616 From 9e2aeda0527898d28013f2b6179aa7fc46bd62a5 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Thu, 6 Apr 2017 07:47:53 -0700 Subject: [PATCH 09/80] Updating to version 9.3.19-SNAPSHOT --- VERSION.txt | 2 ++ aggregates/jetty-all-compact3/pom.xml | 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-java-client/pom.xml | 2 +- jetty-alpn/jetty-alpn-java-server/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/cdi-core/pom.xml | 2 +- jetty-cdi/cdi-full-servlet/pom.xml | 2 +- jetty-cdi/cdi-servlet/pom.xml | 2 +- jetty-cdi/cdi-websocket/pom.xml | 2 +- jetty-cdi/pom.xml | 2 +- jetty-cdi/test-cdi-webapp/pom.xml | 2 +- jetty-client/pom.xml | 2 +- jetty-continuation/pom.xml | 2 +- jetty-deploy/pom.xml | 2 +- jetty-distribution/pom.xml | 2 +- jetty-documentation/pom.xml | 2 +- jetty-fcgi/fcgi-client/pom.xml | 2 +- jetty-fcgi/fcgi-server/pom.xml | 2 +- jetty-fcgi/pom.xml | 2 +- jetty-gcloud/jetty-gcloud-memcached-session-manager/pom.xml | 2 +- jetty-gcloud/jetty-gcloud-session-manager/pom.xml | 2 +- jetty-gcloud/pom.xml | 2 +- jetty-http-spi/pom.xml | 2 +- jetty-http/pom.xml | 2 +- jetty-http2/http2-alpn-tests/pom.xml | 2 +- jetty-http2/http2-client/pom.xml | 2 +- jetty-http2/http2-common/pom.xml | 2 +- jetty-http2/http2-hpack/pom.xml | 2 +- jetty-http2/http2-http-client-transport/pom.xml | 2 +- jetty-http2/http2-server/pom.xml | 2 +- jetty-http2/pom.xml | 2 +- jetty-infinispan/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-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-fragment/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-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-http-client-transport/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-gcloud-memcached-sessions/pom.xml | 2 +- tests/test-sessions/test-gcloud-sessions/pom.xml | 2 +- tests/test-sessions/test-hash-sessions/pom.xml | 2 +- tests/test-sessions/test-infinispan-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 +- 115 files changed, 116 insertions(+), 114 deletions(-) diff --git a/VERSION.txt b/VERSION.txt index 22d62c59e87..654da0008ef 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1,3 +1,5 @@ +jetty-9.3.19-SNAPSHOT + jetty-9.3.18.v20170406 - 06 April 2017 + 877 Programmatic servlet mappings cannot override mappings from webdefault.xml using quickstart diff --git a/aggregates/jetty-all-compact3/pom.xml b/aggregates/jetty-all-compact3/pom.xml index 786dedc0c48..4e39533d90f 100644 --- a/aggregates/jetty-all-compact3/pom.xml +++ b/aggregates/jetty-all-compact3/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-SNAPSHOT ../../pom.xml 4.0.0 diff --git a/aggregates/jetty-all/pom.xml b/aggregates/jetty-all/pom.xml index 119acb98f8b..67a0795194e 100644 --- a/aggregates/jetty-all/pom.xml +++ b/aggregates/jetty-all/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-SNAPSHOT ../../pom.xml 4.0.0 diff --git a/apache-jsp/pom.xml b/apache-jsp/pom.xml index 039faba5d8e..8309bb407da 100644 --- a/apache-jsp/pom.xml +++ b/apache-jsp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 apache-jsp diff --git a/apache-jstl/pom.xml b/apache-jstl/pom.xml index 982b6a3c35c..34f89a88276 100644 --- a/apache-jstl/pom.xml +++ b/apache-jstl/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-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 f48c6b36e1b..84d358d62ec 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.3.18.v20170406 + 9.3.19-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 2f2d6e88e4f..bab4a8be878 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.3.18.v20170406 + 9.3.19-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 725bdcf3bc4..db336cfac15 100644 --- a/examples/async-rest/pom.xml +++ b/examples/async-rest/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.examples examples-parent - 9.3.18.v20170406 + 9.3.19-SNAPSHOT ../pom.xml 4.0.0 diff --git a/examples/embedded/pom.xml b/examples/embedded/pom.xml index bcdbdfb11c2..ff520ef879e 100644 --- a/examples/embedded/pom.xml +++ b/examples/embedded/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.examples examples-parent - 9.3.18.v20170406 + 9.3.19-SNAPSHOT ../pom.xml 4.0.0 diff --git a/examples/pom.xml b/examples/pom.xml index ef3e6c8fbd6..79bb30b7d65 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-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 f3b188d68a2..9e5ff091bf7 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.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 jetty-alpn-client diff --git a/jetty-alpn/jetty-alpn-java-client/pom.xml b/jetty-alpn/jetty-alpn-java-client/pom.xml index 3a48694cd20..9d6c7273287 100644 --- a/jetty-alpn/jetty-alpn-java-client/pom.xml +++ b/jetty-alpn/jetty-alpn-java-client/pom.xml @@ -6,7 +6,7 @@ org.eclipse.jetty jetty-alpn-parent - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 diff --git a/jetty-alpn/jetty-alpn-java-server/pom.xml b/jetty-alpn/jetty-alpn-java-server/pom.xml index bd4c1edfa47..f56ed3a71bd 100644 --- a/jetty-alpn/jetty-alpn-java-server/pom.xml +++ b/jetty-alpn/jetty-alpn-java-server/pom.xml @@ -5,7 +5,7 @@ org.eclipse.jetty jetty-alpn-parent - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 diff --git a/jetty-alpn/jetty-alpn-server/pom.xml b/jetty-alpn/jetty-alpn-server/pom.xml index e96fe9a8b12..b90ce5d2e66 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.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 jetty-alpn-server diff --git a/jetty-alpn/pom.xml b/jetty-alpn/pom.xml index cdf2959fbe8..94a7125e0dc 100644 --- a/jetty-alpn/pom.xml +++ b/jetty-alpn/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 jetty-alpn-parent diff --git a/jetty-annotations/pom.xml b/jetty-annotations/pom.xml index 63b4918a168..d075adc02f1 100644 --- a/jetty-annotations/pom.xml +++ b/jetty-annotations/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 jetty-annotations diff --git a/jetty-ant/pom.xml b/jetty-ant/pom.xml index c3359397381..2f56f74e631 100644 --- a/jetty-ant/pom.xml +++ b/jetty-ant/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 jetty-ant diff --git a/jetty-cdi/cdi-core/pom.xml b/jetty-cdi/cdi-core/pom.xml index b4fc7f40b87..5b1066ab290 100644 --- a/jetty-cdi/cdi-core/pom.xml +++ b/jetty-cdi/cdi-core/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.cdi jetty-cdi-parent - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 cdi-core diff --git a/jetty-cdi/cdi-full-servlet/pom.xml b/jetty-cdi/cdi-full-servlet/pom.xml index 94f3920099d..4b7292ed05e 100644 --- a/jetty-cdi/cdi-full-servlet/pom.xml +++ b/jetty-cdi/cdi-full-servlet/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.cdi jetty-cdi-parent - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 cdi-full-servlet diff --git a/jetty-cdi/cdi-servlet/pom.xml b/jetty-cdi/cdi-servlet/pom.xml index c6bb64f882b..1d164f263f4 100644 --- a/jetty-cdi/cdi-servlet/pom.xml +++ b/jetty-cdi/cdi-servlet/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.cdi jetty-cdi-parent - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 cdi-servlet diff --git a/jetty-cdi/cdi-websocket/pom.xml b/jetty-cdi/cdi-websocket/pom.xml index 45e3b524e55..8db867b6a02 100644 --- a/jetty-cdi/cdi-websocket/pom.xml +++ b/jetty-cdi/cdi-websocket/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.cdi jetty-cdi-parent - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 cdi-websocket diff --git a/jetty-cdi/pom.xml b/jetty-cdi/pom.xml index 185a92216fb..d44739c83ef 100644 --- a/jetty-cdi/pom.xml +++ b/jetty-cdi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 org.eclipse.jetty.cdi diff --git a/jetty-cdi/test-cdi-webapp/pom.xml b/jetty-cdi/test-cdi-webapp/pom.xml index c6519535276..775629959e6 100644 --- a/jetty-cdi/test-cdi-webapp/pom.xml +++ b/jetty-cdi/test-cdi-webapp/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.cdi jetty-cdi-parent - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 test-cdi-webapp diff --git a/jetty-client/pom.xml b/jetty-client/pom.xml index 1ca1ce4d268..57002ccaf7f 100644 --- a/jetty-client/pom.xml +++ b/jetty-client/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 diff --git a/jetty-continuation/pom.xml b/jetty-continuation/pom.xml index 8682f70c7e8..3886b0f2b3d 100644 --- a/jetty-continuation/pom.xml +++ b/jetty-continuation/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 jetty-continuation diff --git a/jetty-deploy/pom.xml b/jetty-deploy/pom.xml index c4f72c19686..272990f1a6b 100644 --- a/jetty-deploy/pom.xml +++ b/jetty-deploy/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 jetty-deploy diff --git a/jetty-distribution/pom.xml b/jetty-distribution/pom.xml index 264aa7669da..871614296d0 100644 --- a/jetty-distribution/pom.xml +++ b/jetty-distribution/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 jetty-distribution diff --git a/jetty-documentation/pom.xml b/jetty-documentation/pom.xml index 55468ca03db..dd5f77ba373 100644 --- a/jetty-documentation/pom.xml +++ b/jetty-documentation/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-SNAPSHOT jetty-documentation Jetty :: Documentation diff --git a/jetty-fcgi/fcgi-client/pom.xml b/jetty-fcgi/fcgi-client/pom.xml index 4722100b625..9dab830ea2c 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.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 diff --git a/jetty-fcgi/fcgi-server/pom.xml b/jetty-fcgi/fcgi-server/pom.xml index f687e572bb5..aa1d650715e 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.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 diff --git a/jetty-fcgi/pom.xml b/jetty-fcgi/pom.xml index 7f096c37212..f437e0b07e3 100644 --- a/jetty-fcgi/pom.xml +++ b/jetty-fcgi/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 diff --git a/jetty-gcloud/jetty-gcloud-memcached-session-manager/pom.xml b/jetty-gcloud/jetty-gcloud-memcached-session-manager/pom.xml index 456efd48251..ca618929b04 100644 --- a/jetty-gcloud/jetty-gcloud-memcached-session-manager/pom.xml +++ b/jetty-gcloud/jetty-gcloud-memcached-session-manager/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.gcloud gcloud-parent - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 diff --git a/jetty-gcloud/jetty-gcloud-session-manager/pom.xml b/jetty-gcloud/jetty-gcloud-session-manager/pom.xml index bab208ecbd1..c83ba2cd5ff 100644 --- a/jetty-gcloud/jetty-gcloud-session-manager/pom.xml +++ b/jetty-gcloud/jetty-gcloud-session-manager/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.gcloud gcloud-parent - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 diff --git a/jetty-gcloud/pom.xml b/jetty-gcloud/pom.xml index 8b195803a80..cdafb5faa9a 100644 --- a/jetty-gcloud/pom.xml +++ b/jetty-gcloud/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 diff --git a/jetty-http-spi/pom.xml b/jetty-http-spi/pom.xml index 60d0daec965..76f782701bd 100644 --- a/jetty-http-spi/pom.xml +++ b/jetty-http-spi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 jetty-http-spi diff --git a/jetty-http/pom.xml b/jetty-http/pom.xml index 2e4e90faca9..42232a96e14 100644 --- a/jetty-http/pom.xml +++ b/jetty-http/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 jetty-http diff --git a/jetty-http2/http2-alpn-tests/pom.xml b/jetty-http2/http2-alpn-tests/pom.xml index 3bae207b2cb..60078c88866 100644 --- a/jetty-http2/http2-alpn-tests/pom.xml +++ b/jetty-http2/http2-alpn-tests/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.http2 http2-parent - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 diff --git a/jetty-http2/http2-client/pom.xml b/jetty-http2/http2-client/pom.xml index 219f8a6ddc6..15a44efc5d0 100644 --- a/jetty-http2/http2-client/pom.xml +++ b/jetty-http2/http2-client/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.http2 http2-parent - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 diff --git a/jetty-http2/http2-common/pom.xml b/jetty-http2/http2-common/pom.xml index 8fc289c3ecc..17e958b1317 100644 --- a/jetty-http2/http2-common/pom.xml +++ b/jetty-http2/http2-common/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.http2 http2-parent - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 diff --git a/jetty-http2/http2-hpack/pom.xml b/jetty-http2/http2-hpack/pom.xml index e146213833f..c71765bd201 100644 --- a/jetty-http2/http2-hpack/pom.xml +++ b/jetty-http2/http2-hpack/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.http2 http2-parent - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 diff --git a/jetty-http2/http2-http-client-transport/pom.xml b/jetty-http2/http2-http-client-transport/pom.xml index 6f18169981a..c3ddb743fcc 100644 --- a/jetty-http2/http2-http-client-transport/pom.xml +++ b/jetty-http2/http2-http-client-transport/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.http2 http2-parent - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 diff --git a/jetty-http2/http2-server/pom.xml b/jetty-http2/http2-server/pom.xml index 179c3c42ac0..82bf5a5a34e 100644 --- a/jetty-http2/http2-server/pom.xml +++ b/jetty-http2/http2-server/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.http2 http2-parent - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 diff --git a/jetty-http2/pom.xml b/jetty-http2/pom.xml index 388d34dd797..7dcab970c55 100644 --- a/jetty-http2/pom.xml +++ b/jetty-http2/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 diff --git a/jetty-infinispan/pom.xml b/jetty-infinispan/pom.xml index 0fe0471307d..e0bfb8f5627 100644 --- a/jetty-infinispan/pom.xml +++ b/jetty-infinispan/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 jetty-infinispan diff --git a/jetty-io/pom.xml b/jetty-io/pom.xml index 96a095b5b0a..5516f8a33c5 100644 --- a/jetty-io/pom.xml +++ b/jetty-io/pom.xml @@ -2,7 +2,7 @@ jetty-project org.eclipse.jetty - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 jetty-io diff --git a/jetty-jaas/pom.xml b/jetty-jaas/pom.xml index 555e0b47326..fbd86449c2f 100644 --- a/jetty-jaas/pom.xml +++ b/jetty-jaas/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 jetty-jaas diff --git a/jetty-jaspi/pom.xml b/jetty-jaspi/pom.xml index dfacf3b39f5..ba131973b32 100644 --- a/jetty-jaspi/pom.xml +++ b/jetty-jaspi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 jetty-jaspi diff --git a/jetty-jmx/pom.xml b/jetty-jmx/pom.xml index 51628aeca42..7b7c4228c9e 100644 --- a/jetty-jmx/pom.xml +++ b/jetty-jmx/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 jetty-jmx diff --git a/jetty-jndi/pom.xml b/jetty-jndi/pom.xml index c2630f88755..58c63e25c3c 100644 --- a/jetty-jndi/pom.xml +++ b/jetty-jndi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 jetty-jndi diff --git a/jetty-jspc-maven-plugin/pom.xml b/jetty-jspc-maven-plugin/pom.xml index 4811ed9a66e..f8c317f6341 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.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 jetty-jspc-maven-plugin diff --git a/jetty-maven-plugin/pom.xml b/jetty-maven-plugin/pom.xml index 9626035d284..1d699d3b45a 100644 --- a/jetty-maven-plugin/pom.xml +++ b/jetty-maven-plugin/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 jetty-maven-plugin diff --git a/jetty-monitor/pom.xml b/jetty-monitor/pom.xml index c69ec5766a6..91c28d4ef1d 100644 --- a/jetty-monitor/pom.xml +++ b/jetty-monitor/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 jetty-monitor diff --git a/jetty-nosql/pom.xml b/jetty-nosql/pom.xml index 8b0720af8e0..ff0b75a1ed9 100644 --- a/jetty-nosql/pom.xml +++ b/jetty-nosql/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-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 c8280686255..2220949f8dd 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.3.18.v20170406 + 9.3.19-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 d199b49365d..d03f77cf295 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.3.18.v20170406 + 9.3.19-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 3d6269f3c5f..b73dc94b7e9 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.3.18.v20170406 + 9.3.19-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 28e2099f0dd..a4215b83521 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.3.18.v20170406 + 9.3.19-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 a2c6c98f6fe..3251f9512fe 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.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 jetty-httpservice diff --git a/jetty-osgi/pom.xml b/jetty-osgi/pom.xml index 4e9c2e136b0..2b326f2a701 100644 --- a/jetty-osgi/pom.xml +++ b/jetty-osgi/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 diff --git a/jetty-osgi/test-jetty-osgi-context/pom.xml b/jetty-osgi/test-jetty-osgi-context/pom.xml index 53e7582dd83..518b55df451 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.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 test-jetty-osgi-context diff --git a/jetty-osgi/test-jetty-osgi-fragment/pom.xml b/jetty-osgi/test-jetty-osgi-fragment/pom.xml index 8051a240772..6eaab43ec18 100644 --- a/jetty-osgi/test-jetty-osgi-fragment/pom.xml +++ b/jetty-osgi/test-jetty-osgi-fragment/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.3.18.v20170406 + 9.3.19-SNAPSHOT ../pom.xml 4.0.0 diff --git a/jetty-osgi/test-jetty-osgi-webapp/pom.xml b/jetty-osgi/test-jetty-osgi-webapp/pom.xml index fe2163b6d7e..03c3a7f3d4f 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.3.18.v20170406 + 9.3.19-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 d7923a23aa1..4751f4a7872 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.3.18.v20170406 + 9.3.19-SNAPSHOT ../pom.xml 4.0.0 diff --git a/jetty-plus/pom.xml b/jetty-plus/pom.xml index 95ed1aa13c5..41de199c876 100644 --- a/jetty-plus/pom.xml +++ b/jetty-plus/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 jetty-plus diff --git a/jetty-proxy/pom.xml b/jetty-proxy/pom.xml index 077997955bf..141695f3e31 100644 --- a/jetty-proxy/pom.xml +++ b/jetty-proxy/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 jetty-proxy diff --git a/jetty-quickstart/pom.xml b/jetty-quickstart/pom.xml index 268afb9ce67..4976ae67621 100644 --- a/jetty-quickstart/pom.xml +++ b/jetty-quickstart/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 org.eclipse.jetty diff --git a/jetty-rewrite/pom.xml b/jetty-rewrite/pom.xml index b68e61902ae..86e37840c34 100644 --- a/jetty-rewrite/pom.xml +++ b/jetty-rewrite/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 jetty-rewrite diff --git a/jetty-runner/pom.xml b/jetty-runner/pom.xml index 9173df7ae54..fcb3fbc8f74 100644 --- a/jetty-runner/pom.xml +++ b/jetty-runner/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 jetty-runner diff --git a/jetty-security/pom.xml b/jetty-security/pom.xml index efd2044b72f..22787f92db4 100644 --- a/jetty-security/pom.xml +++ b/jetty-security/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 jetty-security diff --git a/jetty-server/pom.xml b/jetty-server/pom.xml index a1fc6c034a4..aa4ca893c3c 100644 --- a/jetty-server/pom.xml +++ b/jetty-server/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 jetty-server diff --git a/jetty-servlet/pom.xml b/jetty-servlet/pom.xml index cad0bd622bb..bd8a6b9f2e7 100644 --- a/jetty-servlet/pom.xml +++ b/jetty-servlet/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 jetty-servlet diff --git a/jetty-servlets/pom.xml b/jetty-servlets/pom.xml index e56019a210e..229ab3f3ebc 100644 --- a/jetty-servlets/pom.xml +++ b/jetty-servlets/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 jetty-servlets diff --git a/jetty-spring/pom.xml b/jetty-spring/pom.xml index fd74699c9c0..20edc676db6 100644 --- a/jetty-spring/pom.xml +++ b/jetty-spring/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 jetty-spring diff --git a/jetty-start/pom.xml b/jetty-start/pom.xml index e3063813d6f..d28c01cb7ea 100644 --- a/jetty-start/pom.xml +++ b/jetty-start/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 jetty-start diff --git a/jetty-util-ajax/pom.xml b/jetty-util-ajax/pom.xml index e22c7d8a4a7..63fa203dc41 100644 --- a/jetty-util-ajax/pom.xml +++ b/jetty-util-ajax/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 jetty-util-ajax diff --git a/jetty-util/pom.xml b/jetty-util/pom.xml index d4d23f222f1..9907c070d79 100644 --- a/jetty-util/pom.xml +++ b/jetty-util/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 jetty-util diff --git a/jetty-webapp/pom.xml b/jetty-webapp/pom.xml index 858f6630a0d..55d25db8fa0 100644 --- a/jetty-webapp/pom.xml +++ b/jetty-webapp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-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 78eb40d45c9..ea1ce40eb95 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.3.18.v20170406 + 9.3.19-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 e8e24fc0351..41662215981 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.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/pom.xml b/jetty-websocket/pom.xml index f3ea388de8c..895af687c94 100644 --- a/jetty-websocket/pom.xml +++ b/jetty-websocket/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/websocket-api/pom.xml b/jetty-websocket/websocket-api/pom.xml index e31ebdf7bc0..12e4628f04f 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.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/websocket-client/pom.xml b/jetty-websocket/websocket-client/pom.xml index fd034de47d7..cf62503d3fb 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.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/websocket-common/pom.xml b/jetty-websocket/websocket-common/pom.xml index ff9ef7bdfc7..131aec6c836 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.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/websocket-server/pom.xml b/jetty-websocket/websocket-server/pom.xml index 200247adcd5..2b288387bfc 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.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/websocket-servlet/pom.xml b/jetty-websocket/websocket-servlet/pom.xml index d3e82a78670..a4a6757ea03 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.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 diff --git a/jetty-xml/pom.xml b/jetty-xml/pom.xml index bad4bda67c8..a6386bb5aa7 100644 --- a/jetty-xml/pom.xml +++ b/jetty-xml/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 jetty-xml diff --git a/pom.xml b/pom.xml index fd23c238d69..7c59178dfa9 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ 4.0.0 jetty-project - 9.3.18.v20170406 + 9.3.19-SNAPSHOT Jetty :: Project http://www.eclipse.org/jetty pom diff --git a/tests/pom.xml b/tests/pom.xml index 72d5f70ebf2..9c0510a34f9 100644 --- a/tests/pom.xml +++ b/tests/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty jetty-project - 9.3.18.v20170406 + 9.3.19-SNAPSHOT ../pom.xml org.eclipse.jetty.tests diff --git a/tests/test-continuation/pom.xml b/tests/test-continuation/pom.xml index 9ef4bd269bb..47bc6e762ae 100644 --- a/tests/test-continuation/pom.xml +++ b/tests/test-continuation/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests tests-parent - 9.3.18.v20170406 + 9.3.19-SNAPSHOT ../pom.xml 4.0.0 diff --git a/tests/test-http-client-transport/pom.xml b/tests/test-http-client-transport/pom.xml index 333591a3c6e..358b7140c44 100644 --- a/tests/test-http-client-transport/pom.xml +++ b/tests/test-http-client-transport/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests tests-parent - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 diff --git a/tests/test-integration/pom.xml b/tests/test-integration/pom.xml index d16d421f9a8..f4eac23623a 100644 --- a/tests/test-integration/pom.xml +++ b/tests/test-integration/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests tests-parent - 9.3.18.v20170406 + 9.3.19-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 abfc06eb4b4..94fbf3b8405 100644 --- a/tests/test-jmx/jmx-webapp-it/pom.xml +++ b/tests/test-jmx/jmx-webapp-it/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-jmx-parent - 9.3.18.v20170406 + 9.3.19-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 8e4cf85ae4e..c5cd9bf3214 100644 --- a/tests/test-jmx/jmx-webapp/pom.xml +++ b/tests/test-jmx/jmx-webapp/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-jmx-parent - 9.3.18.v20170406 + 9.3.19-SNAPSHOT jmx-webapp war diff --git a/tests/test-jmx/pom.xml b/tests/test-jmx/pom.xml index 0c2e9a841ca..a45d7aa9aa0 100644 --- a/tests/test-jmx/pom.xml +++ b/tests/test-jmx/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests tests-parent - 9.3.18.v20170406 + 9.3.19-SNAPSHOT 4.0.0 test-jmx-parent diff --git a/tests/test-loginservice/pom.xml b/tests/test-loginservice/pom.xml index fb9e0c26201..bf3a781e5ba 100644 --- a/tests/test-loginservice/pom.xml +++ b/tests/test-loginservice/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests tests-parent - 9.3.18.v20170406 + 9.3.19-SNAPSHOT test-loginservice Jetty Tests :: Login Service diff --git a/tests/test-quickstart/pom.xml b/tests/test-quickstart/pom.xml index d6703837690..cf29d76cefd 100644 --- a/tests/test-quickstart/pom.xml +++ b/tests/test-quickstart/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.tests tests-parent - 9.3.18.v20170406 + 9.3.19-SNAPSHOT ../pom.xml 4.0.0 diff --git a/tests/test-sessions/pom.xml b/tests/test-sessions/pom.xml index 87a8b7feba1..f474eeb6da2 100644 --- a/tests/test-sessions/pom.xml +++ b/tests/test-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests tests-parent - 9.3.18.v20170406 + 9.3.19-SNAPSHOT test-sessions-parent Jetty Tests :: Sessions :: Parent diff --git a/tests/test-sessions/test-gcloud-memcached-sessions/pom.xml b/tests/test-sessions/test-gcloud-memcached-sessions/pom.xml index 40976a9efe3..5ff02c092ef 100644 --- a/tests/test-sessions/test-gcloud-memcached-sessions/pom.xml +++ b/tests/test-sessions/test-gcloud-memcached-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.3.18.v20170406 + 9.3.19-SNAPSHOT test-gcloud-memcached-sessions Jetty Tests :: Sessions :: GCloud with Memcached diff --git a/tests/test-sessions/test-gcloud-sessions/pom.xml b/tests/test-sessions/test-gcloud-sessions/pom.xml index fec079e5538..50f9fa81442 100644 --- a/tests/test-sessions/test-gcloud-sessions/pom.xml +++ b/tests/test-sessions/test-gcloud-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.3.18.v20170406 + 9.3.19-SNAPSHOT test-gcloud-sessions Jetty Tests :: Sessions :: GCloud diff --git a/tests/test-sessions/test-hash-sessions/pom.xml b/tests/test-sessions/test-hash-sessions/pom.xml index fd8d320357a..6bf08a0a811 100644 --- a/tests/test-sessions/test-hash-sessions/pom.xml +++ b/tests/test-sessions/test-hash-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.3.18.v20170406 + 9.3.19-SNAPSHOT test-hash-sessions Jetty Tests :: Sessions :: Hash diff --git a/tests/test-sessions/test-infinispan-sessions/pom.xml b/tests/test-sessions/test-infinispan-sessions/pom.xml index ccd3d580fdc..6849a6794b4 100644 --- a/tests/test-sessions/test-infinispan-sessions/pom.xml +++ b/tests/test-sessions/test-infinispan-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.3.18.v20170406 + 9.3.19-SNAPSHOT test-infinispan-sessions Jetty Tests :: Sessions :: Infinispan diff --git a/tests/test-sessions/test-jdbc-sessions/pom.xml b/tests/test-sessions/test-jdbc-sessions/pom.xml index ca7a1cc4ae3..fff9d816011 100644 --- a/tests/test-sessions/test-jdbc-sessions/pom.xml +++ b/tests/test-sessions/test-jdbc-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.3.18.v20170406 + 9.3.19-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 3302344501f..13417deb8e7 100644 --- a/tests/test-sessions/test-mongodb-sessions/pom.xml +++ b/tests/test-sessions/test-mongodb-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.3.18.v20170406 + 9.3.19-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 d9369b14aab..1bd1834e497 100644 --- a/tests/test-sessions/test-sessions-common/pom.xml +++ b/tests/test-sessions/test-sessions-common/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.3.18.v20170406 + 9.3.19-SNAPSHOT test-sessions-common Jetty Tests :: Sessions :: Common diff --git a/tests/test-webapps/pom.xml b/tests/test-webapps/pom.xml index c6845f5f174..9a7e163dac9 100644 --- a/tests/test-webapps/pom.xml +++ b/tests/test-webapps/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests tests-parent - 9.3.18.v20170406 + 9.3.19-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 b3fda55aac6..ac45de03454 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.3.18.v20170406 + 9.3.19-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 ac9e7056fe9..fd731f762f1 100644 --- a/tests/test-webapps/test-jetty-webapp/pom.xml +++ b/tests/test-webapps/test-jetty-webapp/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.3.18.v20170406 + 9.3.19-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 1f78c15503d..a2d964d5a26 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.3.18.v20170406 + 9.3.19-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 7e879d58936..128bbc7ce76 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.3.18.v20170406 + 9.3.19-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 278fe5bf778..5a55c6deef0 100644 --- a/tests/test-webapps/test-proxy-webapp/pom.xml +++ b/tests/test-webapps/test-proxy-webapp/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.3.18.v20170406 + 9.3.19-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 b170611cef9..9db79b1c7b1 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.3.18.v20170406 + 9.3.19-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 6d2b35ab628..08280cef46f 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.3.18.v20170406 + 9.3.19-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 e4b761eece5..f989bb2a9d7 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.3.18.v20170406 + 9.3.19-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 d1093504f98..1fbe820faa6 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.3.18.v20170406 + 9.3.19-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 f424d2270fa..3eef3b80897 100644 --- a/tests/test-webapps/test-webapp-rfc2616/pom.xml +++ b/tests/test-webapps/test-webapp-rfc2616/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.3.18.v20170406 + 9.3.19-SNAPSHOT test-webapp-rfc2616 Jetty Tests :: WebApp :: RFC2616 From eeb1ad5b7f65f955b46e76a46d6d90c10398e6d5 Mon Sep 17 00:00:00 2001 From: WalkerWatch Date: Thu, 6 Apr 2017 13:40:40 -0400 Subject: [PATCH 10/80] Updated documentation. Resolves #1447 Signed-off-by: WalkerWatch --- .../asciidoc/administration/extras/statistics-handler.adoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jetty-documentation/src/main/asciidoc/administration/extras/statistics-handler.adoc b/jetty-documentation/src/main/asciidoc/administration/extras/statistics-handler.adoc index 19615409c09..5a45f912411 100644 --- a/jetty-documentation/src/main/asciidoc/administration/extras/statistics-handler.adoc +++ b/jetty-documentation/src/main/asciidoc/administration/extras/statistics-handler.adoc @@ -34,9 +34,9 @@ Jetty currently has two levels of request statistic collection: * Subclasses of `AbstractConnector` class optionally can collect statistics about connections as well as number of requests. * The `StatisticsHandler` class may be used to collect request statistics. -In addition to these, subclasses of the `AbstractSessionHandler` class optionally can collect session statistics. +In addition to these, subclasses of the `SessionHandler` and `DefaultSessionCache` classes optionally can collect session statistics. -`AbstractConnector` and `AbstractSessionHandler` statistics are turned off by default and must either be configured manually for each instance or turned on via JMX interface. +`AbstractConnector`, `SessionHandler` and `DefaultSessionCache` statistics are turned off by default and must either be configured manually for each instance or turned on via JMX interface. The `StatisticsHandler` is not included in default Jetty configuration, and needs to be configured manually. _____ From c4f2be4cfa066bf50ee426cf522288009e214514 Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Tue, 11 Apr 2017 10:09:33 +1000 Subject: [PATCH 11/80] Issue #1454 convenience methods --- .../handler/ContextHandlerCollection.java | 6 +++ .../server/handler/HandlerCollection.java | 24 +++++++++-- .../jetty/server/handler/HandlerList.java | 9 ++++ .../eclipse/jetty/servlet/DefaultServlet.java | 4 +- .../eclipse/jetty/webapp/WebAppContext.java | 43 ++++++++++++++++++- 5 files changed, 80 insertions(+), 6 deletions(-) diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandlerCollection.java b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandlerCollection.java index 9362f4f96f2..eb02c513c81 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandlerCollection.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandlerCollection.java @@ -68,6 +68,12 @@ public class ContextHandlerCollection extends HandlerCollection { super(true); } + + /* ------------------------------------------------------------ */ + public ContextHandlerCollection(ContextHandler... contexts) + { + super(true,contexts); + } /* ------------------------------------------------------------ */ diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/HandlerCollection.java b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/HandlerCollection.java index 7ea4f964768..24ccc83a747 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/HandlerCollection.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/HandlerCollection.java @@ -52,15 +52,23 @@ public class HandlerCollection extends AbstractHandlerContainer /* ------------------------------------------------------------ */ public HandlerCollection() { - _mutableWhenRunning=false; + this(false); } /* ------------------------------------------------------------ */ - public HandlerCollection(boolean mutableWhenRunning) + public HandlerCollection(Handler... handlers) + { + this(false,handlers); + } + + /* ------------------------------------------------------------ */ + public HandlerCollection(boolean mutableWhenRunning, Handler... handlers) { _mutableWhenRunning=mutableWhenRunning; + if (handlers.length>0) + setHandlers(handlers); } - + /* ------------------------------------------------------------ */ /** * @return Returns the handlers. @@ -153,6 +161,16 @@ public class HandlerCollection extends AbstractHandlerContainer setHandlers(ArrayUtil.addToArray(getHandlers(), handler, Handler.class)); } + /* ------------------------------------------------------------ */ + /* Prepend a handler. + * This implementation adds the passed handler to the start of the existing collection of handlers. + * @see org.eclipse.jetty.server.server.HandlerContainer#addHandler(org.eclipse.jetty.server.server.Handler) + */ + public void prependHandler(Handler handler) + { + setHandlers(ArrayUtil.prependToArray(handler, getHandlers(), Handler.class)); + } + /* ------------------------------------------------------------ */ public void removeHandler(Handler handler) { diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/HandlerList.java b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/HandlerList.java index 505ec7bd200..12b9a8581ed 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/HandlerList.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/HandlerList.java @@ -35,6 +35,15 @@ import org.eclipse.jetty.server.Request; */ public class HandlerList extends HandlerCollection { + public HandlerList() + { + } + + public HandlerList(Handler... handlers) + { + super(handlers); + } + /* ------------------------------------------------------------ */ /** * @see Handler#handle(String, Request, HttpServletRequest, HttpServletResponse) diff --git a/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/DefaultServlet.java b/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/DefaultServlet.java index 19ee58ea154..34a8124751b 100644 --- a/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/DefaultServlet.java +++ b/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/DefaultServlet.java @@ -129,6 +129,8 @@ import org.eclipse.jetty.util.resource.ResourceFactory; */ public class DefaultServlet extends HttpServlet implements ResourceFactory, WelcomeFactory { + public static final String CONTEXT_INIT = "org.eclipse.jetty.servlet.Default."; + private static final Logger LOG = Log.getLogger(DefaultServlet.class); private static final long serialVersionUID = 4930458713846881193L; @@ -371,7 +373,7 @@ public class DefaultServlet extends HttpServlet implements ResourceFactory, Welc @Override public String getInitParameter(String name) { - String value=getServletContext().getInitParameter("org.eclipse.jetty.servlet.Default."+name); + String value=getServletContext().getInitParameter(CONTEXT_INIT+name); if (value==null) value=super.getInitParameter(name); return value; diff --git a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppContext.java b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppContext.java index f8deb94bcbb..81932e43280 100644 --- a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppContext.java +++ b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppContext.java @@ -222,6 +222,17 @@ public class WebAppContext extends ServletContextHandler implements WebAppClassL setWar(webApp); } + /* ------------------------------------------------------------ */ + /** + * @param contextPath The context path + * @param webApp The URL or filename of the webapp directory or war file. + */ + public WebAppContext(Resource webApp, String contextPath) + { + this(null,contextPath,null,null,null,new ErrorPageErrorHandler(),SESSIONS|SECURITY); + setWarResource(webApp); + } + /* ------------------------------------------------------------ */ /** * @param parent The parent HandlerContainer. @@ -234,6 +245,18 @@ public class WebAppContext extends ServletContextHandler implements WebAppClassL setWar(webApp); } + /* ------------------------------------------------------------ */ + /** + * @param parent The parent HandlerContainer. + * @param contextPath The context path + * @param webApp The webapp directory or war file. + */ + public WebAppContext(HandlerContainer parent, Resource webApp, String contextPath) + { + this(parent,contextPath,null,null,null,new ErrorPageErrorHandler(),SESSIONS|SECURITY); + setWarResource(webApp); + } + /* ------------------------------------------------------------ */ /** @@ -885,7 +908,9 @@ public class WebAppContext extends ServletContextHandler implements WebAppClassL /* ------------------------------------------------------------ */ /** - * @return Returns the war as a file or URL string (Resource) + * @return Returns the war as a file or URL string (Resource). + * The war may be different to the @link {@link #getResourceBase()} + * if the war has been expanded and/or copied. */ @ManagedAttribute(value="war file location", readonly=true) public String getWar() @@ -1334,13 +1359,27 @@ public class WebAppContext extends ServletContextHandler implements WebAppClassL /* ------------------------------------------------------------ */ /** - * @param war The war to set as a file name or URL + * Set the war of the webapp. From this value a {@link #setResourceBase(String)} + * value is computed by {@link WebInfConfiguration}, which may be changed from + * the war URI by unpacking and/or copying. + * @param war The war to set as a file name or URL. */ public void setWar(String war) { _war = war; } + /* ------------------------------------------------------------ */ + /** + * Set the war of the webapp as a {@link Resource}. + * @see #setWar(String) + * @param war The war to set as a Resource. + */ + public void setWarResource(Resource war) + { + setWar(war==null?null:war.toString()); + } + /* ------------------------------------------------------------ */ /** * @return Comma or semicolon separated path of filenames or URLs From daafc8fed1ec86fb39814267bf628f36a0dcc3b6 Mon Sep 17 00:00:00 2001 From: Jan Bartel Date: Wed, 12 Apr 2017 11:08:07 +1000 Subject: [PATCH 12/80] Issue #877 Add test case --- jetty-quickstart/pom.xml | 5 + .../jetty/quickstart/FooContextListener.java | 57 +++++++++++ .../eclipse/jetty/quickstart/FooServlet.java | 42 ++++++++ .../jetty/quickstart/TestQuickStart.java | 99 +++++++++++++++++++ 4 files changed, 203 insertions(+) create mode 100644 jetty-quickstart/src/test/java/org/eclipse/jetty/quickstart/FooContextListener.java create mode 100644 jetty-quickstart/src/test/java/org/eclipse/jetty/quickstart/FooServlet.java create mode 100644 jetty-quickstart/src/test/java/org/eclipse/jetty/quickstart/TestQuickStart.java diff --git a/jetty-quickstart/pom.xml b/jetty-quickstart/pom.xml index 4976ae67621..079a20d11dd 100644 --- a/jetty-quickstart/pom.xml +++ b/jetty-quickstart/pom.xml @@ -82,6 +82,11 @@ ${project.version} test + + org.eclipse.jetty.toolchain + jetty-test-helper + test + diff --git a/jetty-quickstart/src/test/java/org/eclipse/jetty/quickstart/FooContextListener.java b/jetty-quickstart/src/test/java/org/eclipse/jetty/quickstart/FooContextListener.java new file mode 100644 index 00000000000..f6bf7efeea8 --- /dev/null +++ b/jetty-quickstart/src/test/java/org/eclipse/jetty/quickstart/FooContextListener.java @@ -0,0 +1,57 @@ +// +// ======================================================================== +// Copyright (c) 1995-2017 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.quickstart; + +import static org.junit.Assert.assertTrue; + +import java.util.Collection; +import java.util.Set; + +import javax.servlet.ServletContextEvent; +import javax.servlet.ServletContextListener; +import javax.servlet.ServletRegistration; + +/** + * FooContextListener + * + * + */ +public class FooContextListener implements ServletContextListener +{ + @Override + public void contextInitialized(ServletContextEvent sce) + { + ServletRegistration defaultRego = sce.getServletContext().getServletRegistration("default"); + Collection mappings = defaultRego.getMappings(); + assertTrue(mappings.contains("/")); + + Set otherMappings = sce.getServletContext().getServletRegistration("foo").addMapping("/"); + assertTrue(otherMappings.isEmpty()); + Collection fooMappings = sce.getServletContext().getServletRegistration("foo").getMappings(); + assertTrue(fooMappings.contains("/")); + } + + @Override + public void contextDestroyed(ServletContextEvent sce) + { + // TODO Auto-generated method stub + + } +} \ No newline at end of file diff --git a/jetty-quickstart/src/test/java/org/eclipse/jetty/quickstart/FooServlet.java b/jetty-quickstart/src/test/java/org/eclipse/jetty/quickstart/FooServlet.java new file mode 100644 index 00000000000..8f84548d871 --- /dev/null +++ b/jetty-quickstart/src/test/java/org/eclipse/jetty/quickstart/FooServlet.java @@ -0,0 +1,42 @@ +// +// ======================================================================== +// Copyright (c) 1995-2017 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.quickstart; + +import java.io.IOException; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +public class FooServlet extends HttpServlet +{ + + /** + * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) + */ + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException + { + resp.setContentType("text/html"); + resp.getWriter().println("FOO"); + } + +} \ No newline at end of file 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 new file mode 100644 index 00000000000..e3fd862428c --- /dev/null +++ b/jetty-quickstart/src/test/java/org/eclipse/jetty/quickstart/TestQuickStart.java @@ -0,0 +1,99 @@ +// +// ======================================================================== +// Copyright (c) 1995-2017 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.quickstart; + +import static org.junit.Assert.*; + +import java.io.File; +import java.nio.file.Path; + +import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.servlet.ServletHolder; +import org.eclipse.jetty.toolchain.test.FS; +import org.eclipse.jetty.toolchain.test.MavenTestingUtils; +import org.eclipse.jetty.util.resource.Resource; +import org.eclipse.jetty.webapp.WebAppContext; +import org.junit.Before; +import org.junit.Test; + +/** + * TestQuickStart + * + * + */ +public class TestQuickStart +{ + File testDir; + File webInf; + + + @Before + public void setUp() + { + testDir = MavenTestingUtils.getTargetTestingDir("foo"); + FS.ensureEmpty(testDir); + webInf = new File(testDir, "WEB-INF"); + FS.ensureDirExists(webInf); + } + + + + @Test + public void testProgrammaticOverrideOfDefaultServletMapping() throws Exception + { + + File quickstartXml = new File(webInf, "quickstart-web.xml"); + assertFalse(quickstartXml.exists()); + + Server server = new Server(); + + //generate a quickstart-web.xml + QuickStartWebApp quickstart = new QuickStartWebApp(); + quickstart.setResourceBase(testDir.getAbsolutePath()); + quickstart.setPreconfigure(true); + quickstart.setGenerateOrigin(true); + ServletHolder fooHolder = new ServletHolder(); + fooHolder.setServlet(new FooServlet()); + fooHolder.setName("foo"); + quickstart.getServletHandler().addServlet(fooHolder); + quickstart.addEventListener(new FooContextListener()); + server.setHandler(quickstart); + server.start(); + server.stop(); + + assertTrue(quickstartXml.exists()); + + //now run the webapp again purely from the generated quickstart + QuickStartWebApp webapp = new QuickStartWebApp(); + webapp.setResourceBase(testDir.getAbsolutePath()); + webapp.setPreconfigure(false); + webapp.setClassLoader(Thread.currentThread().getContextClassLoader()); //only necessary for junit testing + server.setHandler(webapp); + + server.start(); + + //verify that FooServlet is now mapped to / and not the DefaultServlet + ServletHolder sh = webapp.getServletHandler().getHolderEntry("/").getValue(); + assertNotNull(sh); + assertEquals("foo", sh.getName()); + server.stop(); + } + +} From 23a9c6c1bef7e69697bb694c8f28e8004a566fbe Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Wed, 12 Apr 2017 14:54:18 +1000 Subject: [PATCH 13/80] Issue #1463 --- .../io/ssl/SslClientConnectionFactory.java | 1 + .../eclipse/jetty/io/ssl/SslConnection.java | 122 ++++++++++++------ .../io/SelectChannelEndPointSslTest.java | 1 + .../eclipse/jetty/io/SslConnectionTest.java | 112 +++++++++++++++- .../src/main/config/etc/jetty-ssl-context.xml | 2 + jetty-server/src/main/config/modules/ssl.mod | 4 + .../jetty/server/SslConnectionFactory.java | 1 + .../jetty/util/ssl/SslContextFactory.java | 20 +++ .../io/WebSocketClientSelectorManager.java | 1 + 9 files changed, 224 insertions(+), 40 deletions(-) diff --git a/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/SslClientConnectionFactory.java b/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/SslClientConnectionFactory.java index 648ec687a26..60662741ad8 100644 --- a/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/SslClientConnectionFactory.java +++ b/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/SslClientConnectionFactory.java @@ -83,6 +83,7 @@ public class SslClientConnectionFactory implements ClientConnectionFactory { SslConnection sslConnection = (SslConnection)connection; sslConnection.setRenegotiationAllowed(sslContextFactory.isRenegotiationAllowed()); + sslConnection.setRenegotiationLimit(sslContextFactory.getRenegotiationLimit()); ContainerLifeCycle connector = (ContainerLifeCycle)context.get(ClientConnectionFactory.CONNECTOR_CONTEXT_KEY); connector.getBeans(SslHandshakeListener.class).forEach(sslConnection::addHandshakeListener); } diff --git a/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/SslConnection.java b/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/SslConnection.java index 264785be7a1..632265c8172 100644 --- a/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/SslConnection.java +++ b/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/SslConnection.java @@ -90,6 +90,7 @@ public class SslConnection extends AbstractConnection private final boolean _encryptedDirectBuffers = true; private final boolean _decryptedDirectBuffers = false; private boolean _renegotiationAllowed; + private int _renegotiationLimit = -1; private boolean _closedOutbound; private final Runnable _runCompletWrite = new Runnable() { @@ -170,7 +171,26 @@ public class SslConnection extends AbstractConnection public void setRenegotiationAllowed(boolean renegotiationAllowed) { - this._renegotiationAllowed = renegotiationAllowed; + _renegotiationAllowed = renegotiationAllowed; + } + + /** + * @return The number of renegotions allowed for this connection. When the limit + * is 0 renegotiation will be denied. If the limit is <0 then no limit is applied. + */ + public int getRenegotiationLimit() + { + return _renegotiationLimit; + } + + /** + * @param renegotiationLimit The number of renegotions allowed for this connection. + * When the limit is 0 renegotiation will be denied. If the limit is <0 then no limit is applied. + * Default -1. + */ + public void setRenegotiationLimit(int renegotiationLimit) + { + _renegotiationLimit = renegotiationLimit; } @Override @@ -323,7 +343,7 @@ public class SslConnection extends AbstractConnection synchronized (DecryptedEndPoint.this) { if (LOG.isDebugEnabled()) - LOG.debug("{} write failed", SslConnection.this, x); + LOG.debug("write failed {}", SslConnection.this, x); BufferUtil.clear(_encryptedOutput); releaseEncryptedOutputBuffer(); @@ -567,8 +587,8 @@ public class SslConnection extends AbstractConnection } if (LOG.isDebugEnabled()) { - LOG.debug("{} net={} unwrap {}", SslConnection.this, net_filled, unwrapResult.toString().replace('\n',' ')); - LOG.debug("{} filled {}",SslConnection.this,BufferUtil.toHexSummary(buffer)); + LOG.debug("net={} unwrap {} {}", net_filled, unwrapResult.toString().replace('\n',' '), SslConnection.this); + LOG.debug("filled {} {}",BufferUtil.toHexSummary(buffer), SslConnection.this); } HandshakeStatus handshakeStatus = _sslEngine.getHandshakeStatus(); @@ -626,25 +646,13 @@ public class SslConnection extends AbstractConnection case BUFFER_UNDERFLOW: case OK: { - if (unwrapHandshakeStatus == HandshakeStatus.FINISHED && !_handshaken) - { - _handshaken = true; - if (LOG.isDebugEnabled()) - LOG.debug("{} {} handshake succeeded {}/{}", SslConnection.this, - _sslEngine.getUseClientMode() ? "client" : "resumed server", - _sslEngine.getSession().getProtocol(),_sslEngine.getSession().getCipherSuite()); - notifyHandshakeSucceeded(_sslEngine); - } + if (unwrapHandshakeStatus == HandshakeStatus.FINISHED) + handshakeFinished(); - // Check whether renegotiation is allowed - if (_handshaken && handshakeStatus != HandshakeStatus.NOT_HANDSHAKING && !isRenegotiationAllowed()) - { - if (LOG.isDebugEnabled()) - LOG.debug("{} renegotiation denied", SslConnection.this); - closeInbound(); + // Check whether re-negotiation is allowed + if (!allowRenegotiate(handshakeStatus)) return -1; - } - + // If bytes were produced, don't bother with the handshake status; // pass the decrypted data to the application, which will perform // another call to fill() or flush(). @@ -762,6 +770,51 @@ public class SslConnection extends AbstractConnection } } + private void handshakeFinished() + { + if (_handshaken) + { + if (LOG.isDebugEnabled()) + LOG.debug("Renegotiated {}", SslConnection.this); + if (_renegotiationLimit>0) + _renegotiationLimit--; + } + else + { + _handshaken = true; + if (LOG.isDebugEnabled()) + LOG.debug("{} handshake succeeded {}/{} {}", + _sslEngine.getUseClientMode() ? "client" : "resumed server", + _sslEngine.getSession().getProtocol(),_sslEngine.getSession().getCipherSuite(), + SslConnection.this); + notifyHandshakeSucceeded(_sslEngine); + } + } + + private boolean allowRenegotiate(HandshakeStatus handshakeStatus) + { + if (!_handshaken || handshakeStatus == HandshakeStatus.NOT_HANDSHAKING) + return true; + + if (!isRenegotiationAllowed()) + { + if (LOG.isDebugEnabled()) + LOG.debug("Renegotiation denied {}", SslConnection.this); + closeInbound(); + return false; + } + + if (_renegotiationLimit==0) + { + if (LOG.isDebugEnabled()) + LOG.debug("Renegotiation limit exceeded {}", SslConnection.this); + closeInbound(); + return false; + } + + return true; + } + private void closeInbound() { try @@ -787,7 +840,7 @@ public class SslConnection extends AbstractConnection if (LOG.isDebugEnabled()) { for (ByteBuffer b : appOuts) - LOG.debug("{} flush {}", SslConnection.this, BufferUtil.toHexSummary(b)); + LOG.debug("flush {} {}", BufferUtil.toHexSummary(b), SslConnection.this); } try @@ -822,7 +875,7 @@ public class SslConnection extends AbstractConnection BufferUtil.flipToFlush(_encryptedOutput, pos); } if (LOG.isDebugEnabled()) - LOG.debug("{} wrap {}", SslConnection.this, wrapResult.toString().replace('\n',' ')); + LOG.debug("wrap {} {}", wrapResult.toString().replace('\n',' '), SslConnection.this); Status wrapResultStatus = wrapResult.getStatus(); @@ -863,29 +916,20 @@ public class SslConnection extends AbstractConnection default: { if (LOG.isDebugEnabled()) - LOG.debug("{} wrap {} {}", SslConnection.this, wrapResultStatus, BufferUtil.toHexSummary(_encryptedOutput)); + LOG.debug("wrap {} {} {}", wrapResultStatus, BufferUtil.toHexSummary(_encryptedOutput), SslConnection.this); - if (wrapResult.getHandshakeStatus() == HandshakeStatus.FINISHED && !_handshaken) - { - _handshaken = true; - if (LOG.isDebugEnabled()) - LOG.debug("{} {} handshake succeeded {}/{}", SslConnection.this, - _sslEngine.getUseClientMode() ? "resumed client" : "server", - _sslEngine.getSession().getProtocol(),_sslEngine.getSession().getCipherSuite()); - notifyHandshakeSucceeded(_sslEngine); - } + if (wrapResult.getHandshakeStatus() == HandshakeStatus.FINISHED) + handshakeFinished(); HandshakeStatus handshakeStatus = _sslEngine.getHandshakeStatus(); - // Check whether renegotiation is allowed - if (_handshaken && handshakeStatus != HandshakeStatus.NOT_HANDSHAKING && !isRenegotiationAllowed()) + // Check whether re-negotiation is allowed + if (!allowRenegotiate(handshakeStatus)) { - if (LOG.isDebugEnabled()) - LOG.debug("{} renegotiation denied", SslConnection.this); getEndPoint().shutdownOutput(); return allConsumed; } - + // if we have net bytes, let's try to flush them if (BufferUtil.hasContent(_encryptedOutput)) if (!getEndPoint().flush(_encryptedOutput)) @@ -975,7 +1019,7 @@ public class SslConnection extends AbstractConnection boolean ishut = isInputShutdown(); boolean oshut = isOutputShutdown(); if (LOG.isDebugEnabled()) - LOG.debug("{} shutdownOutput: oshut={}, ishut={}", SslConnection.this, oshut, ishut); + LOG.debug("shutdownOutput: oshut={}, ishut={} {}", oshut, ishut, SslConnection.this); if (oshut) return; diff --git a/jetty-io/src/test/java/org/eclipse/jetty/io/SelectChannelEndPointSslTest.java b/jetty-io/src/test/java/org/eclipse/jetty/io/SelectChannelEndPointSslTest.java index 0ad8cec2fa4..acc9b944b74 100644 --- a/jetty-io/src/test/java/org/eclipse/jetty/io/SelectChannelEndPointSslTest.java +++ b/jetty-io/src/test/java/org/eclipse/jetty/io/SelectChannelEndPointSslTest.java @@ -77,6 +77,7 @@ public class SelectChannelEndPointSslTest extends SelectChannelEndPointTest engine.setUseClientMode(false); SslConnection sslConnection = new SslConnection(__byteBufferPool, _threadPool, endpoint, engine); sslConnection.setRenegotiationAllowed(__sslCtxFactory.isRenegotiationAllowed()); + sslConnection.setRenegotiationLimit(__sslCtxFactory.getRenegotiationLimit()); Connection appConnection = super.newConnection(channel,sslConnection.getDecryptedEndPoint()); sslConnection.getDecryptedEndPoint().setConnection(appConnection); return sslConnection; diff --git a/jetty-io/src/test/java/org/eclipse/jetty/io/SslConnectionTest.java b/jetty-io/src/test/java/org/eclipse/jetty/io/SslConnectionTest.java index 98768f441bc..5bcb14db76c 100644 --- a/jetty-io/src/test/java/org/eclipse/jetty/io/SslConnectionTest.java +++ b/jetty-io/src/test/java/org/eclipse/jetty/io/SslConnectionTest.java @@ -33,6 +33,7 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; import javax.net.ssl.SSLEngine; +import javax.net.ssl.SSLException; import javax.net.ssl.SSLSocket; import org.eclipse.jetty.io.ssl.SslConnection; @@ -80,6 +81,7 @@ public class SslConnectionTest engine.setUseClientMode(false); SslConnection sslConnection = new SslConnection(__byteBufferPool, getExecutor(), endpoint, engine); sslConnection.setRenegotiationAllowed(__sslCtxFactory.isRenegotiationAllowed()); + sslConnection.setRenegotiationLimit(__sslCtxFactory.getRenegotiationLimit()); Connection appConnection = new TestConnection(sslConnection.getDecryptedEndPoint()); sslConnection.getDecryptedEndPoint().setConnection(appConnection); return sslConnection; @@ -149,6 +151,8 @@ public class SslConnectionTest _threadPool.start(); _scheduler.start(); _manager.start(); + __sslCtxFactory.setRenegotiationAllowed(true); + __sslCtxFactory.setRenegotiationLimit(-1); } @@ -248,7 +252,7 @@ public class SslConnectionTest } } } - protected Socket newClient() throws IOException + protected SSLSocket newClient() throws IOException { SSLSocket socket = __sslCtxFactory.newSslSocket(); socket.connect(_connector.socket().getLocalSocketAddress()); @@ -280,6 +284,112 @@ public class SslConnectionTest client.close(); } + @Test + public void testRenegotiate() throws Exception + { + SSLSocket client = newClient(); + client.setSoTimeout(60000); + + SocketChannel server = _connector.accept(); + server.configureBlocking(false); + _manager.accept(server); + + client.getOutputStream().write("Hello".getBytes(StandardCharsets.UTF_8)); + byte[] buffer = new byte[1024]; + int len=client.getInputStream().read(buffer); + Assert.assertEquals(5, len); + Assert.assertEquals("Hello",new String(buffer,0,len,StandardCharsets.UTF_8)); + + client.startHandshake(); + + client.getOutputStream().write("World".getBytes(StandardCharsets.UTF_8)); + len=client.getInputStream().read(buffer); + Assert.assertEquals(5, len); + Assert.assertEquals("World",new String(buffer,0,len,StandardCharsets.UTF_8)); + + client.close(); + } + + @Test + public void testRenegotiateNotAllowed() throws Exception + { + __sslCtxFactory.setRenegotiationAllowed(false); + + SSLSocket client = newClient(); + client.setSoTimeout(60000); + + SocketChannel server = _connector.accept(); + server.configureBlocking(false); + _manager.accept(server); + + client.getOutputStream().write("Hello".getBytes(StandardCharsets.UTF_8)); + byte[] buffer = new byte[1024]; + int len=client.getInputStream().read(buffer); + Assert.assertEquals(5, len); + Assert.assertEquals("Hello",new String(buffer,0,len,StandardCharsets.UTF_8)); + + client.startHandshake(); + + client.getOutputStream().write("World".getBytes(StandardCharsets.UTF_8)); + try + { + client.getInputStream().read(buffer); + Assert.fail(); + } + catch(SSLException e) + { + // expected + } + } + + @Test + public void testRenegotiateLimit() throws Exception + { + __sslCtxFactory.setRenegotiationAllowed(true); + __sslCtxFactory.setRenegotiationLimit(2); + + SSLSocket client = newClient(); + client.setSoTimeout(60000); + + SocketChannel server = _connector.accept(); + server.configureBlocking(false); + _manager.accept(server); + + client.getOutputStream().write("Good".getBytes(StandardCharsets.UTF_8)); + byte[] buffer = new byte[1024]; + int len=client.getInputStream().read(buffer); + Assert.assertEquals(4, len); + Assert.assertEquals("Good",new String(buffer,0,len,StandardCharsets.UTF_8)); + + client.startHandshake(); + + client.getOutputStream().write("Bye".getBytes(StandardCharsets.UTF_8)); + len=client.getInputStream().read(buffer); + Assert.assertEquals(3, len); + Assert.assertEquals("Bye",new String(buffer,0,len,StandardCharsets.UTF_8)); + + client.startHandshake(); + + client.getOutputStream().write("Cruel".getBytes(StandardCharsets.UTF_8)); + len=client.getInputStream().read(buffer); + Assert.assertEquals(5, len); + Assert.assertEquals("Cruel",new String(buffer,0,len,StandardCharsets.UTF_8)); + + client.startHandshake(); + + client.getOutputStream().write("World".getBytes(StandardCharsets.UTF_8)); + try + { + client.getInputStream().read(buffer); + Assert.fail(); + } + catch(SSLException e) + { + // expected + } + } + + @Test public void testWriteOnConnect() throws Exception diff --git a/jetty-server/src/main/config/etc/jetty-ssl-context.xml b/jetty-server/src/main/config/etc/jetty-ssl-context.xml index 1b266d1c744..3e84a9e0e0c 100644 --- a/jetty-server/src/main/config/etc/jetty-ssl-context.xml +++ b/jetty-server/src/main/config/etc/jetty-ssl-context.xml @@ -26,4 +26,6 @@ + + diff --git a/jetty-server/src/main/config/modules/ssl.mod b/jetty-server/src/main/config/modules/ssl.mod index 75263c6c994..7638d2594cd 100644 --- a/jetty-server/src/main/config/modules/ssl.mod +++ b/jetty-server/src/main/config/modules/ssl.mod @@ -95,3 +95,7 @@ https://raw.githubusercontent.com/eclipse/jetty.project/master/jetty-server/src/ ## Set the timeout (in seconds) of the SslSession cache timeout # jetty.sslContext.sslSessionTimeout=-1 + +## Allow SSL renegotiation +# jetty.sslContext.renegotiationAllowed=true +# jetty.sslContext.renegotiationLimit=5 diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/SslConnectionFactory.java b/jetty-server/src/main/java/org/eclipse/jetty/server/SslConnectionFactory.java index 7a8f0c66a9e..cdb63609022 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/SslConnectionFactory.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/SslConnectionFactory.java @@ -87,6 +87,7 @@ public class SslConnectionFactory extends AbstractConnectionFactory SslConnection sslConnection = newSslConnection(connector, endPoint, engine); sslConnection.setRenegotiationAllowed(_sslContextFactory.isRenegotiationAllowed()); + sslConnection.setRenegotiationLimit(_sslContextFactory.getRenegotiationLimit()); configure(sslConnection, connector, endPoint); ConnectionFactory next = connector.getConnectionFactory(_nextProtocol); diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/ssl/SslContextFactory.java b/jetty-util/src/main/java/org/eclipse/jetty/util/ssl/SslContextFactory.java index 345482bdaf3..c2d7fa3961d 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/ssl/SslContextFactory.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/ssl/SslContextFactory.java @@ -166,6 +166,7 @@ public class SslContextFactory extends AbstractLifeCycle implements Dumpable private String _endpointIdentificationAlgorithm = null; private boolean _trustAll; private boolean _renegotiationAllowed = true; + private int _renegotiationLimit = 5; private Factory _factory; /** @@ -930,6 +931,25 @@ public class SslContextFactory extends AbstractLifeCycle implements Dumpable _renegotiationAllowed = renegotiationAllowed; } + /** + * @return The number of renegotions allowed for this connection. When the limit + * is 0 renegotiation will be denied. If the limit is <0 then no limit is applied. + */ + public int getRenegotiationLimit() + { + return _renegotiationLimit; + } + + /** + * @param renegotiationLimit The number of renegotions allowed for this connection. + * When the limit is 0 renegotiation will be denied. If the limit is <0 then no limit is applied. + * Default 5. + */ + public void setRenegotiationLimit(int renegotiationLimit) + { + _renegotiationLimit = renegotiationLimit; + } + /** * @return Path to file that contains Certificate Revocation List */ diff --git a/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/io/WebSocketClientSelectorManager.java b/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/io/WebSocketClientSelectorManager.java index d6235aa3c0a..33981d9d267 100644 --- a/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/io/WebSocketClientSelectorManager.java +++ b/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/io/WebSocketClientSelectorManager.java @@ -86,6 +86,7 @@ public class WebSocketClientSelectorManager extends SelectorManager SSLEngine engine = newSSLEngine(sslContextFactory,channel); SslConnection sslConnection = new SslConnection(bufferPool,getExecutor(),endPoint,engine); sslConnection.setRenegotiationAllowed(sslContextFactory.isRenegotiationAllowed()); + sslConnection.setRenegotiationLimit(sslContextFactory.getRenegotiationLimit()); EndPoint sslEndPoint = sslConnection.getDecryptedEndPoint(); Connection connection = newUpgradeConnection(channel,sslEndPoint,connectPromise); From 6a10b4272bc2f0bb222c886166008363c6c81948 Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Wed, 12 Apr 2017 16:55:31 +1000 Subject: [PATCH 14/80] Issue #1463 --- .../src/main/java/org/eclipse/jetty/io/ssl/SslConnection.java | 4 ++-- .../java/org/eclipse/jetty/util/ssl/SslContextFactory.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/SslConnection.java b/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/SslConnection.java index 632265c8172..b192a9d9b88 100644 --- a/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/SslConnection.java +++ b/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/SslConnection.java @@ -176,7 +176,7 @@ public class SslConnection extends AbstractConnection /** * @return The number of renegotions allowed for this connection. When the limit - * is 0 renegotiation will be denied. If the limit is <0 then no limit is applied. + * is 0 renegotiation will be denied. If the limit is less than 0 then no limit is applied. */ public int getRenegotiationLimit() { @@ -185,7 +185,7 @@ public class SslConnection extends AbstractConnection /** * @param renegotiationLimit The number of renegotions allowed for this connection. - * When the limit is 0 renegotiation will be denied. If the limit is <0 then no limit is applied. + * When the limit is 0 renegotiation will be denied. If the limit is less than 0 then no limit is applied. * Default -1. */ public void setRenegotiationLimit(int renegotiationLimit) diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/ssl/SslContextFactory.java b/jetty-util/src/main/java/org/eclipse/jetty/util/ssl/SslContextFactory.java index c2d7fa3961d..0731a944258 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/ssl/SslContextFactory.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/ssl/SslContextFactory.java @@ -933,7 +933,7 @@ public class SslContextFactory extends AbstractLifeCycle implements Dumpable /** * @return The number of renegotions allowed for this connection. When the limit - * is 0 renegotiation will be denied. If the limit is <0 then no limit is applied. + * is 0 renegotiation will be denied. If the limit is less than 0 then no limit is applied. */ public int getRenegotiationLimit() { @@ -942,7 +942,7 @@ public class SslContextFactory extends AbstractLifeCycle implements Dumpable /** * @param renegotiationLimit The number of renegotions allowed for this connection. - * When the limit is 0 renegotiation will be denied. If the limit is <0 then no limit is applied. + * When the limit is 0 renegotiation will be denied. If the limit is less than 0 then no limit is applied. * Default 5. */ public void setRenegotiationLimit(int renegotiationLimit) From 2dce90c98d7fbd0bcb3fc0e2423bec0f937244ed Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Wed, 12 Apr 2017 12:21:01 +0200 Subject: [PATCH 15/80] Improved handling of asynchronous failures. --- .../http2/server/HttpChannelOverHTTP2.java | 11 ++++++- .../http2/server/HttpTransportOverHTTP2.java | 32 +++++++++++++------ 2 files changed, 32 insertions(+), 11 deletions(-) diff --git a/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HttpChannelOverHTTP2.java b/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HttpChannelOverHTTP2.java index 1a391090806..81a8cc490ff 100644 --- a/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HttpChannelOverHTTP2.java +++ b/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HttpChannelOverHTTP2.java @@ -40,6 +40,7 @@ import org.eclipse.jetty.server.Connector; import org.eclipse.jetty.server.HttpChannel; import org.eclipse.jetty.server.HttpConfiguration; import org.eclipse.jetty.server.HttpInput; +import org.eclipse.jetty.server.handler.ContextHandler; import org.eclipse.jetty.util.BufferUtil; import org.eclipse.jetty.util.Callback; import org.eclipse.jetty.util.log.Log; @@ -329,9 +330,17 @@ public class HttpChannelOverHTTP2 extends HttpChannel { getHttpTransport().onStreamFailure(failure); if (onEarlyEOF()) - handle(); + { + ContextHandler handler = getState().getContextHandler(); + if (handler != null) + handler.handle(getRequest(), this); + else + handle(); + } else + { getState().asyncError(failure); + } } protected void consumeInput() diff --git a/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HttpTransportOverHTTP2.java b/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HttpTransportOverHTTP2.java index 51eb2a90e26..f75acd6f92b 100644 --- a/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HttpTransportOverHTTP2.java +++ b/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HttpTransportOverHTTP2.java @@ -268,14 +268,17 @@ public class HttpTransportOverHTTP2 implements HttpTransport { private State state = State.IDLE; private Callback callback; + private Throwable failure; private boolean commit; public boolean start(Callback callback, boolean commit) { State state; + Throwable failure; synchronized (this) { state = this.state; + failure = this.failure; if (state == State.IDLE) { this.state = State.WRITING; @@ -284,7 +287,9 @@ public class HttpTransportOverHTTP2 implements HttpTransport return true; } } - callback.failed(new IllegalStateException("Invalid transport state: " + state)); + if (failure == null) + failure = new IllegalStateException("Invalid transport state: " + state); + callback.failed(failure); return false; } @@ -304,32 +309,36 @@ public class HttpTransportOverHTTP2 implements HttpTransport } } if (LOG.isDebugEnabled()) - LOG.debug("HTTP2 Response #{}/{} {}", + LOG.debug("HTTP2 Response #{}/{} {} {}", stream.getId(), Integer.toHexString(stream.getSession().hashCode()), - commit ? "committed" : "flushed content"); + commit ? "commit" : "flush", + callback == null ? "failure" : "success"); if (callback != null) callback.succeeded(); } @Override - public void failed(Throwable x) + public void failed(Throwable failure) { boolean commit; Callback callback = null; synchronized (this) { commit = this.commit; + // Only fail pending writes, as we + // may need to write an error page. if (state == State.WRITING) { + this.state = State.FAILED; callback = this.callback; this.callback = null; - this.state = State.FAILED; + this.failure = failure; } } if (LOG.isDebugEnabled()) - LOG.debug("HTTP2 Response #" + stream.getId() + " failed to " + (commit ? "commit" : "flush"), x); + LOG.debug(String.format("HTTP2 Response #%d/%h failed to %s", stream.getId(), stream.getSession(), commit ? "commit" : "flush"), failure); if (callback != null) - callback.failed(x); + callback.failed(failure); } @Override @@ -340,7 +349,7 @@ public class HttpTransportOverHTTP2 implements HttpTransport { callback = this.callback; } - return callback.getInvocationType(); + return callback != null ? callback.getInvocationType() : Callback.super.getInvocationType(); } private boolean onIdleTimeout(Throwable failure) @@ -349,16 +358,19 @@ public class HttpTransportOverHTTP2 implements HttpTransport Callback callback = null; synchronized (this) { + // Ignore idle timeouts if not writing, + // as the application may be suspended. result = state == State.WRITING; if (result) { + this.state = State.TIMEOUT; callback = this.callback; this.callback = null; - this.state = State.TIMEOUT; + this.failure = failure; } } if (LOG.isDebugEnabled()) - LOG.debug("HTTP2 Response #" + stream.getId() + " idle timeout", failure); + LOG.debug(String.format("HTTP2 Response #%d/%h idle timeout", stream.getId(), stream.getSession()), failure); if (result) callback.failed(failure); return result; From 5d6bda39b6a990ce59bd1658db39b46429934765 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Wed, 12 Apr 2017 12:27:03 +0200 Subject: [PATCH 16/80] Cleaned up test logging levels. --- jetty-util/src/test/resources/jetty-logging.properties | 4 ---- 1 file changed, 4 deletions(-) diff --git a/jetty-util/src/test/resources/jetty-logging.properties b/jetty-util/src/test/resources/jetty-logging.properties index fe2f4676385..3a0ce97e2e0 100644 --- a/jetty-util/src/test/resources/jetty-logging.properties +++ b/jetty-util/src/test/resources/jetty-logging.properties @@ -1,7 +1,3 @@ # Setup default logging implementation for during testing org.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.StdErrLog #org.eclipse.jetty.util.LEVEL=DEBUG - -#org.eclipse.jetty.util.PathWatcher.Noisy.LEVEL=OFF - -org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.LEVEL=DEBUG \ No newline at end of file From 70160c5b3f2bd5a816fd8cc88058cc99a2baf4ac Mon Sep 17 00:00:00 2001 From: Jan Bartel Date: Thu, 13 Apr 2017 16:49:07 +1000 Subject: [PATCH 17/80] Issue #1467 --- .../annotations/AnnotationConfiguration.java | 2 - .../TestAnnotationConfiguration.java | 72 +++++++++ .../src/test/resources/web25.xml | 10 ++ .../src/test/resources/web31.xml | 11 ++ .../src/test/resources/web31false.xml | 11 ++ .../jetty/webapp/FragmentConfiguration.java | 33 +++-- .../jetty/webapp/MetaInfConfiguration.java | 60 ++++++-- .../eclipse/jetty/webapp/WebAppContext.java | 2 +- .../webapp/MetaInfConfigurationTest.java | 140 ++++++++++++++++++ jetty-webapp/src/test/resources/web25.xml | 10 ++ jetty-webapp/src/test/resources/web31.xml | 11 ++ .../src/test/resources/web31false.xml | 11 ++ 12 files changed, 345 insertions(+), 28 deletions(-) create mode 100644 jetty-annotations/src/test/resources/web25.xml create mode 100644 jetty-annotations/src/test/resources/web31.xml create mode 100644 jetty-annotations/src/test/resources/web31false.xml create mode 100644 jetty-webapp/src/test/java/org/eclipse/jetty/webapp/MetaInfConfigurationTest.java create mode 100644 jetty-webapp/src/test/resources/web25.xml create mode 100644 jetty-webapp/src/test/resources/web31.xml create mode 100644 jetty-webapp/src/test/resources/web31false.xml diff --git a/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationConfiguration.java b/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationConfiguration.java index a65c06fca16..721ffa223d6 100644 --- a/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationConfiguration.java +++ b/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationConfiguration.java @@ -344,8 +344,6 @@ public class AnnotationConfiguration extends AbstractConfiguration { context.getObjectFactory().addDecorator(new AnnotationDecorator(context)); - //Even if metadata is complete, we still need to scan for ServletContainerInitializers - if there are any - if (!context.getMetaData().isMetaDataComplete()) { //If metadata isn't complete, if this is a servlet 3 webapp or isConfigDiscovered is true, we need to search for annotations diff --git a/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/TestAnnotationConfiguration.java b/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/TestAnnotationConfiguration.java index f4d77cd06db..d8cdded1035 100644 --- a/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/TestAnnotationConfiguration.java +++ b/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/TestAnnotationConfiguration.java @@ -19,6 +19,8 @@ package org.eclipse.jetty.annotations; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.assertFalse; import java.io.File; import java.net.URL; @@ -38,6 +40,76 @@ import org.junit.Test; */ public class TestAnnotationConfiguration { + + public class TestableAnnotationConfiguration extends AnnotationConfiguration + { + public void assertAnnotationDiscovery (boolean b) + { + + if (!b) + assertTrue(_discoverableAnnotationHandlers.isEmpty()); + else + assertFalse(_discoverableAnnotationHandlers.isEmpty()); + } + } + + + @Test + public void testAnnotationScanControl() throws Exception + { + File web25 = MavenTestingUtils.getTestResourceFile("web25.xml"); + File web31 = MavenTestingUtils.getTestResourceFile("web31.xml"); + File web31false = MavenTestingUtils.getTestResourceFile("web31false.xml"); + + + //check that a 2.5 webapp won't discover annotations + TestableAnnotationConfiguration config25 = new TestableAnnotationConfiguration(); + WebAppContext context25 = new WebAppContext(); + context25.setAttribute(AnnotationConfiguration.MULTI_THREADED, Boolean.FALSE); + context25.setAttribute(AnnotationConfiguration.MAX_SCAN_WAIT, new Integer(0)); + context25.getMetaData().setWebXml(Resource.newResource(web25)); + context25.getServletContext().setEffectiveMajorVersion(2); + context25.getServletContext().setEffectiveMinorVersion(5); + config25.configure(context25); + config25.assertAnnotationDiscovery(false); + + //check that a 2.5 webapp with configurationDiscovered will discover annotations + TestableAnnotationConfiguration config25b = new TestableAnnotationConfiguration(); + WebAppContext context25b = new WebAppContext(); + context25b.setAttribute(AnnotationConfiguration.MULTI_THREADED, Boolean.FALSE); + context25b.setAttribute(AnnotationConfiguration.MAX_SCAN_WAIT, new Integer(0)); + context25b.setConfigurationDiscovered(true); + context25b.getMetaData().setWebXml(Resource.newResource(web25)); + context25b.getServletContext().setEffectiveMajorVersion(2); + context25b.getServletContext().setEffectiveMinorVersion(5); + config25b.configure(context25b); + config25b.assertAnnotationDiscovery(true); + + //check that a 3.x webapp with metadata true won't discover annotations + TestableAnnotationConfiguration config31 = new TestableAnnotationConfiguration(); + WebAppContext context31 = new WebAppContext(); + context31.setAttribute(AnnotationConfiguration.MULTI_THREADED, Boolean.FALSE); + context31.setAttribute(AnnotationConfiguration.MAX_SCAN_WAIT, new Integer(0)); + context31.getMetaData().setWebXml(Resource.newResource(web31)); + context31.getServletContext().setEffectiveMajorVersion(3); + context31.getServletContext().setEffectiveMinorVersion(1); + config31.configure(context31); + config31.assertAnnotationDiscovery(false); + + //check that a 3.x webapp with metadata false will discover annotations + TestableAnnotationConfiguration config31b = new TestableAnnotationConfiguration(); + WebAppContext context31b = new WebAppContext(); + context31b.setAttribute(AnnotationConfiguration.MULTI_THREADED, Boolean.FALSE); + context31b.setAttribute(AnnotationConfiguration.MAX_SCAN_WAIT, new Integer(0)); + context31b.getMetaData().setWebXml(Resource.newResource(web31false)); + context31b.getServletContext().setEffectiveMajorVersion(3); + context31b.getServletContext().setEffectiveMinorVersion(1); + config31b.configure(context31b); + config31b.assertAnnotationDiscovery(true); + } + + + @Test public void testGetFragmentFromJar() throws Exception { diff --git a/jetty-annotations/src/test/resources/web25.xml b/jetty-annotations/src/test/resources/web25.xml new file mode 100644 index 00000000000..da2e65b6007 --- /dev/null +++ b/jetty-annotations/src/test/resources/web25.xml @@ -0,0 +1,10 @@ + + + + Test 2.5 WebApp + + diff --git a/jetty-annotations/src/test/resources/web31.xml b/jetty-annotations/src/test/resources/web31.xml new file mode 100644 index 00000000000..e44571a8a20 --- /dev/null +++ b/jetty-annotations/src/test/resources/web31.xml @@ -0,0 +1,11 @@ + + + + Test 31 WebApp + + diff --git a/jetty-annotations/src/test/resources/web31false.xml b/jetty-annotations/src/test/resources/web31false.xml new file mode 100644 index 00000000000..a2307a7560b --- /dev/null +++ b/jetty-annotations/src/test/resources/web31false.xml @@ -0,0 +1,11 @@ + + + + Test 31 WebApp + + diff --git a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/FragmentConfiguration.java b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/FragmentConfiguration.java index e747068dd95..e0426d1f346 100644 --- a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/FragmentConfiguration.java +++ b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/FragmentConfiguration.java @@ -31,16 +31,12 @@ import org.eclipse.jetty.util.resource.Resource; public class FragmentConfiguration extends AbstractConfiguration { public final static String FRAGMENT_RESOURCES="org.eclipse.jetty.webFragments"; - + @Override public void preConfigure(WebAppContext context) throws Exception { - if (!context.isConfigurationDiscovered()) - return; - - //find all web-fragment.xmls - findWebFragments(context, context.getMetaData()); - + //add all discovered web-fragment.xmls + addWebFragments(context, context.getMetaData()); } @@ -49,16 +45,33 @@ public class FragmentConfiguration extends AbstractConfiguration { context.setAttribute(FRAGMENT_RESOURCES, null); } - + /* ------------------------------------------------------------------------------- */ /** - * Look for any web-fragment.xml fragments in META-INF of jars in WEB-INF/lib + * Add in fragment descriptors that have already been discovered by MetaInfConfiguration + * + * @param context the web app context to look in + * @param metaData the metadata to populate with fragments + * + * @throws Exception if unable to find web fragments + * @deprecated + */ + public void findWebFragments (final WebAppContext context, final MetaData metaData) + throws Exception + { + addWebFragments(context, metaData); + } + + /* ------------------------------------------------------------------------------- */ + /** + * Add in fragment descriptors that have already been discovered by MetaInfConfiguration + * * @param context the web app context to look in * @param metaData the metadata to populate with fragments * * @throws Exception if unable to find web fragments */ - public void findWebFragments (final WebAppContext context, final MetaData metaData) throws Exception + public void addWebFragments (final WebAppContext context, final MetaData metaData) throws Exception { @SuppressWarnings("unchecked") Map frags = (Map)context.getAttribute(FRAGMENT_RESOURCES); diff --git a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/MetaInfConfiguration.java b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/MetaInfConfiguration.java index 7ac3ff613aa..ea973624719 100644 --- a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/MetaInfConfiguration.java +++ b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/MetaInfConfiguration.java @@ -24,11 +24,14 @@ import java.io.IOException; import java.net.JarURLConnection; import java.net.URI; import java.net.URL; +import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.Enumeration; import java.util.HashMap; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; @@ -69,14 +72,19 @@ public class MetaInfConfiguration extends AbstractConfiguration public static final String METAINF_TLDS = "org.eclipse.jetty.tlds"; public static final String METAINF_FRAGMENTS = FragmentConfiguration.FRAGMENT_RESOURCES; public static final String METAINF_RESOURCES = WebInfConfiguration.RESOURCE_DIRS; - + public static final List __allScanTypes = (List) Arrays.asList(METAINF_TLDS, METAINF_RESOURCES, METAINF_FRAGMENTS); + + @Override public void preConfigure(final WebAppContext context) throws Exception - { + { boolean useContainerCache = DEFAULT_USE_CONTAINER_METAINF_CACHE; - Boolean attr = (Boolean)context.getServer().getAttribute(USE_CONTAINER_METAINF_CACHE); - if (attr != null) - useContainerCache = attr.booleanValue(); + if (context.getServer() != null) + { + Boolean attr = (Boolean)context.getServer().getAttribute(USE_CONTAINER_METAINF_CACHE); + if (attr != null) + useContainerCache = attr.booleanValue(); + } if (LOG.isDebugEnabled()) LOG.debug("{} = {}", USE_CONTAINER_METAINF_CACHE, useContainerCache); @@ -89,9 +97,28 @@ public class MetaInfConfiguration extends AbstractConfiguration context.setAttribute(METAINF_RESOURCES, new HashSet()); if (context.getAttribute(METAINF_FRAGMENTS) == null) context.setAttribute(METAINF_FRAGMENTS, new HashMap()); - - scanJars(context, context.getMetaData().getContainerResources(), useContainerCache); - scanJars(context, context.getMetaData().getWebInfJars(), false); + + //always scan everything from the container's classpath + scanJars(context, context.getMetaData().getContainerResources(), useContainerCache, __allScanTypes); + //only look for fragments if web.xml is not metadata complete, or it version 3.0 or greater + List scanTypes = new ArrayList<>(__allScanTypes); + if (context.getMetaData().isMetaDataComplete() || (context.getServletContext().getEffectiveMajorVersion() < 3) && !context.isConfigurationDiscovered()) + scanTypes.remove(METAINF_FRAGMENTS); + scanJars(context, context.getMetaData().getWebInfJars(), false, scanTypes); + } + + /** + * For backwards compatibility. This method will always scan for all types of data. + * + * @param context the context for the scan + * @param jars the jars to scan + * @param useCaches if true, the scanned info is cached + * @throws Exception + */ + public void scanJars (final WebAppContext context, Collection jars, boolean useCaches) + throws Exception + { + scanJars(context, jars, useCaches, __allScanTypes); } /** @@ -102,9 +129,10 @@ public class MetaInfConfiguration extends AbstractConfiguration * @param context the context for the scan * @param jars the jars resources to scan * @param useCaches if true, cache the info discovered + * @param scanTypes the type of things to look for in the jars * @throws Exception if unable to scan the jars */ - public void scanJars (final WebAppContext context, Collection jars, boolean useCaches) + public void scanJars (final WebAppContext context, Collection jars, boolean useCaches, List scanTypes ) throws Exception { ConcurrentHashMap metaInfResourceCache = null; @@ -131,16 +159,18 @@ public class MetaInfConfiguration extends AbstractConfiguration context.getServer().setAttribute(CACHED_CONTAINER_TLDS, metaInfTldCache); } } - + //Scan jars for META-INF information if (jars != null) { for (Resource r : jars) - { - - scanForResources(context, r, metaInfResourceCache); - scanForFragment(context, r, metaInfFragmentCache); - scanForTlds(context, r, metaInfTldCache); + { + if (scanTypes.contains(METAINF_RESOURCES)) + scanForResources(context, r, metaInfResourceCache); + if (scanTypes.contains(METAINF_FRAGMENTS)) + scanForFragment(context, r, metaInfFragmentCache); + if (scanTypes.contains(METAINF_TLDS)) + scanForTlds(context, r, metaInfTldCache); } } } diff --git a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppContext.java b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppContext.java index 81932e43280..070c670bd1c 100644 --- a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppContext.java +++ b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppContext.java @@ -185,7 +185,7 @@ public class WebAppContext extends ServletContextHandler implements WebAppClassL private Map _resourceAliases; private boolean _ownClassLoader=false; - private boolean _configurationDiscovered=true; + private boolean _configurationDiscovered=false; private boolean _allowDuplicateFragmentNames = false; private boolean _throwUnavailableOnStartupException = false; diff --git a/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/MetaInfConfigurationTest.java b/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/MetaInfConfigurationTest.java new file mode 100644 index 00000000000..42be205ff68 --- /dev/null +++ b/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/MetaInfConfigurationTest.java @@ -0,0 +1,140 @@ +// +// ======================================================================== +// Copyright (c) 1995-2017 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.webapp; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import java.io.File; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +import org.eclipse.jetty.toolchain.test.MavenTestingUtils; +import org.eclipse.jetty.util.resource.Resource; +import org.junit.Test; + +/** + * MetaInfConfigurationTest + * + * + */ +public class MetaInfConfigurationTest +{ + + public class TestableMetaInfConfiguration extends MetaInfConfiguration + { + List _expectedContainerScanTypes; + List _expectedWebAppScanTypes; + int _invocationCount = 0; + + public TestableMetaInfConfiguration(List expectedContainerScanTypes, List expectedWebAppScanTypes) + { + _expectedContainerScanTypes = expectedContainerScanTypes; + _expectedWebAppScanTypes = expectedWebAppScanTypes; + } + + + /** + * @see org.eclipse.jetty.webapp.MetaInfConfiguration#scanJars(org.eclipse.jetty.webapp.WebAppContext, java.util.Collection, boolean, java.util.List) + */ + @Override + public void scanJars(WebAppContext context, Collection jars, boolean useCaches, List scanTypes) throws Exception + { + assertNotNull(scanTypes); + List expectedScanTypes = null; + switch (_invocationCount) + { + case 0: + { + expectedScanTypes = _expectedContainerScanTypes; + break; + } + case 1: + { + expectedScanTypes = _expectedWebAppScanTypes; + break; + } + default: + { + fail("Too many invocations"); + } + } + + ++_invocationCount; + + assertNotNull(expectedScanTypes); + assertTrue(expectedScanTypes.containsAll(scanTypes)); + assertEquals(expectedScanTypes.size(), scanTypes.size()); + } + + } + + + @Test + public void testScanTypes() + throws Exception + { + File web25 = MavenTestingUtils.getTestResourceFile("web25.xml"); + File web31 = MavenTestingUtils.getTestResourceFile("web31.xml"); + File web31false = MavenTestingUtils.getTestResourceFile("web31false.xml"); + + //test a 2.5 webapp will not look for fragments by default + MetaInfConfiguration meta25 = new TestableMetaInfConfiguration(MetaInfConfiguration.__allScanTypes, + Arrays.asList(MetaInfConfiguration.METAINF_TLDS, MetaInfConfiguration.METAINF_RESOURCES)); + WebAppContext context25 = new WebAppContext(); + context25.getMetaData().setWebXml(Resource.newResource(web25)); + context25.getServletContext().setEffectiveMajorVersion(2); + context25.getServletContext().setEffectiveMinorVersion(5); + meta25.preConfigure(context25); + + //test a 2.5 webapp will look for fragments if configurationDiscovered==true + MetaInfConfiguration meta25b = new TestableMetaInfConfiguration(MetaInfConfiguration.__allScanTypes, + MetaInfConfiguration.__allScanTypes); + WebAppContext context25b = new WebAppContext(); + context25b.setConfigurationDiscovered(true); + context25b.getMetaData().setWebXml(Resource.newResource(web25)); + context25b.getServletContext().setEffectiveMajorVersion(2); + context25b.getServletContext().setEffectiveMinorVersion(5); + meta25b.preConfigure(context25b); + + //test a 3.x metadata-complete webapp will not look for fragments + MetaInfConfiguration meta31 = new TestableMetaInfConfiguration(MetaInfConfiguration.__allScanTypes, + Arrays.asList(MetaInfConfiguration.METAINF_TLDS, MetaInfConfiguration.METAINF_RESOURCES)); + WebAppContext context31 = new WebAppContext(); + context31.getMetaData().setWebXml(Resource.newResource(web31)); + context31.getServletContext().setEffectiveMajorVersion(3); + context31.getServletContext().setEffectiveMinorVersion(1); + meta31.preConfigure(context31); + + //test a 3.x non metadata-complete webapp will look for fragments + MetaInfConfiguration meta31false = new TestableMetaInfConfiguration(MetaInfConfiguration.__allScanTypes, + MetaInfConfiguration.__allScanTypes); + WebAppContext context31false = new WebAppContext(); + context31false.setConfigurationDiscovered(true); + context31false.getMetaData().setWebXml(Resource.newResource(web31false)); + context31false.getServletContext().setEffectiveMajorVersion(3); + context31false.getServletContext().setEffectiveMinorVersion(1); + meta31false.preConfigure(context31false); + } + +} diff --git a/jetty-webapp/src/test/resources/web25.xml b/jetty-webapp/src/test/resources/web25.xml new file mode 100644 index 00000000000..da2e65b6007 --- /dev/null +++ b/jetty-webapp/src/test/resources/web25.xml @@ -0,0 +1,10 @@ + + + + Test 2.5 WebApp + + diff --git a/jetty-webapp/src/test/resources/web31.xml b/jetty-webapp/src/test/resources/web31.xml new file mode 100644 index 00000000000..e44571a8a20 --- /dev/null +++ b/jetty-webapp/src/test/resources/web31.xml @@ -0,0 +1,11 @@ + + + + Test 31 WebApp + + diff --git a/jetty-webapp/src/test/resources/web31false.xml b/jetty-webapp/src/test/resources/web31false.xml new file mode 100644 index 00000000000..a2307a7560b --- /dev/null +++ b/jetty-webapp/src/test/resources/web31false.xml @@ -0,0 +1,11 @@ + + + + Test 31 WebApp + + From feeaa4b0a02bbf094c3f537adb9caebc6e189f7e Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Thu, 13 Apr 2017 06:32:36 -0700 Subject: [PATCH 18/80] Removing erroneous 9.3.19-SNAPSHOT reference from VERSION.txt --- VERSION.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/VERSION.txt b/VERSION.txt index 28b51678298..b91d2c06419 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1,7 +1,5 @@ jetty-9.4.4-SNAPSHOT -jetty-9.3.19-SNAPSHOT - jetty-9.4.3.v20170317 - 17 March 2017 + 329 Javadoc for HttpTester and ServletTester needs to reference limited HTTP version scope From 399ff337c8458446496940abf86501ae00d2113c Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Thu, 13 Apr 2017 09:07:26 -0700 Subject: [PATCH 19/80] Issue #1469 - conforming to java.util.Timer quirks --- .../jetty/util/RolloverFileOutputStream.java | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/RolloverFileOutputStream.java b/jetty-util/src/main/java/org/eclipse/jetty/util/RolloverFileOutputStream.java index db3b7bec52e..401ccd0aff0 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/RolloverFileOutputStream.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/RolloverFileOutputStream.java @@ -175,8 +175,6 @@ public class RolloverFileOutputStream extends FilterOutputStream if (__rollover==null) __rollover=new Timer(RolloverFileOutputStream.class.getName(),true); - _rollTask=new RollTask(); - midnight = toMidnight(ZonedDateTime.now(), zone.toZoneId()); scheduleNextRollover(); @@ -204,14 +202,12 @@ public class RolloverFileOutputStream extends FilterOutputStream public static ZonedDateTime nextMidnight(ZonedDateTime dateTime) { // Increment to next day. - // Using Calendar.add(DAY, 1) takes in account Daylights Savings - // differences, and still maintains the "midnight" settings for - // Hour, Minute, Second, Milliseconds return dateTime.toLocalDate().plus(1, ChronoUnit.DAYS).atStartOfDay(dateTime.getZone()); } private void scheduleNextRollover() { + _rollTask = new RollTask(); midnight = nextMidnight(midnight); __rollover.schedule(_rollTask,midnight.toInstant().toEpochMilli() - System.currentTimeMillis()); } @@ -342,8 +338,11 @@ public class RolloverFileOutputStream extends FilterOutputStream out=null; _file=null; } - - _rollTask.cancel(); + + if (_rollTask != null) + { + _rollTask.cancel(); + } } } @@ -359,10 +358,10 @@ public class RolloverFileOutputStream extends FilterOutputStream RolloverFileOutputStream.this.scheduleNextRollover(); RolloverFileOutputStream.this.removeOldFiles(); } - catch(IOException e) + catch(Throwable t) { // Cannot log this exception to a LOG, as RolloverFOS can be used by logging - e.printStackTrace(System.err); + t.printStackTrace(System.err); } } } From 2ba44ac05889f685b16a088f31bfdbc527bc894c Mon Sep 17 00:00:00 2001 From: Jan Bartel Date: Fri, 14 Apr 2017 14:07:36 +1000 Subject: [PATCH 20/80] Issue #1466 --- .../annotations/AnnotationConfiguration.java | 22 ++++- jetty-annotations/src/test/jar/test-sci.jar | Bin 0 -> 7570 bytes .../ServerServletContainerInitializer.java | 54 ++++++++++++ .../TestAnnotationConfiguration.java | 83 +++++++++++++++++- .../javax.servlet.ServletContainerInitializer | 1 + .../resources/{web31.xml => web31true.xml} | 0 .../src/main/webapp/WEB-INF/web.xml | 6 +- 7 files changed, 160 insertions(+), 6 deletions(-) create mode 100644 jetty-annotations/src/test/jar/test-sci.jar create mode 100644 jetty-annotations/src/test/java/org/eclipse/jetty/annotations/ServerServletContainerInitializer.java create mode 100644 jetty-annotations/src/test/resources/META-INF/services/javax.servlet.ServletContainerInitializer rename jetty-annotations/src/test/resources/{web31.xml => web31true.xml} (100%) diff --git a/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationConfiguration.java b/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationConfiguration.java index 721ffa223d6..c8d3bf9bfcb 100644 --- a/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationConfiguration.java +++ b/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationConfiguration.java @@ -29,6 +29,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.ListIterator; import java.util.Map; import java.util.ServiceLoader; import java.util.Set; @@ -858,7 +859,26 @@ public class AnnotationConfiguration extends AbstractConfiguration } } } - } + } + + //final pass over the non-excluded SCIs if the webapp version is < 3, in which case + //we will only call SCIs that are on the server's classpath + if (context.getServletContext().getEffectiveMajorVersion() < 3 && !context.isConfigurationDiscovered()) + { + ListIterator it = nonExcludedInitializers.listIterator(); + while (it.hasNext()) + { + ServletContainerInitializer sci = it.next(); + if (!isFromContainerClassPath(context, sci)) + { + if (LOG.isDebugEnabled()) + LOG.debug("Ignoring SCI {}: old web.xml version {}.{}", sci.getClass().getName(), + context.getServletContext().getEffectiveMajorVersion(), + context.getServletContext().getEffectiveMinorVersion()); + it.remove(); + } + } + } if (LOG.isDebugEnabled()) { diff --git a/jetty-annotations/src/test/jar/test-sci.jar b/jetty-annotations/src/test/jar/test-sci.jar new file mode 100644 index 0000000000000000000000000000000000000000..b067e15c96883f0588d1cd27e9a6e5f3c2747cb8 GIT binary patch literal 7570 zcmb_h1yod9_aBk&lnx0&8X1u8nxRV>N(LB|MrKH9X#|uK1bKjnw7}5P-I5~>Qi2GG zC?Vm0(5Ld=`}F_Tx4tv$t~+(DjWqkvFO_dM>Gv`S`N?+9lStBV8WjhUWW9&T73_{zY z48^DGOuK?9OXSm7lE}xDyXzi|Bc$ba6!_qGi-)%dq|F7JuVzH=5rW~DS;=)8XKMMB z;sW>Z5QUyj`O$cg>jmsdErR^jYItlsIxuXTwz$*1+A z{K|8cOxfz)!xI-^ZqyA1s{Hd|pHOT^+|@zWm0{H-6F0M#!1yMbN}G`G`}G0D>*w`T zm?^cZs!bZ>qN>#u=9s-RnSIy^@(62SIGDI**4M@N9J=<`7mqaBa=59G zBKx#TtcFT9#PXXP{1EN~jM6-@w({Ayc3B91QfA!7nr>9;u$#=L56K$fW~O$l)0+>3 ziYcVzy>Qk#|Ew8_56hajCs9(1*zNZvmMM3!36$Kf=91;!nywKuVZMGtlzQM&PB(k2 zVLr?9Bv(!eLs*zfFi9tkpgR~LFx#U5s;x{{fPGoq0)gAcA#3`~{<%XHviL_C%*3-P z^}#!ZEIgpR=CgIPwX!@ri6qc%cNHu*1;tWD@4|88Ds`lq^Y~vns+3^tToot zQXH*See(lo)wo}2<8*MMN{U+DpYRAm-0sM|tCjcFF9Ne?P zt@AbP0l0v#VULdV9|I5l??>4GT8#Xx7#!y6ZfgaD3;bFh6D@D$?D!jrQ^%(gP%B5+ zZ^Wq1irG5ZB5a`!w%#z;->8tBovS0%9p>~KVa|UFJGjZP<`{#! zU;o=(@w;iz&%II~csZu7F`zlt+tF0h}ufmQ2ygXVZQMHDc)iF^-_j6P> z5LKNIluSm{gx~gcMV=hTu}x?_qAVgwQoY2?+^wp0v_2NrzOrM77g7K=nyIg^F>m6! zm*p>TK^IX`6ZGX|qOLJ;ZHW*y(AB3r^ue7H;Hwe>|Fq6!H|0KTu2DXroEkfHo=tPY zZJ*Y7>uR@|3^-^U$2%7c6Sx6L9XsW#E=eTs@T0Yp5>H0dS;5H`2 zzm`GV$A#>$A+V6NBkM(-xj*iW`p@6c*bmg6gXgD4Ko{)5gGEkVqMruV3wO@pBiAdLnTUV#*&!pORUo=1vW2vPs2& zrX-eC;%*_HxW3N5rW0|eoMl%biItB`3Bpu%F0bi!U#)}tMaGl;4f`iEseuaq`*4h= z!Kk~jA$4RN3BE@R!952s$B*VK2zNS(8337_;(J_TO;|l`dp`%VETihA@%(GUcybm( zP%|emsT;|Tt=Bu&FNYf(a^W(O_mz&i3$)TG?{#D7d)lsprF*W)`X6g0JIrPT*YqJ6 zuURf((M-z>5$YXR^ttr<_GMlM=|Ufu&1vg}v)+;ng7fc$D0m^|DJZTzeKr3HwI}mX zoNJ@WBGfguzKa;6hojydhGX)ifRj}$&;5udohKp7K(eKmL)&{&jNEwgK`xM%+#hP{ zq0`eDpD3!@fB(p}W+n^TM$G}i!zi@3M5&LS+DM^yX5T1^S=l zF8~jM2Hc>E42xWv0h4@HrX)o@n{H{3xVCT9WD0;I3uVHm9VaJ6rX z!v|G)zlH`U@lrcT;qfb#q`JmuP5Jer*{j+>MR9IVd*JLMO>uCXQ47^(9*G#u3J{|`h29P4 z001d8NQj^T;s>OkMK%>@=QD7`t^jq_u!SRFXaMB5a)83&iF$MD({iLImpsgY<^|Ff zjV4*)>oTecLhxpc8-0?*H$3dxbr1_7P^7y-Y)O^+6kxy%y=p2m<{s#L^CT-J}2vJ**uFAq|P^B zN+UVcV~+4^Nx7EX&MJPvc%mAN>gPwzw zWi%xZf;zJ8f{oFb)KZ$BZ6+^@Nqs? zU*7JS?Yfmn9BEQCt8iW-d4WX9<>2ZVjhAmFld24xkXC&SrZ23snRiO%fvJ4FBa*jC zx=)y#DZ^02SvaM2)i(@2oNtzOvcnu&h1J?xmTy@yi*X^US^c_csxs#Zb*Wc$P%&3- zmdk!SO18yRUW50e_@>p$*8n*i27e6@y@HC`x9A$19{b-12s&Q=8X(aIj{4-flz#jy zJSC4TckOaO_(l#%*K!~Mg5vTyxx)P)VUW$i$=cp`<_zm3pCGbJM#9GdeoC@W*WQ)k zSwHcqdGkr;P1>7=qod;uoB%J%Cp2vcN@2BKHY#~Kq|kJ$FCLf@s_~-3RF7gr}D#s+2KCYgNpj>1EMB}(nU zUdki6a$!5dk?!H*+UHDM#8rDl{0U(76_c6}U#Cb84{VjkPwPzEb^2?|93}cyTFbDW z7hSC`!k@W9fJ5h8jc-W5(Y5grhcWtoj(2X4pblC7ZfT*Yl#Ma3FyR5b&{cID#pw}w ztKDvrPT(!SKidqi^)&cOs30#?w?mlJC1||2`W>t+#}@DT0bfurjf`3GMJS{LUa01I zagn2p+?5b4Q1`~*g|BNVvAPOV0bzGkkMoDxWeICaxvE<^s*|?6U+&LZjhMZ1%#B8x z&n!P;85oc(-5uyAAW4E&4=8&CKv`2H_Ou4`h^kV1AW6-JbbRF%HD(z#>NhRRq3@*R zy!DBxAr~F$Cn*umHgSwBRIaI?o(?xkc{)S$ab(u!$Bc{mdy`{lDQh!5rP5?Hsmq=x z^BLkNw*ihNKN=2lQnG`pl2Bq0e2_|+fG?rD8W_M<9xDBYm4Af0id-<#o}IRMF|_f3 zIuHxw)aR$n!X%}zis>s~jq(VdV^oxo_isWjK44R-U!`X6@t3|hMCVZkJ(docngA}rb5!ETT+sj0gwqxI>unJDuDL2X1 z9XXLJ7LAz#4r8tfVe;X{)01yj2WvhasGYxk7s+0~_tw-FOIs)tN+(>>}<;XHJP$hHMfY+X!`_xG5rQ@zrkwAeNFXNInvNM$B`V=^Ut>j z?{Wnx3#=^k$6EviqLOH^w#$hWC(0)H)^c?GAK~~1$b!>6OCAPK^OUg8~Z39qD-W%PwgN9eHWyqY9e98Ct8y zh@M9wO%oZG7<~P}`~D#;7gclgsxXfI@0X5on+UCPzKpe%BE-^qYoZ6y=oa!azd<6h z{4S+=JSDw4CiDz#^n5YbpMqQRd#(wGT)Z)C*2|2znsZHgcLu@7*Bcb;? zER73?Zk(e%`hfv8Z*@_ow4vO<_u;!RTEcg&hMn+_S#q^TljL2aM@i(>1|Cuss12ZD z$>mgjk&s$vbq{rHt@14%;m@3$l*z?Yew}gdsu0~Ps*_YbS3Pg$^fr9`@lImaKDY8uHpVJR1`>izuOWe;$QvenqtG69ZQ9ACJSM zvGX10)jOu=cC0%~u~xKVCUhJJF5jQruFq=_rntwUT3WT^$}j>l8k;L;qy-)CSk+K;wyW+X21>}&diDv4q*ZddUA5>*T&Qtv@b;_;og;FnSWuD^;Ec^- zP$n>)SoNM<%jM%lgxh!T_%QAbM7(4uU?GV{v8`2@QmMdkC#DCB5ibgb{H|Q`)<^?C zjEtxfR2d%5WDrltW1nuuO$w6RRDKsN^-2s#vA%CSzW~_C!3W*lZlwf8MR1OjR^N`S z(KsfCelVcBB)T0P;707K%~%7!RQbNBsUIGUS0^Mk@M%RKM&Y$KicF|WkY_zI9gmsz zI6wFJ+B|z%d_LYTo~dNitq62Q?@}iUaZ6|xnRA<9S8vM(Dn5M(WK1>F?CGOi?_A{h zw0Qn)DWuZ)coIW={M@Zm6=%D*VT*fh+m}rE&arC4xyZSPZ@=tV7^PQZZ=vi} zP5es=q>hI#TopP1%O$rd`w@v<_oLHGsAKerf#1}{@5!9-4WF~znerj-?4hr2c{TxW z!YtM!C!Wo`PI*L9LE95@pzv0FcnW^l#bCh|ebD04EG8!!U2)LTRn%xlk&nWPWZM5}! zJ1dLH=+*CHxb&G{PvBM$4Hs>)h~P~NraYrrZ!)MF&9L-cIq~#}_VTL5F`WJTt_dL7 zg)ajnY7^D=i&m7m=@};JNTzmNe*FfJ7ezrb9n-rvOsCu}s{cx05_-X8^hXcmgPaVB_zhxJx;d~h7o_ISnAK&o%#Bkf30UnHP;u&4Yx zeFtq#_{D_tR7Quvd^GlY!vH(6u_OU5q}J<=h;#M)O}$WXUt+OqEPbhv6!bUZR3$eF~OZm7r- zg`~0_i-}F8`=c2Z^j;H~GDel1{q)wNDFL+)WKD42QN83d-w+it?4^5vwnz%3aHvRN zh=46h^6rGB#LbTA5F}VAeYEiK=#TkrTEY?25Yqu&v&)o<;;+Kf(=tLvyW$aDW=oZw z4NY_N9_=FR)Wz{|bC<&e5OPT@LDJ)LCYAv2>bCX!9IIr^?uU1Ux!B#f3!&X+&3S&3 zYM|IRG8p=NucTxz4Q~5{#<;~(nT_zp5H)k+$H%3!_?k92B#w%vgc60_>n7K~hT&8t zHk;JlRKz%j{lOFCHt4#Z>T6nNNR1eDImni4CMBz1+1H&)Dr2N`U%snH4#^gcsK#D; zDy;_EI;kcYGCowvkHwlWivr>-tIC%g2TtbgV$IG(X*I^gDj(`0GVl!R_O!A?Yb2BM zYHPf}cH(iHdbZtxj$%P4w``uDd_5V@rpwPnI_1cN5Ey(2bOQOHFP;BcBDuIayTDu# zwlFwVk2Gm|?+d;KIK zixekqJaNvsnFB?G+~S`YD@H@NrA#|pmsf21w_MXc7YbkG*W+HrLPisg2Qm)_Cj+L3v#mNt~9~9v4^iL_+pZZ#8{cnWq=~Dmyi5@Gv z{HgILLHld9Q;PPdqlahJ&XNGXo9iiM``yHbe9zgnekX8$?f;a*{i(e7Pvu{M{qJUU zO6mSIDuv$6AG`lwpCI4-{S33SwCgFw`+bxLrk(Zo<8A+I!uRiv&eAuhEbjMF9>|LR z^7WI`{kz`TuKtwV`98`6718wle?|5D-No5n=dUiT3I3gne~<-#cX77rKW&=6kMh7$ z;$OS?R^I>J*4cvNv`_dx$^-F9e{Jg@UBg+k|EXH}X?BX@e-U|q)-Gq={wHkz>6V@P cf93Wk((9;Wp*bJ`fDHY!LC4(%n$xHM1FTLYm;e9( literal 0 HcmV?d00001 diff --git a/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/ServerServletContainerInitializer.java b/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/ServerServletContainerInitializer.java new file mode 100644 index 00000000000..26890149a63 --- /dev/null +++ b/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/ServerServletContainerInitializer.java @@ -0,0 +1,54 @@ +// +// ======================================================================== +// Copyright (c) 1995-2017 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.annotations; + +import java.util.Set; + +import javax.servlet.ServletContainerInitializer; +import javax.servlet.ServletContext; +import javax.servlet.ServletException; + +/** + * ServerServletContainerInitializer + * + * + */ +public class ServerServletContainerInitializer implements ServletContainerInitializer +{ + + /** + * + */ + public ServerServletContainerInitializer() + { + // TODO Auto-generated constructor stub + } + + /** + * @see javax.servlet.ServletContainerInitializer#onStartup(java.util.Set, javax.servlet.ServletContext) + */ + @Override + public void onStartup(Set> c, ServletContext ctx) throws ServletException + { + // TODO Auto-generated method stub + + } + +} diff --git a/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/TestAnnotationConfiguration.java b/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/TestAnnotationConfiguration.java index d8cdded1035..d56e31aa16a 100644 --- a/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/TestAnnotationConfiguration.java +++ b/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/TestAnnotationConfiguration.java @@ -21,11 +21,18 @@ package org.eclipse.jetty.annotations; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertEquals; import java.io.File; import java.net.URL; +import java.net.URLClassLoader; import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; import java.util.List; +import java.util.Set; + +import javax.servlet.ServletContainerInitializer; import org.eclipse.jetty.toolchain.test.MavenTestingUtils; import org.eclipse.jetty.util.resource.Resource; @@ -58,13 +65,14 @@ public class TestAnnotationConfiguration public void testAnnotationScanControl() throws Exception { File web25 = MavenTestingUtils.getTestResourceFile("web25.xml"); - File web31 = MavenTestingUtils.getTestResourceFile("web31.xml"); + File web31true = MavenTestingUtils.getTestResourceFile("web31true.xml"); File web31false = MavenTestingUtils.getTestResourceFile("web31false.xml"); //check that a 2.5 webapp won't discover annotations TestableAnnotationConfiguration config25 = new TestableAnnotationConfiguration(); WebAppContext context25 = new WebAppContext(); + context25.setClassLoader(Thread.currentThread().getContextClassLoader()); context25.setAttribute(AnnotationConfiguration.MULTI_THREADED, Boolean.FALSE); context25.setAttribute(AnnotationConfiguration.MAX_SCAN_WAIT, new Integer(0)); context25.getMetaData().setWebXml(Resource.newResource(web25)); @@ -76,6 +84,7 @@ public class TestAnnotationConfiguration //check that a 2.5 webapp with configurationDiscovered will discover annotations TestableAnnotationConfiguration config25b = new TestableAnnotationConfiguration(); WebAppContext context25b = new WebAppContext(); + context25b.setClassLoader(Thread.currentThread().getContextClassLoader()); context25b.setAttribute(AnnotationConfiguration.MULTI_THREADED, Boolean.FALSE); context25b.setAttribute(AnnotationConfiguration.MAX_SCAN_WAIT, new Integer(0)); context25b.setConfigurationDiscovered(true); @@ -88,9 +97,10 @@ public class TestAnnotationConfiguration //check that a 3.x webapp with metadata true won't discover annotations TestableAnnotationConfiguration config31 = new TestableAnnotationConfiguration(); WebAppContext context31 = new WebAppContext(); + context31.setClassLoader(Thread.currentThread().getContextClassLoader()); context31.setAttribute(AnnotationConfiguration.MULTI_THREADED, Boolean.FALSE); context31.setAttribute(AnnotationConfiguration.MAX_SCAN_WAIT, new Integer(0)); - context31.getMetaData().setWebXml(Resource.newResource(web31)); + context31.getMetaData().setWebXml(Resource.newResource(web31true)); context31.getServletContext().setEffectiveMajorVersion(3); context31.getServletContext().setEffectiveMinorVersion(1); config31.configure(context31); @@ -99,6 +109,7 @@ public class TestAnnotationConfiguration //check that a 3.x webapp with metadata false will discover annotations TestableAnnotationConfiguration config31b = new TestableAnnotationConfiguration(); WebAppContext context31b = new WebAppContext(); + context31b.setClassLoader(Thread.currentThread().getContextClassLoader()); context31b.setAttribute(AnnotationConfiguration.MULTI_THREADED, Boolean.FALSE); context31b.setAttribute(AnnotationConfiguration.MAX_SCAN_WAIT, new Integer(0)); context31b.getMetaData().setWebXml(Resource.newResource(web31false)); @@ -108,6 +119,74 @@ public class TestAnnotationConfiguration config31b.assertAnnotationDiscovery(true); } + @Test + public void testSCIControl () + throws Exception + { + File web25 = MavenTestingUtils.getTestResourceFile("web25.xml"); + File web31false = MavenTestingUtils.getTestResourceFile("web31false.xml"); + File web31true = MavenTestingUtils.getTestResourceFile("web31true.xml"); + Set sciNames = new HashSet<>(Arrays.asList("org.eclipse.jetty.annotations.ServerServletContainerInitializer", "com.acme.initializer.FooInitializer")); + + //prepare an sci that will be on the webapp's classpath + File jarDir = new File(MavenTestingUtils.getTestResourcesDir().getParentFile(), "jar"); + File testSciJar = new File(jarDir, "test-sci.jar"); + assertTrue(testSciJar.exists()); + URLClassLoader webAppLoader = new URLClassLoader(new URL[] {testSciJar.toURI().toURL()}, Thread.currentThread().getContextClassLoader()); + + //test 3.1 webapp loads both server and app scis + AnnotationConfiguration config = new AnnotationConfiguration(); + WebAppContext context = new WebAppContext(); + context.setClassLoader(webAppLoader); + context.getMetaData().setWebXml(Resource.newResource(web31true)); + context.getServletContext().setEffectiveMajorVersion(3); + context.getServletContext().setEffectiveMinorVersion(1); + List scis = config.getNonExcludedInitializers(context); + assertNotNull(scis); + assertEquals(2, scis.size()); + assertTrue (sciNames.contains(scis.get(0).getClass().getName())); + assertTrue (sciNames.contains(scis.get(1).getClass().getName())); + + //test a 3.1 webapp with metadata-complete=false loads both server and webapp scis + config = new AnnotationConfiguration(); + context = new WebAppContext(); + context.setClassLoader(webAppLoader); + context.getMetaData().setWebXml(Resource.newResource(web31false)); + context.getServletContext().setEffectiveMajorVersion(3); + context.getServletContext().setEffectiveMinorVersion(1); + scis = config.getNonExcludedInitializers(context); + assertNotNull(scis); + assertEquals(2, scis.size()); + assertTrue (sciNames.contains(scis.get(0).getClass().getName())); + assertTrue (sciNames.contains(scis.get(1).getClass().getName())); + + + //test 2.5 webapp with configurationDiscovered=false loads only server scis + config = new AnnotationConfiguration(); + context = new WebAppContext(); + context.setClassLoader(webAppLoader); + context.getMetaData().setWebXml(Resource.newResource(web25)); + context.getServletContext().setEffectiveMajorVersion(2); + context.getServletContext().setEffectiveMinorVersion(5); + scis = config.getNonExcludedInitializers(context); + assertNotNull(scis); + assertEquals(1, scis.size()); + assertTrue ("org.eclipse.jetty.annotations.ServerServletContainerInitializer".equals(scis.get(0).getClass().getName())); + + //test 2.5 webapp with configurationDiscovered=true loads both server and webapp scis + config = new AnnotationConfiguration(); + context = new WebAppContext(); + context.setConfigurationDiscovered(true); + context.setClassLoader(webAppLoader); + context.getMetaData().setWebXml(Resource.newResource(web25)); + context.getServletContext().setEffectiveMajorVersion(2); + context.getServletContext().setEffectiveMinorVersion(5); + scis = config.getNonExcludedInitializers(context); + assertNotNull(scis); + assertEquals(2, scis.size()); + assertTrue (sciNames.contains(scis.get(0).getClass().getName())); + assertTrue (sciNames.contains(scis.get(1).getClass().getName())); + } @Test diff --git a/jetty-annotations/src/test/resources/META-INF/services/javax.servlet.ServletContainerInitializer b/jetty-annotations/src/test/resources/META-INF/services/javax.servlet.ServletContainerInitializer new file mode 100644 index 00000000000..8193f60e4a7 --- /dev/null +++ b/jetty-annotations/src/test/resources/META-INF/services/javax.servlet.ServletContainerInitializer @@ -0,0 +1 @@ +org.eclipse.jetty.annotations.ServerServletContainerInitializer \ No newline at end of file diff --git a/jetty-annotations/src/test/resources/web31.xml b/jetty-annotations/src/test/resources/web31true.xml similarity index 100% rename from jetty-annotations/src/test/resources/web31.xml rename to jetty-annotations/src/test/resources/web31true.xml diff --git a/tests/test-jmx/jmx-webapp/src/main/webapp/WEB-INF/web.xml b/tests/test-jmx/jmx-webapp/src/main/webapp/WEB-INF/web.xml index 68fd25d618c..f03188e1ee2 100644 --- a/tests/test-jmx/jmx-webapp/src/main/webapp/WEB-INF/web.xml +++ b/tests/test-jmx/jmx-webapp/src/main/webapp/WEB-INF/web.xml @@ -1,10 +1,10 @@ + version="3.1"> Test JMX WebApp From 509f59c32d5fab33bf2ef21602fd1540d7a90a7a Mon Sep 17 00:00:00 2001 From: Jan Bartel Date: Fri, 14 Apr 2017 14:43:41 +1000 Subject: [PATCH 21/80] Issue #1472 --- .../java/org/eclipse/jetty/server/ResourceContentFactory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/ResourceContentFactory.java b/jetty-server/src/main/java/org/eclipse/jetty/server/ResourceContentFactory.java index df8706dd132..2c5b0f8d6cb 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/ResourceContentFactory.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/ResourceContentFactory.java @@ -82,7 +82,7 @@ public class ResourceContentFactory implements ContentFactory { String compressedPathInContext = pathInContext + format._extension; Resource compressedResource = _factory.getResource(compressedPathInContext); - if (compressedResource.exists() && compressedResource.lastModified() >= resource.lastModified() + if (compressedResource != null && compressedResource.exists() && compressedResource.lastModified() >= resource.lastModified() && compressedResource.length() < resource.length()) compressedContents.put(format, new ResourceHttpContent(compressedResource,_mimeTypes.getMimeByExtension(compressedPathInContext),maxBufferSize)); From ccfe579a55026be4a693b4ebe7c5f75dbdc33a11 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Fri, 14 Apr 2017 12:04:18 -0700 Subject: [PATCH 22/80] Issue #1475 - SIOOBE in ContextHandler startup + Fixed ContextHandler logname creation to be more resilient to bad characters that are unsuitable for a log name + Corrected AbstractLogger condensePackageString() to be more resilient to bad characters and classname formatting --- .../jetty/server/handler/ContextHandler.java | 50 ++++++++++++++----- .../server/handler/ContextHandlerTest.java | 23 ++++++++- .../jetty/util/log/AbstractLogger.java | 17 ++++++- .../org/eclipse/jetty/util/log/StdErrLog.java | 3 +- .../org/eclipse/jetty/util/log/LogTest.java | 28 ++++++++++- 5 files changed, 102 insertions(+), 19 deletions(-) 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 25cb06553bf..18438aad1bf 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 @@ -753,20 +753,12 @@ public class ContextHandler extends ScopedHandler implements Attributes, Gracefu if (_contextPath == null) throw new IllegalStateException("Null contextPath"); - - if (_logger==null) + + if (_logger == null) { - String log_name = getDisplayName(); - if (log_name == null || log_name.isEmpty()) - { - log_name = getContextPath(); - if (log_name!=null || log_name.startsWith("/")) - log_name = log_name.substring(1); - if (log_name==null || log_name.isEmpty()) - log_name = Integer.toHexString(hashCode()); - } - _logger = Log.getLogger("org.eclipse.jetty.ContextHandler."+log_name); + _logger = Log.getLogger(ContextHandler.class.getName() + getLogName()); } + ClassLoader old_classloader = null; Thread current_thread = null; Context old_context = null; @@ -806,6 +798,40 @@ public class ContextHandler extends ScopedHandler implements Attributes, Gracefu current_thread.setContextClassLoader(old_classloader); } } + + private String getLogName() + { + // Use display name first + String log_name = getDisplayName(); + if (StringUtil.isBlank(log_name)) + { + // try context path + log_name = getContextPath(); + if (log_name != null) + { + // Strip prefix slash + if (log_name.startsWith("/")) + { + log_name = log_name.substring(1); + } + } + + if (StringUtil.isNotBlank(log_name)) + { + // try hex of hashcode + log_name = Integer.toHexString(hashCode()); + } + } + + if (StringUtil.isBlank(log_name)) + { + // still blank? + return ""; + } + + // Replace bad characters. + return '.' + log_name.replaceAll("\\W", "_"); + } /* ------------------------------------------------------------ */ /** diff --git a/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ContextHandlerTest.java b/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ContextHandlerTest.java index b5e9b79117d..430a4261b0b 100644 --- a/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ContextHandlerTest.java +++ b/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ContextHandlerTest.java @@ -18,6 +18,9 @@ package org.eclipse.jetty.server.handler; +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; + import java.io.File; import java.io.IOException; import java.io.PrintWriter; @@ -448,10 +451,28 @@ public class ContextHandlerTest } @Test - public void testIsShutdown() { + public void testIsShutdown() + { ContextHandler handler = new ContextHandler(); Assert.assertEquals(false, handler.isShutdown()); } + + @Test + public void testLogName() throws Exception + { + ContextHandler handler = new ContextHandler(); + handler.setServer(new Server()); + handler.setDisplayName("."); + try + { + handler.start(); + assertThat("handler.get", handler.getLogger().getName(), is(ContextHandler.class.getName())); + } + finally + { + handler.stop(); + } + } private void checkResourcePathsForExampleWebApp(String root) throws IOException { diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/log/AbstractLogger.java b/jetty-util/src/main/java/org/eclipse/jetty/util/log/AbstractLogger.java index 718518d11ac..33decb4720a 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/log/AbstractLogger.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/log/AbstractLogger.java @@ -200,11 +200,24 @@ public abstract class AbstractLogger implements Logger */ protected static String condensePackageString(String classname) { - String parts[] = classname.split("\\."); + if(classname == null || classname.isEmpty()) + { + return ""; + } + // strip non-allowed character + String allowed = classname.replaceAll("[^\\w.]", ""); + int len = allowed.length(); + // find end of classname (strip empty sections. eg: "org.Foo.") + while(allowed.charAt(--len) == '.'); + String parts[] = allowed.substring(0,len+1).split("\\."); StringBuilder dense = new StringBuilder(); for (int i = 0; i < (parts.length - 1); i++) { - dense.append(parts[i].charAt(0)); + String part = parts[i].trim(); + if(!part.isEmpty()) + { + dense.append(part.charAt(0)); + } } if (dense.length() > 0) { diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/log/StdErrLog.java b/jetty-util/src/main/java/org/eclipse/jetty/util/log/StdErrLog.java index 4f955b60d4a..cbb2d665351 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/log/StdErrLog.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/log/StdErrLog.java @@ -21,7 +21,6 @@ package org.eclipse.jetty.util.log; import java.io.PrintStream; import java.security.AccessControlException; import java.util.Properties; -import java.util.logging.Level; import org.eclipse.jetty.util.DateCache; import org.eclipse.jetty.util.annotation.ManagedAttribute; @@ -143,7 +142,7 @@ public class StdErrLog extends AbstractLogger // The full log name, as provided by the system. private final String _name; // The abbreviated log name (used by default, unless _long is specified) - private final String _abbrevname; + protected final String _abbrevname; private boolean _hideStacks = false; diff --git a/jetty-util/src/test/java/org/eclipse/jetty/util/log/LogTest.java b/jetty-util/src/test/java/org/eclipse/jetty/util/log/LogTest.java index 553d111f02f..bbb5b6c6e38 100644 --- a/jetty-util/src/test/java/org/eclipse/jetty/util/log/LogTest.java +++ b/jetty-util/src/test/java/org/eclipse/jetty/util/log/LogTest.java @@ -19,6 +19,9 @@ package org.eclipse.jetty.util.log; +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; + import java.util.HashMap; import java.util.Map; @@ -54,8 +57,8 @@ public class LogTest Logger log = Log.getLogger(LogTest.class); log.info("Test default logging"); } - - // @Test + + @Test public void testNamedLogNamed_StdErrLog() { Log.setLog(new StdErrLog()); @@ -90,4 +93,25 @@ public class LogTest Logger lc = Log.getLogger(clazz); Assert.assertEquals("Named logging (impl=" + Log.getLog().getClass().getName() + ")",lc.getName(),clazz.getName()); } + + @Test + public void testCondensePackage() + { + String cases[][] = new String[][]{ + {null, ""}, + {"org.eclipse.Foo.\u0000", "oe.Foo"}, + {".foo", "foo"}, + {".bar.Foo", "b.Foo"}, + {"org...bar..Foo", "ob.Foo"} + }; + + StdErrLog log = new StdErrLog(); + + for (int i = 0; i < cases.length; i++) + { + // System.err.printf("newLogger(%s)%n", cases[i][0]); + StdErrLog logger = (StdErrLog) log.newLogger(cases[i][0]); + assertThat("log[" + cases[i][0] + "] condenses to name", logger._abbrevname, is(cases[i][1])); + } + } } From e598f5da14e77a6a7bab0140fd8304411c3fac95 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Fri, 14 Apr 2017 12:53:25 -0700 Subject: [PATCH 23/80] Issue #1475 - more tests for bad ContextHandler.logger creation --- .../jetty/server/handler/ContextHandler.java | 6 +- .../server/handler/ContextHandlerTest.java | 73 ++++++++++++++++++- 2 files changed, 73 insertions(+), 6 deletions(-) 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 18438aad1bf..b6100b566ee 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 @@ -816,10 +816,10 @@ public class ContextHandler extends ScopedHandler implements Attributes, Gracefu } } - if (StringUtil.isNotBlank(log_name)) + if (StringUtil.isBlank(log_name)) { - // try hex of hashcode - log_name = Integer.toHexString(hashCode()); + // an empty context path is the ROOT context + log_name = "ROOT"; } } diff --git a/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ContextHandlerTest.java b/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ContextHandlerTest.java index 430a4261b0b..626adec2e5e 100644 --- a/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ContextHandlerTest.java +++ b/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ContextHandlerTest.java @@ -458,15 +458,82 @@ public class ContextHandlerTest } @Test - public void testLogName() throws Exception + public void testLogNameFromDisplayName() throws Exception { ContextHandler handler = new ContextHandler(); handler.setServer(new Server()); - handler.setDisplayName("."); + handler.setDisplayName("An Interesting Project: app.tast.ic"); try { handler.start(); - assertThat("handler.get", handler.getLogger().getName(), is(ContextHandler.class.getName())); + assertThat("handler.get", handler.getLogger().getName(), is(ContextHandler.class.getName() + ".An_Interesting_Project__app_tast_ic")); + } + finally + { + handler.stop(); + } + } + + @Test + public void testLogNameFromContextPath_Deep() throws Exception + { + ContextHandler handler = new ContextHandler(); + handler.setServer(new Server()); + handler.setContextPath("/app/tast/ic"); + try + { + handler.start(); + assertThat("handler.get", handler.getLogger().getName(), is(ContextHandler.class.getName() + ".app_tast_ic")); + } + finally + { + handler.stop(); + } + } + + @Test + public void testLogNameFromContextPath_Root() throws Exception + { + ContextHandler handler = new ContextHandler(); + handler.setServer(new Server()); + handler.setContextPath(""); + try + { + handler.start(); + assertThat("handler.get", handler.getLogger().getName(), is(ContextHandler.class.getName() + ".ROOT")); + } + finally + { + handler.stop(); + } + } + + @Test + public void testLogNameFromContextPath_Undefined() throws Exception + { + ContextHandler handler = new ContextHandler(); + handler.setServer(new Server()); + try + { + handler.start(); + assertThat("handler.get", handler.getLogger().getName(), is(ContextHandler.class.getName() + ".ROOT")); + } + finally + { + handler.stop(); + } + } + + @Test + public void testLogNameFromContextPath_Empty() throws Exception + { + ContextHandler handler = new ContextHandler(); + handler.setServer(new Server()); + handler.setContextPath(""); + try + { + handler.start(); + assertThat("handler.get", handler.getLogger().getName(), is(ContextHandler.class.getName() + ".ROOT")); } finally { From 19f28a5a8ccc268518ffe90f7ef580a74bb76194 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Fri, 14 Apr 2017 13:03:17 -0700 Subject: [PATCH 24/80] Issue #1475 - some code cleanup --- .../eclipse/jetty/server/handler/ContextHandler.java | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) 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 b6100b566ee..142b0d69ebb 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 @@ -756,7 +756,7 @@ public class ContextHandler extends ScopedHandler implements Attributes, Gracefu if (_logger == null) { - _logger = Log.getLogger(ContextHandler.class.getName() + getLogName()); + _logger = Log.getLogger(ContextHandler.class.getName() + getLogNameSuffix()); } ClassLoader old_classloader = null; @@ -799,7 +799,7 @@ public class ContextHandler extends ScopedHandler implements Attributes, Gracefu } } - private String getLogName() + private String getLogNameSuffix() { // Use display name first String log_name = getDisplayName(); @@ -823,12 +823,6 @@ public class ContextHandler extends ScopedHandler implements Attributes, Gracefu } } - if (StringUtil.isBlank(log_name)) - { - // still blank? - return ""; - } - // Replace bad characters. return '.' + log_name.replaceAll("\\W", "_"); } From 3dc8f557c6fa8a442ba25a33e087c394575eb1a4 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Fri, 14 Apr 2017 13:20:17 -0700 Subject: [PATCH 25/80] Updating to version 9.4.4.v20170414 --- VERSION.txt | 43 ++++++++++++++++--- aggregates/jetty-all-compact3/pom.xml | 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-java-client/pom.xml | 2 +- jetty-alpn/jetty-alpn-java-server/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/cdi-core/pom.xml | 2 +- jetty-cdi/cdi-full-servlet/pom.xml | 2 +- jetty-cdi/cdi-servlet/pom.xml | 2 +- jetty-cdi/cdi-websocket/pom.xml | 2 +- jetty-cdi/pom.xml | 2 +- jetty-cdi/test-cdi-webapp/pom.xml | 2 +- jetty-client/pom.xml | 2 +- jetty-continuation/pom.xml | 2 +- jetty-deploy/pom.xml | 2 +- jetty-distribution/pom.xml | 2 +- jetty-documentation/pom.xml | 2 +- jetty-fcgi/fcgi-client/pom.xml | 2 +- jetty-fcgi/fcgi-server/pom.xml | 2 +- jetty-fcgi/pom.xml | 2 +- .../jetty-gcloud-session-manager/pom.xml | 2 +- jetty-gcloud/pom.xml | 2 +- jetty-home/pom.xml | 2 +- jetty-http-spi/pom.xml | 2 +- jetty-http/pom.xml | 2 +- jetty-http2/http2-alpn-tests/pom.xml | 2 +- jetty-http2/http2-client/pom.xml | 2 +- jetty-http2/http2-common/pom.xml | 2 +- jetty-http2/http2-hpack/pom.xml | 2 +- .../http2-http-client-transport/pom.xml | 2 +- jetty-http2/http2-server/pom.xml | 2 +- jetty-http2/pom.xml | 2 +- jetty-infinispan/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-jspc-maven-plugin/pom.xml | 2 +- jetty-maven-plugin/pom.xml | 2 +- .../jetty-memcached-sessions/pom.xml | 2 +- jetty-memcached/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-fragment/pom.xml | 2 +- jetty-osgi/test-jetty-osgi-server/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-spring/pom.xml | 2 +- jetty-start/pom.xml | 2 +- jetty-unixsocket/pom.xml | 2 +- jetty-util-ajax/pom.xml | 2 +- jetty-util/pom.xml | 2 +- jetty-webapp/pom.xml | 2 +- .../javax-websocket-client-impl/pom.xml | 2 +- .../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-http-client-transport/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 +- .../test-sessions/test-file-sessions/pom.xml | 2 +- .../test-gcloud-sessions/pom.xml | 2 +- .../test-sessions/test-hash-sessions/pom.xml | 2 +- .../test-infinispan-sessions/pom.xml | 2 +- .../test-sessions/test-jdbc-sessions/pom.xml | 2 +- .../test-memcached-sessions/pom.xml | 2 +- .../test-mongodb-sessions/pom.xml | 2 +- .../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 +- .../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-container-initializer/pom.xml | 2 +- .../test-spec-webapp/pom.xml | 2 +- .../test-web-fragment/pom.xml | 2 +- .../test-webapps/test-webapp-rfc2616/pom.xml | 2 +- 119 files changed, 155 insertions(+), 124 deletions(-) diff --git a/VERSION.txt b/VERSION.txt index b91d2c06419..db7d29d5978 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1,4 +1,35 @@ -jetty-9.4.4-SNAPSHOT +jetty-9.4.4.v20170414 - 14 April 2017 + + 612 Support HTTP Trailer + + 877 Programmatic servlet mappings cannot override mappings from + webdefault.xml using quickstart + + 1201 X-Forwarded-For incorrectly set in jetty-http-forwarded.xml + + 1334 Dispatcher.commitResponse() failure is unreported + + 1386 Optimise session writes + + 1411 Use short-circuit operator in websocket Frame + + 1417 Improve classloader dumping + + 1418 setWriteListener causes race + + 1423 Update to gcloud datastore 0.10.0-beta + + 1433 Wrong status message for code 417 + + 1434 Improve properties in jetty-gzip.xml + + 1435 Apply setCharacterEncoding to static content without an assumed encoding + + 1436 NullPointerException when calling changeSessionId + + 1439 Allow UNC paths to function as Resource bases + + 1440 Improve lock contention for low resources scheduling strategy + + 1444 Deprecate Continuations + + 1448 StackOverflowError when using URLStreamHandlerFactory in + WebAppClassloader + + 1449 Unable to find the JVM Lib directory in WebAppContext + + 1450 JMX does not export session statistics + + 1452 Add tests for [want|need]ClientAuth + + 1454 CachedContentFactory locks filesystem after first read of file + + 1456 Error dispatch race with async write + + 1463 SSL Renegotiate limit + + 1466 Only use ServletContainerInitializers from server path for web.xml < + 3.0 + + 1467 Change default for WebAppContext.isConfiguredDiscovered to false + + 1469 IllegalStateException in RolloverFileOutputStream + + 1472 Broken *.gz symlinks cause NPE in DefaultServlet. + + 1475 SIOOBE in ContextHandler startup jetty-9.4.3.v20170317 - 17 March 2017 + 329 Javadoc for HttpTester and ServletTester needs to reference limited HTTP @@ -149,19 +180,19 @@ jetty-9.4.1.v20170120 - 20 January 2017 with WEB-INF/lib/jetty-http.jar present + 1234 onBadMessage called from with handled message + 1239 Charset=unknown produces Exception during testing - + 1242 + + 1242 org.eclipse.jetty.client.HttpRequestAbortTest.testAbortOnCommitWithContent[1]() results in EofException - + 1243 + + 1243 org.eclipse.jetty.proxy.ProxyServletFailureTest.testServerException[0]() results in ServletException - + 1244 + + 1244 ProxyServletFailureTest.testProxyRequestStallsContentServerIdlesTimeout() has TimeoutException visible - + 1248 + + 1248 org.eclipse.jetty.http2.client.StreamResetTest.testServerExceptionConsumesQueuedData results in visible Stacktrace - + 1252 + + 1252 HttpClientStreamTest.testInputStreamContentProviderThrowingWhileReading[transport: HTTPS]() results in Early EOF + 1254 9.4.x Server resource handler welcome files forwarding not working diff --git a/aggregates/jetty-all-compact3/pom.xml b/aggregates/jetty-all-compact3/pom.xml index 71d1bc662de..820e1d544cc 100644 --- a/aggregates/jetty-all-compact3/pom.xml +++ b/aggregates/jetty-all-compact3/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 ../../pom.xml 4.0.0 diff --git a/aggregates/jetty-all/pom.xml b/aggregates/jetty-all/pom.xml index 116f11a60fc..effd604f07f 100644 --- a/aggregates/jetty-all/pom.xml +++ b/aggregates/jetty-all/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 ../../pom.xml 4.0.0 diff --git a/apache-jsp/pom.xml b/apache-jsp/pom.xml index b17ef6542e7..ee9823a47b6 100644 --- a/apache-jsp/pom.xml +++ b/apache-jsp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 apache-jsp diff --git a/apache-jstl/pom.xml b/apache-jstl/pom.xml index 640c6584973..963b0409522 100644 --- a/apache-jstl/pom.xml +++ b/apache-jstl/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 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 52efed9b70f..b55e1e71edd 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.4.4-SNAPSHOT + 9.4.4.v20170414 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 19f13acf377..4cef50a30df 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.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 org.eclipse.jetty.example-async-rest diff --git a/examples/async-rest/pom.xml b/examples/async-rest/pom.xml index 82d8ebcdfd1..f15095dc0dd 100644 --- a/examples/async-rest/pom.xml +++ b/examples/async-rest/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.examples examples-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 ../pom.xml 4.0.0 diff --git a/examples/embedded/pom.xml b/examples/embedded/pom.xml index 69230001cac..e996881a1b9 100644 --- a/examples/embedded/pom.xml +++ b/examples/embedded/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.examples examples-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 ../pom.xml 4.0.0 diff --git a/examples/pom.xml b/examples/pom.xml index 60a01c5b17a..f82069147b0 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 ../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 0a375e37b3d..a29efa870fd 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.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 jetty-alpn-client diff --git a/jetty-alpn/jetty-alpn-java-client/pom.xml b/jetty-alpn/jetty-alpn-java-client/pom.xml index b84882f9aec..d1252fbab46 100644 --- a/jetty-alpn/jetty-alpn-java-client/pom.xml +++ b/jetty-alpn/jetty-alpn-java-client/pom.xml @@ -6,7 +6,7 @@ org.eclipse.jetty jetty-alpn-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 diff --git a/jetty-alpn/jetty-alpn-java-server/pom.xml b/jetty-alpn/jetty-alpn-java-server/pom.xml index a713d6a5b96..9515d9db45c 100644 --- a/jetty-alpn/jetty-alpn-java-server/pom.xml +++ b/jetty-alpn/jetty-alpn-java-server/pom.xml @@ -5,7 +5,7 @@ org.eclipse.jetty jetty-alpn-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 diff --git a/jetty-alpn/jetty-alpn-server/pom.xml b/jetty-alpn/jetty-alpn-server/pom.xml index d79c548b877..8203ae3afa5 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.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 jetty-alpn-server diff --git a/jetty-alpn/pom.xml b/jetty-alpn/pom.xml index 61f000dd62b..1367480ddd6 100644 --- a/jetty-alpn/pom.xml +++ b/jetty-alpn/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 jetty-alpn-parent diff --git a/jetty-annotations/pom.xml b/jetty-annotations/pom.xml index 2d003cd07e2..bb1a16132c2 100644 --- a/jetty-annotations/pom.xml +++ b/jetty-annotations/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 jetty-annotations diff --git a/jetty-ant/pom.xml b/jetty-ant/pom.xml index 003d1f09f67..a92c6d4418d 100644 --- a/jetty-ant/pom.xml +++ b/jetty-ant/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 jetty-ant diff --git a/jetty-cdi/cdi-core/pom.xml b/jetty-cdi/cdi-core/pom.xml index 24d71dbea75..5ac9728576d 100644 --- a/jetty-cdi/cdi-core/pom.xml +++ b/jetty-cdi/cdi-core/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.cdi jetty-cdi-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 cdi-core diff --git a/jetty-cdi/cdi-full-servlet/pom.xml b/jetty-cdi/cdi-full-servlet/pom.xml index bd7848b71d3..ab2f139b9f3 100644 --- a/jetty-cdi/cdi-full-servlet/pom.xml +++ b/jetty-cdi/cdi-full-servlet/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.cdi jetty-cdi-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 cdi-full-servlet diff --git a/jetty-cdi/cdi-servlet/pom.xml b/jetty-cdi/cdi-servlet/pom.xml index 223a8e38a47..a4473347082 100644 --- a/jetty-cdi/cdi-servlet/pom.xml +++ b/jetty-cdi/cdi-servlet/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.cdi jetty-cdi-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 cdi-servlet diff --git a/jetty-cdi/cdi-websocket/pom.xml b/jetty-cdi/cdi-websocket/pom.xml index 3efc8f817fc..f172fe1f0d9 100644 --- a/jetty-cdi/cdi-websocket/pom.xml +++ b/jetty-cdi/cdi-websocket/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.cdi jetty-cdi-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 cdi-websocket diff --git a/jetty-cdi/pom.xml b/jetty-cdi/pom.xml index 93826b69529..a6a2a85ef32 100644 --- a/jetty-cdi/pom.xml +++ b/jetty-cdi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 org.eclipse.jetty.cdi diff --git a/jetty-cdi/test-cdi-webapp/pom.xml b/jetty-cdi/test-cdi-webapp/pom.xml index 72b811b8c0a..1cba935d659 100644 --- a/jetty-cdi/test-cdi-webapp/pom.xml +++ b/jetty-cdi/test-cdi-webapp/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.cdi jetty-cdi-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 test-cdi-webapp diff --git a/jetty-client/pom.xml b/jetty-client/pom.xml index 57005e70fad..25648299db2 100644 --- a/jetty-client/pom.xml +++ b/jetty-client/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 diff --git a/jetty-continuation/pom.xml b/jetty-continuation/pom.xml index 0846ab6cd48..5a7056dd708 100644 --- a/jetty-continuation/pom.xml +++ b/jetty-continuation/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 jetty-continuation diff --git a/jetty-deploy/pom.xml b/jetty-deploy/pom.xml index 35ea0278f56..ee9fdf92b12 100644 --- a/jetty-deploy/pom.xml +++ b/jetty-deploy/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 jetty-deploy diff --git a/jetty-distribution/pom.xml b/jetty-distribution/pom.xml index ce33a925c4f..305baf655c2 100644 --- a/jetty-distribution/pom.xml +++ b/jetty-distribution/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 jetty-distribution diff --git a/jetty-documentation/pom.xml b/jetty-documentation/pom.xml index d558f74d1f7..86eb6eb449e 100644 --- a/jetty-documentation/pom.xml +++ b/jetty-documentation/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 jetty-documentation Jetty :: Documentation diff --git a/jetty-fcgi/fcgi-client/pom.xml b/jetty-fcgi/fcgi-client/pom.xml index e00a9279260..6b12a3aef5f 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.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 diff --git a/jetty-fcgi/fcgi-server/pom.xml b/jetty-fcgi/fcgi-server/pom.xml index 858d8635704..8ee4d223124 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.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 diff --git a/jetty-fcgi/pom.xml b/jetty-fcgi/pom.xml index defe9866062..0a846946498 100644 --- a/jetty-fcgi/pom.xml +++ b/jetty-fcgi/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 diff --git a/jetty-gcloud/jetty-gcloud-session-manager/pom.xml b/jetty-gcloud/jetty-gcloud-session-manager/pom.xml index 22b679f52ad..642cf929350 100644 --- a/jetty-gcloud/jetty-gcloud-session-manager/pom.xml +++ b/jetty-gcloud/jetty-gcloud-session-manager/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.gcloud gcloud-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 diff --git a/jetty-gcloud/pom.xml b/jetty-gcloud/pom.xml index d0f7b42d0a8..e3090ad6046 100644 --- a/jetty-gcloud/pom.xml +++ b/jetty-gcloud/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 diff --git a/jetty-home/pom.xml b/jetty-home/pom.xml index 7a7786494c9..30c5d22457b 100644 --- a/jetty-home/pom.xml +++ b/jetty-home/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 jetty-home diff --git a/jetty-http-spi/pom.xml b/jetty-http-spi/pom.xml index 4be287abfe9..be1930ac2a7 100644 --- a/jetty-http-spi/pom.xml +++ b/jetty-http-spi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 jetty-http-spi diff --git a/jetty-http/pom.xml b/jetty-http/pom.xml index 8d12d0b1c6a..f357bdc13cb 100644 --- a/jetty-http/pom.xml +++ b/jetty-http/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 jetty-http diff --git a/jetty-http2/http2-alpn-tests/pom.xml b/jetty-http2/http2-alpn-tests/pom.xml index b97d5a74b7c..9b9a42449e9 100644 --- a/jetty-http2/http2-alpn-tests/pom.xml +++ b/jetty-http2/http2-alpn-tests/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.http2 http2-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 diff --git a/jetty-http2/http2-client/pom.xml b/jetty-http2/http2-client/pom.xml index 880085758e3..7f50484e7f6 100644 --- a/jetty-http2/http2-client/pom.xml +++ b/jetty-http2/http2-client/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.http2 http2-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 diff --git a/jetty-http2/http2-common/pom.xml b/jetty-http2/http2-common/pom.xml index 3d6966a2692..d93f4886312 100644 --- a/jetty-http2/http2-common/pom.xml +++ b/jetty-http2/http2-common/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.http2 http2-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 diff --git a/jetty-http2/http2-hpack/pom.xml b/jetty-http2/http2-hpack/pom.xml index d5b0f6cfbc1..649da55924e 100644 --- a/jetty-http2/http2-hpack/pom.xml +++ b/jetty-http2/http2-hpack/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.http2 http2-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 diff --git a/jetty-http2/http2-http-client-transport/pom.xml b/jetty-http2/http2-http-client-transport/pom.xml index 181810da769..5b1ed8ad2c3 100644 --- a/jetty-http2/http2-http-client-transport/pom.xml +++ b/jetty-http2/http2-http-client-transport/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.http2 http2-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 diff --git a/jetty-http2/http2-server/pom.xml b/jetty-http2/http2-server/pom.xml index 12859e957db..a71e7564710 100644 --- a/jetty-http2/http2-server/pom.xml +++ b/jetty-http2/http2-server/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.http2 http2-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 diff --git a/jetty-http2/pom.xml b/jetty-http2/pom.xml index 3d1a7681702..5175cf0803b 100644 --- a/jetty-http2/pom.xml +++ b/jetty-http2/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 diff --git a/jetty-infinispan/pom.xml b/jetty-infinispan/pom.xml index 644aab04f8d..3d6450aa929 100644 --- a/jetty-infinispan/pom.xml +++ b/jetty-infinispan/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 jetty-infinispan diff --git a/jetty-io/pom.xml b/jetty-io/pom.xml index 86fb0e7dd04..3ba4466e98e 100644 --- a/jetty-io/pom.xml +++ b/jetty-io/pom.xml @@ -2,7 +2,7 @@ jetty-project org.eclipse.jetty - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 jetty-io diff --git a/jetty-jaas/pom.xml b/jetty-jaas/pom.xml index 0e23c6379b1..cd41affad65 100644 --- a/jetty-jaas/pom.xml +++ b/jetty-jaas/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 jetty-jaas diff --git a/jetty-jaspi/pom.xml b/jetty-jaspi/pom.xml index 5a3946a94a4..079efef84ca 100644 --- a/jetty-jaspi/pom.xml +++ b/jetty-jaspi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 jetty-jaspi diff --git a/jetty-jmx/pom.xml b/jetty-jmx/pom.xml index 1bac283fefa..20ee74ca6e6 100644 --- a/jetty-jmx/pom.xml +++ b/jetty-jmx/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 jetty-jmx diff --git a/jetty-jndi/pom.xml b/jetty-jndi/pom.xml index dbadfbf4dd8..1e0362237c2 100644 --- a/jetty-jndi/pom.xml +++ b/jetty-jndi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 jetty-jndi diff --git a/jetty-jspc-maven-plugin/pom.xml b/jetty-jspc-maven-plugin/pom.xml index 52c8e6d4f20..da7dfd22202 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.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 jetty-jspc-maven-plugin diff --git a/jetty-maven-plugin/pom.xml b/jetty-maven-plugin/pom.xml index c84789f7c8d..94b2fc04fcf 100644 --- a/jetty-maven-plugin/pom.xml +++ b/jetty-maven-plugin/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 jetty-maven-plugin diff --git a/jetty-memcached/jetty-memcached-sessions/pom.xml b/jetty-memcached/jetty-memcached-sessions/pom.xml index 6fc516381ab..db12d71f686 100644 --- a/jetty-memcached/jetty-memcached-sessions/pom.xml +++ b/jetty-memcached/jetty-memcached-sessions/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.memcached memcached-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 diff --git a/jetty-memcached/pom.xml b/jetty-memcached/pom.xml index da03ecca5bf..89424726860 100644 --- a/jetty-memcached/pom.xml +++ b/jetty-memcached/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 diff --git a/jetty-nosql/pom.xml b/jetty-nosql/pom.xml index 8f4de1b6ee2..57d27fc854e 100644 --- a/jetty-nosql/pom.xml +++ b/jetty-nosql/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 jetty-nosql diff --git a/jetty-osgi/jetty-osgi-alpn/pom.xml b/jetty-osgi/jetty-osgi-alpn/pom.xml index f0c7bec2140..2f66203b8ef 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.4.4-SNAPSHOT + 9.4.4.v20170414 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 c1712ea9bdd..b76c42ef017 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.4.4-SNAPSHOT + 9.4.4.v20170414 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 e753121cb11..a212f116cbb 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.4.4-SNAPSHOT + 9.4.4.v20170414 ../pom.xml 4.0.0 diff --git a/jetty-osgi/jetty-osgi-boot/pom.xml b/jetty-osgi/jetty-osgi-boot/pom.xml index d79f7142f23..a30707b886e 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.4.4-SNAPSHOT + 9.4.4.v20170414 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 02062772665..40128650261 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.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 jetty-httpservice diff --git a/jetty-osgi/pom.xml b/jetty-osgi/pom.xml index 9100a6b7c00..f56b299e83d 100644 --- a/jetty-osgi/pom.xml +++ b/jetty-osgi/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 diff --git a/jetty-osgi/test-jetty-osgi-context/pom.xml b/jetty-osgi/test-jetty-osgi-context/pom.xml index 43e467af462..6997e84cadc 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.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 test-jetty-osgi-context diff --git a/jetty-osgi/test-jetty-osgi-fragment/pom.xml b/jetty-osgi/test-jetty-osgi-fragment/pom.xml index 327e16990fa..17ba681be9c 100644 --- a/jetty-osgi/test-jetty-osgi-fragment/pom.xml +++ b/jetty-osgi/test-jetty-osgi-fragment/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 ../pom.xml 4.0.0 diff --git a/jetty-osgi/test-jetty-osgi-server/pom.xml b/jetty-osgi/test-jetty-osgi-server/pom.xml index 350d00a14f4..1664c3e9250 100644 --- a/jetty-osgi/test-jetty-osgi-server/pom.xml +++ b/jetty-osgi/test-jetty-osgi-server/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 test-jetty-osgi-server diff --git a/jetty-osgi/test-jetty-osgi-webapp/pom.xml b/jetty-osgi/test-jetty-osgi-webapp/pom.xml index 31a4768ce66..7fdeacc7e90 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.4.4-SNAPSHOT + 9.4.4.v20170414 ../pom.xml 4.0.0 diff --git a/jetty-osgi/test-jetty-osgi/pom.xml b/jetty-osgi/test-jetty-osgi/pom.xml index 991ab88db18..e604a476340 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.4.4-SNAPSHOT + 9.4.4.v20170414 ../pom.xml 4.0.0 diff --git a/jetty-plus/pom.xml b/jetty-plus/pom.xml index a6122cf9f97..0134f75ed45 100644 --- a/jetty-plus/pom.xml +++ b/jetty-plus/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 jetty-plus diff --git a/jetty-proxy/pom.xml b/jetty-proxy/pom.xml index c70a0337b0c..fb808939830 100644 --- a/jetty-proxy/pom.xml +++ b/jetty-proxy/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 jetty-proxy diff --git a/jetty-quickstart/pom.xml b/jetty-quickstart/pom.xml index 7cd0d85c25e..3a8b58e63e2 100644 --- a/jetty-quickstart/pom.xml +++ b/jetty-quickstart/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 org.eclipse.jetty diff --git a/jetty-rewrite/pom.xml b/jetty-rewrite/pom.xml index 81520e1239a..b6bc98d6a8e 100644 --- a/jetty-rewrite/pom.xml +++ b/jetty-rewrite/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 jetty-rewrite diff --git a/jetty-runner/pom.xml b/jetty-runner/pom.xml index 90e47586697..d28319ee66a 100644 --- a/jetty-runner/pom.xml +++ b/jetty-runner/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 jetty-runner diff --git a/jetty-security/pom.xml b/jetty-security/pom.xml index 4e3afee8793..6c10a37915e 100644 --- a/jetty-security/pom.xml +++ b/jetty-security/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 jetty-security diff --git a/jetty-server/pom.xml b/jetty-server/pom.xml index ce67543f144..48bb08babd2 100644 --- a/jetty-server/pom.xml +++ b/jetty-server/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 jetty-server diff --git a/jetty-servlet/pom.xml b/jetty-servlet/pom.xml index e1e3e484913..ff832d27bf5 100644 --- a/jetty-servlet/pom.xml +++ b/jetty-servlet/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 jetty-servlet diff --git a/jetty-servlets/pom.xml b/jetty-servlets/pom.xml index cb4ac2c8a81..85558e78165 100644 --- a/jetty-servlets/pom.xml +++ b/jetty-servlets/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 jetty-servlets diff --git a/jetty-spring/pom.xml b/jetty-spring/pom.xml index 1e04bff16eb..82bb8b2a4b6 100644 --- a/jetty-spring/pom.xml +++ b/jetty-spring/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 jetty-spring diff --git a/jetty-start/pom.xml b/jetty-start/pom.xml index 52b5b582d11..179463a6c2e 100644 --- a/jetty-start/pom.xml +++ b/jetty-start/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 jetty-start diff --git a/jetty-unixsocket/pom.xml b/jetty-unixsocket/pom.xml index b5cd95b32e8..646c7f2146d 100644 --- a/jetty-unixsocket/pom.xml +++ b/jetty-unixsocket/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 jetty-unixsocket diff --git a/jetty-util-ajax/pom.xml b/jetty-util-ajax/pom.xml index c226fb4ad38..6c364e95fca 100644 --- a/jetty-util-ajax/pom.xml +++ b/jetty-util-ajax/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 jetty-util-ajax diff --git a/jetty-util/pom.xml b/jetty-util/pom.xml index db2edd4996f..cc16e5e2359 100644 --- a/jetty-util/pom.xml +++ b/jetty-util/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 jetty-util diff --git a/jetty-webapp/pom.xml b/jetty-webapp/pom.xml index 465461ad281..0cc6d62a13b 100644 --- a/jetty-webapp/pom.xml +++ b/jetty-webapp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 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 ff62d4c3d15..727625cede3 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.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 diff --git a/jetty-websocket/javax-websocket-server-impl/pom.xml b/jetty-websocket/javax-websocket-server-impl/pom.xml index 0db4a28a800..fe28ee012b7 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.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 diff --git a/jetty-websocket/pom.xml b/jetty-websocket/pom.xml index ae5a8735257..082705b857f 100644 --- a/jetty-websocket/pom.xml +++ b/jetty-websocket/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 diff --git a/jetty-websocket/websocket-api/pom.xml b/jetty-websocket/websocket-api/pom.xml index 25ee91aa71e..0c717090ec8 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.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 diff --git a/jetty-websocket/websocket-client/pom.xml b/jetty-websocket/websocket-client/pom.xml index 8faaf715c81..1fb816e62b7 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.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 diff --git a/jetty-websocket/websocket-common/pom.xml b/jetty-websocket/websocket-common/pom.xml index 52714e297d7..20ce8933552 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.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 diff --git a/jetty-websocket/websocket-server/pom.xml b/jetty-websocket/websocket-server/pom.xml index 392fbb30ab7..8f82bcf5dbd 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.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 diff --git a/jetty-websocket/websocket-servlet/pom.xml b/jetty-websocket/websocket-servlet/pom.xml index a57c994d622..6afdf9c8643 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.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 diff --git a/jetty-xml/pom.xml b/jetty-xml/pom.xml index 797acf3ae71..3d7f124b68c 100644 --- a/jetty-xml/pom.xml +++ b/jetty-xml/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 jetty-xml diff --git a/pom.xml b/pom.xml index 6aa3a1d5416..2ce5f8ce806 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ 4.0.0 org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 Jetty :: Project The Eclipse Jetty Project pom diff --git a/tests/pom.xml b/tests/pom.xml index fb248b315c9..b7282c0b921 100644 --- a/tests/pom.xml +++ b/tests/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty jetty-project - 9.4.4-SNAPSHOT + 9.4.4.v20170414 ../pom.xml org.eclipse.jetty.tests diff --git a/tests/test-continuation/pom.xml b/tests/test-continuation/pom.xml index 3b67936cc00..6ce93545418 100644 --- a/tests/test-continuation/pom.xml +++ b/tests/test-continuation/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests tests-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 ../pom.xml 4.0.0 diff --git a/tests/test-http-client-transport/pom.xml b/tests/test-http-client-transport/pom.xml index b862ca6637a..207eeb022b6 100644 --- a/tests/test-http-client-transport/pom.xml +++ b/tests/test-http-client-transport/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests tests-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 diff --git a/tests/test-integration/pom.xml b/tests/test-integration/pom.xml index f05f8ad5bb5..2f9d806105d 100644 --- a/tests/test-integration/pom.xml +++ b/tests/test-integration/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests tests-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 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 8714b038747..3216d572000 100644 --- a/tests/test-jmx/jmx-webapp-it/pom.xml +++ b/tests/test-jmx/jmx-webapp-it/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-jmx-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 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 75918df7651..f6f7f9997d8 100644 --- a/tests/test-jmx/jmx-webapp/pom.xml +++ b/tests/test-jmx/jmx-webapp/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-jmx-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 jmx-webapp war diff --git a/tests/test-jmx/pom.xml b/tests/test-jmx/pom.xml index 54d458af672..3875f193c8a 100644 --- a/tests/test-jmx/pom.xml +++ b/tests/test-jmx/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests tests-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 4.0.0 test-jmx-parent diff --git a/tests/test-loginservice/pom.xml b/tests/test-loginservice/pom.xml index 63031aedb7a..1fee6f8deff 100644 --- a/tests/test-loginservice/pom.xml +++ b/tests/test-loginservice/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests tests-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 test-loginservice Jetty Tests :: Login Service diff --git a/tests/test-quickstart/pom.xml b/tests/test-quickstart/pom.xml index c68793f7f48..975d6f4f8b4 100644 --- a/tests/test-quickstart/pom.xml +++ b/tests/test-quickstart/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests tests-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 ../pom.xml 4.0.0 diff --git a/tests/test-sessions/pom.xml b/tests/test-sessions/pom.xml index 1aeb30376fb..1e437dbe1ce 100644 --- a/tests/test-sessions/pom.xml +++ b/tests/test-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests tests-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 test-sessions-parent Jetty Tests :: Sessions :: Parent diff --git a/tests/test-sessions/test-file-sessions/pom.xml b/tests/test-sessions/test-file-sessions/pom.xml index c9a9e0363a5..90cdadbf09a 100644 --- a/tests/test-sessions/test-file-sessions/pom.xml +++ b/tests/test-sessions/test-file-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 test-file-sessions Jetty Tests :: Sessions :: File diff --git a/tests/test-sessions/test-gcloud-sessions/pom.xml b/tests/test-sessions/test-gcloud-sessions/pom.xml index 48f38ecb389..a5caf2658e2 100644 --- a/tests/test-sessions/test-gcloud-sessions/pom.xml +++ b/tests/test-sessions/test-gcloud-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 test-gcloud-sessions Jetty Tests :: Sessions :: GCloud diff --git a/tests/test-sessions/test-hash-sessions/pom.xml b/tests/test-sessions/test-hash-sessions/pom.xml index c76ac8987d6..face8aea460 100644 --- a/tests/test-sessions/test-hash-sessions/pom.xml +++ b/tests/test-sessions/test-hash-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 test-hash-sessions Jetty Tests :: Sessions :: Hash diff --git a/tests/test-sessions/test-infinispan-sessions/pom.xml b/tests/test-sessions/test-infinispan-sessions/pom.xml index 40c0f84dbee..b5d60504e56 100644 --- a/tests/test-sessions/test-infinispan-sessions/pom.xml +++ b/tests/test-sessions/test-infinispan-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 test-infinispan-sessions Jetty Tests :: Sessions :: Infinispan diff --git a/tests/test-sessions/test-jdbc-sessions/pom.xml b/tests/test-sessions/test-jdbc-sessions/pom.xml index 1cea2500fb0..d7a8ed6ed13 100644 --- a/tests/test-sessions/test-jdbc-sessions/pom.xml +++ b/tests/test-sessions/test-jdbc-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 test-jdbc-sessions Jetty Tests :: Sessions :: JDBC diff --git a/tests/test-sessions/test-memcached-sessions/pom.xml b/tests/test-sessions/test-memcached-sessions/pom.xml index 13a42322e1f..f0e557c8fe0 100644 --- a/tests/test-sessions/test-memcached-sessions/pom.xml +++ b/tests/test-sessions/test-memcached-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 test-memcached-sessions Jetty Tests :: Sessions :: Memcached diff --git a/tests/test-sessions/test-mongodb-sessions/pom.xml b/tests/test-sessions/test-mongodb-sessions/pom.xml index a23d0c224b2..28730998637 100644 --- a/tests/test-sessions/test-mongodb-sessions/pom.xml +++ b/tests/test-sessions/test-mongodb-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 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 e5efccc82f8..fe8d103d1a4 100644 --- a/tests/test-sessions/test-sessions-common/pom.xml +++ b/tests/test-sessions/test-sessions-common/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 test-sessions-common Jetty Tests :: Sessions :: Common diff --git a/tests/test-webapps/pom.xml b/tests/test-webapps/pom.xml index 44bc9a04348..f4d749f151c 100644 --- a/tests/test-webapps/pom.xml +++ b/tests/test-webapps/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests tests-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 ../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 5d703bc90de..6c4e1a3acb1 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.4.4-SNAPSHOT + 9.4.4.v20170414 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 c3bb1165909..2537a1de3a7 100644 --- a/tests/test-webapps/test-jetty-webapp/pom.xml +++ b/tests/test-webapps/test-jetty-webapp/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 ../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 3e3419ca4ae..201abd8227c 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.4.4-SNAPSHOT + 9.4.4.v20170414 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 c56b511d4eb..3ca70ca9820 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.4.4-SNAPSHOT + 9.4.4.v20170414 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 d65bbeca2e0..9ee7ad364ae 100644 --- a/tests/test-webapps/test-proxy-webapp/pom.xml +++ b/tests/test-webapps/test-proxy-webapp/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 ../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 ec33d63963e..4e08ea61590 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.4.4-SNAPSHOT + 9.4.4.v20170414 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 b486e98c2ad..92ee79340bd 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.4.4-SNAPSHOT + 9.4.4.v20170414 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 c06d0ce955a..1daec8ce9fd 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.4.4-SNAPSHOT + 9.4.4.v20170414 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 99184cfbdd6..efeb162daeb 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.4.4-SNAPSHOT + 9.4.4.v20170414 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 0651e6cf5fb..8e6f264117f 100644 --- a/tests/test-webapps/test-webapp-rfc2616/pom.xml +++ b/tests/test-webapps/test-webapp-rfc2616/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.4.4-SNAPSHOT + 9.4.4.v20170414 test-webapp-rfc2616 Jetty Tests :: WebApp :: RFC2616 From 92ea5bda21b50b83d3b0b9cb06bc2a1f960c1952 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Fri, 14 Apr 2017 14:43:36 -0700 Subject: [PATCH 26/80] Updating to version 9.4.5-SNAPSHOT --- VERSION.txt | 2 ++ aggregates/jetty-all-compact3/pom.xml | 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-java-client/pom.xml | 2 +- jetty-alpn/jetty-alpn-java-server/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/cdi-core/pom.xml | 2 +- jetty-cdi/cdi-full-servlet/pom.xml | 2 +- jetty-cdi/cdi-servlet/pom.xml | 2 +- jetty-cdi/cdi-websocket/pom.xml | 2 +- jetty-cdi/pom.xml | 2 +- jetty-cdi/test-cdi-webapp/pom.xml | 2 +- jetty-client/pom.xml | 2 +- jetty-continuation/pom.xml | 2 +- jetty-deploy/pom.xml | 2 +- jetty-distribution/pom.xml | 2 +- jetty-documentation/pom.xml | 2 +- jetty-fcgi/fcgi-client/pom.xml | 2 +- jetty-fcgi/fcgi-server/pom.xml | 2 +- jetty-fcgi/pom.xml | 2 +- jetty-gcloud/jetty-gcloud-session-manager/pom.xml | 2 +- jetty-gcloud/pom.xml | 2 +- jetty-home/pom.xml | 2 +- jetty-http-spi/pom.xml | 2 +- jetty-http/pom.xml | 2 +- jetty-http2/http2-alpn-tests/pom.xml | 2 +- jetty-http2/http2-client/pom.xml | 2 +- jetty-http2/http2-common/pom.xml | 2 +- jetty-http2/http2-hpack/pom.xml | 2 +- jetty-http2/http2-http-client-transport/pom.xml | 2 +- jetty-http2/http2-server/pom.xml | 2 +- jetty-http2/pom.xml | 2 +- jetty-infinispan/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-jspc-maven-plugin/pom.xml | 2 +- jetty-maven-plugin/pom.xml | 2 +- jetty-memcached/jetty-memcached-sessions/pom.xml | 2 +- jetty-memcached/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-fragment/pom.xml | 2 +- jetty-osgi/test-jetty-osgi-server/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-spring/pom.xml | 2 +- jetty-start/pom.xml | 2 +- jetty-unixsocket/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-http-client-transport/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-file-sessions/pom.xml | 2 +- tests/test-sessions/test-gcloud-sessions/pom.xml | 2 +- tests/test-sessions/test-hash-sessions/pom.xml | 2 +- tests/test-sessions/test-infinispan-sessions/pom.xml | 2 +- tests/test-sessions/test-jdbc-sessions/pom.xml | 2 +- tests/test-sessions/test-memcached-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 +- 119 files changed, 120 insertions(+), 118 deletions(-) diff --git a/VERSION.txt b/VERSION.txt index db7d29d5978..e27aab76085 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1,3 +1,5 @@ +jetty-9.4.5-SNAPSHOT + jetty-9.4.4.v20170414 - 14 April 2017 + 612 Support HTTP Trailer + 877 Programmatic servlet mappings cannot override mappings from diff --git a/aggregates/jetty-all-compact3/pom.xml b/aggregates/jetty-all-compact3/pom.xml index 820e1d544cc..61e5da3e869 100644 --- a/aggregates/jetty-all-compact3/pom.xml +++ b/aggregates/jetty-all-compact3/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT ../../pom.xml 4.0.0 diff --git a/aggregates/jetty-all/pom.xml b/aggregates/jetty-all/pom.xml index effd604f07f..15906ace349 100644 --- a/aggregates/jetty-all/pom.xml +++ b/aggregates/jetty-all/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT ../../pom.xml 4.0.0 diff --git a/apache-jsp/pom.xml b/apache-jsp/pom.xml index ee9823a47b6..b2be4c9cbf4 100644 --- a/apache-jsp/pom.xml +++ b/apache-jsp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 apache-jsp diff --git a/apache-jstl/pom.xml b/apache-jstl/pom.xml index 963b0409522..eb86866831a 100644 --- a/apache-jstl/pom.xml +++ b/apache-jstl/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-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 b55e1e71edd..b30b980a82e 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.4.4.v20170414 + 9.4.5-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 4cef50a30df..82b1d984b66 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.4.4.v20170414 + 9.4.5-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 f15095dc0dd..959cf7ee561 100644 --- a/examples/async-rest/pom.xml +++ b/examples/async-rest/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.examples examples-parent - 9.4.4.v20170414 + 9.4.5-SNAPSHOT ../pom.xml 4.0.0 diff --git a/examples/embedded/pom.xml b/examples/embedded/pom.xml index e996881a1b9..a95138c5c37 100644 --- a/examples/embedded/pom.xml +++ b/examples/embedded/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.examples examples-parent - 9.4.4.v20170414 + 9.4.5-SNAPSHOT ../pom.xml 4.0.0 diff --git a/examples/pom.xml b/examples/pom.xml index f82069147b0..17faacc1101 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-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 a29efa870fd..8e015cb5e45 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.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 jetty-alpn-client diff --git a/jetty-alpn/jetty-alpn-java-client/pom.xml b/jetty-alpn/jetty-alpn-java-client/pom.xml index d1252fbab46..45ccf13e7cc 100644 --- a/jetty-alpn/jetty-alpn-java-client/pom.xml +++ b/jetty-alpn/jetty-alpn-java-client/pom.xml @@ -6,7 +6,7 @@ org.eclipse.jetty jetty-alpn-parent - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 diff --git a/jetty-alpn/jetty-alpn-java-server/pom.xml b/jetty-alpn/jetty-alpn-java-server/pom.xml index 9515d9db45c..c8ee341b790 100644 --- a/jetty-alpn/jetty-alpn-java-server/pom.xml +++ b/jetty-alpn/jetty-alpn-java-server/pom.xml @@ -5,7 +5,7 @@ org.eclipse.jetty jetty-alpn-parent - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 diff --git a/jetty-alpn/jetty-alpn-server/pom.xml b/jetty-alpn/jetty-alpn-server/pom.xml index 8203ae3afa5..024064d9f34 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.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 jetty-alpn-server diff --git a/jetty-alpn/pom.xml b/jetty-alpn/pom.xml index 1367480ddd6..dcfed9d2885 100644 --- a/jetty-alpn/pom.xml +++ b/jetty-alpn/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 jetty-alpn-parent diff --git a/jetty-annotations/pom.xml b/jetty-annotations/pom.xml index bb1a16132c2..93113e85d04 100644 --- a/jetty-annotations/pom.xml +++ b/jetty-annotations/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 jetty-annotations diff --git a/jetty-ant/pom.xml b/jetty-ant/pom.xml index a92c6d4418d..3be38cf21ea 100644 --- a/jetty-ant/pom.xml +++ b/jetty-ant/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 jetty-ant diff --git a/jetty-cdi/cdi-core/pom.xml b/jetty-cdi/cdi-core/pom.xml index 5ac9728576d..bf1965ac74c 100644 --- a/jetty-cdi/cdi-core/pom.xml +++ b/jetty-cdi/cdi-core/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.cdi jetty-cdi-parent - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 cdi-core diff --git a/jetty-cdi/cdi-full-servlet/pom.xml b/jetty-cdi/cdi-full-servlet/pom.xml index ab2f139b9f3..6052ed2940c 100644 --- a/jetty-cdi/cdi-full-servlet/pom.xml +++ b/jetty-cdi/cdi-full-servlet/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.cdi jetty-cdi-parent - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 cdi-full-servlet diff --git a/jetty-cdi/cdi-servlet/pom.xml b/jetty-cdi/cdi-servlet/pom.xml index a4473347082..39faea36717 100644 --- a/jetty-cdi/cdi-servlet/pom.xml +++ b/jetty-cdi/cdi-servlet/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.cdi jetty-cdi-parent - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 cdi-servlet diff --git a/jetty-cdi/cdi-websocket/pom.xml b/jetty-cdi/cdi-websocket/pom.xml index f172fe1f0d9..0caab5811cd 100644 --- a/jetty-cdi/cdi-websocket/pom.xml +++ b/jetty-cdi/cdi-websocket/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.cdi jetty-cdi-parent - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 cdi-websocket diff --git a/jetty-cdi/pom.xml b/jetty-cdi/pom.xml index a6a2a85ef32..e1f5a2645fc 100644 --- a/jetty-cdi/pom.xml +++ b/jetty-cdi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 org.eclipse.jetty.cdi diff --git a/jetty-cdi/test-cdi-webapp/pom.xml b/jetty-cdi/test-cdi-webapp/pom.xml index 1cba935d659..bc0d6abf5a0 100644 --- a/jetty-cdi/test-cdi-webapp/pom.xml +++ b/jetty-cdi/test-cdi-webapp/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.cdi jetty-cdi-parent - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 test-cdi-webapp diff --git a/jetty-client/pom.xml b/jetty-client/pom.xml index 25648299db2..5d217898f9f 100644 --- a/jetty-client/pom.xml +++ b/jetty-client/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 diff --git a/jetty-continuation/pom.xml b/jetty-continuation/pom.xml index 5a7056dd708..da2c11d83c9 100644 --- a/jetty-continuation/pom.xml +++ b/jetty-continuation/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 jetty-continuation diff --git a/jetty-deploy/pom.xml b/jetty-deploy/pom.xml index ee9fdf92b12..a94149ef4af 100644 --- a/jetty-deploy/pom.xml +++ b/jetty-deploy/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 jetty-deploy diff --git a/jetty-distribution/pom.xml b/jetty-distribution/pom.xml index 305baf655c2..05f48e35fc3 100644 --- a/jetty-distribution/pom.xml +++ b/jetty-distribution/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 jetty-distribution diff --git a/jetty-documentation/pom.xml b/jetty-documentation/pom.xml index 86eb6eb449e..cf0a9b247a7 100644 --- a/jetty-documentation/pom.xml +++ b/jetty-documentation/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT jetty-documentation Jetty :: Documentation diff --git a/jetty-fcgi/fcgi-client/pom.xml b/jetty-fcgi/fcgi-client/pom.xml index 6b12a3aef5f..d4c344f35bf 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.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 diff --git a/jetty-fcgi/fcgi-server/pom.xml b/jetty-fcgi/fcgi-server/pom.xml index 8ee4d223124..71f913d8ea7 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.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 diff --git a/jetty-fcgi/pom.xml b/jetty-fcgi/pom.xml index 0a846946498..337b9996679 100644 --- a/jetty-fcgi/pom.xml +++ b/jetty-fcgi/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 diff --git a/jetty-gcloud/jetty-gcloud-session-manager/pom.xml b/jetty-gcloud/jetty-gcloud-session-manager/pom.xml index 642cf929350..2fc9d6ca3d4 100644 --- a/jetty-gcloud/jetty-gcloud-session-manager/pom.xml +++ b/jetty-gcloud/jetty-gcloud-session-manager/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.gcloud gcloud-parent - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 diff --git a/jetty-gcloud/pom.xml b/jetty-gcloud/pom.xml index e3090ad6046..5861a509fe9 100644 --- a/jetty-gcloud/pom.xml +++ b/jetty-gcloud/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 diff --git a/jetty-home/pom.xml b/jetty-home/pom.xml index 30c5d22457b..40741463d67 100644 --- a/jetty-home/pom.xml +++ b/jetty-home/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 jetty-home diff --git a/jetty-http-spi/pom.xml b/jetty-http-spi/pom.xml index be1930ac2a7..cea6e6202db 100644 --- a/jetty-http-spi/pom.xml +++ b/jetty-http-spi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 jetty-http-spi diff --git a/jetty-http/pom.xml b/jetty-http/pom.xml index f357bdc13cb..4e7ceefed2f 100644 --- a/jetty-http/pom.xml +++ b/jetty-http/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 jetty-http diff --git a/jetty-http2/http2-alpn-tests/pom.xml b/jetty-http2/http2-alpn-tests/pom.xml index 9b9a42449e9..664b7aa3708 100644 --- a/jetty-http2/http2-alpn-tests/pom.xml +++ b/jetty-http2/http2-alpn-tests/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.http2 http2-parent - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 diff --git a/jetty-http2/http2-client/pom.xml b/jetty-http2/http2-client/pom.xml index 7f50484e7f6..c231690ae24 100644 --- a/jetty-http2/http2-client/pom.xml +++ b/jetty-http2/http2-client/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.http2 http2-parent - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 diff --git a/jetty-http2/http2-common/pom.xml b/jetty-http2/http2-common/pom.xml index d93f4886312..55706092c9d 100644 --- a/jetty-http2/http2-common/pom.xml +++ b/jetty-http2/http2-common/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.http2 http2-parent - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 diff --git a/jetty-http2/http2-hpack/pom.xml b/jetty-http2/http2-hpack/pom.xml index 649da55924e..b26aa2d2c0e 100644 --- a/jetty-http2/http2-hpack/pom.xml +++ b/jetty-http2/http2-hpack/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.http2 http2-parent - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 diff --git a/jetty-http2/http2-http-client-transport/pom.xml b/jetty-http2/http2-http-client-transport/pom.xml index 5b1ed8ad2c3..7ebda4b29a2 100644 --- a/jetty-http2/http2-http-client-transport/pom.xml +++ b/jetty-http2/http2-http-client-transport/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.http2 http2-parent - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 diff --git a/jetty-http2/http2-server/pom.xml b/jetty-http2/http2-server/pom.xml index a71e7564710..59853581d7d 100644 --- a/jetty-http2/http2-server/pom.xml +++ b/jetty-http2/http2-server/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.http2 http2-parent - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 diff --git a/jetty-http2/pom.xml b/jetty-http2/pom.xml index 5175cf0803b..c8762fdeb22 100644 --- a/jetty-http2/pom.xml +++ b/jetty-http2/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 diff --git a/jetty-infinispan/pom.xml b/jetty-infinispan/pom.xml index 3d6450aa929..2812f02099b 100644 --- a/jetty-infinispan/pom.xml +++ b/jetty-infinispan/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 jetty-infinispan diff --git a/jetty-io/pom.xml b/jetty-io/pom.xml index 3ba4466e98e..e34de66ba4d 100644 --- a/jetty-io/pom.xml +++ b/jetty-io/pom.xml @@ -2,7 +2,7 @@ jetty-project org.eclipse.jetty - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 jetty-io diff --git a/jetty-jaas/pom.xml b/jetty-jaas/pom.xml index cd41affad65..794f1c8eda0 100644 --- a/jetty-jaas/pom.xml +++ b/jetty-jaas/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 jetty-jaas diff --git a/jetty-jaspi/pom.xml b/jetty-jaspi/pom.xml index 079efef84ca..b78a4de823e 100644 --- a/jetty-jaspi/pom.xml +++ b/jetty-jaspi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 jetty-jaspi diff --git a/jetty-jmx/pom.xml b/jetty-jmx/pom.xml index 20ee74ca6e6..bcfac4eefab 100644 --- a/jetty-jmx/pom.xml +++ b/jetty-jmx/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 jetty-jmx diff --git a/jetty-jndi/pom.xml b/jetty-jndi/pom.xml index 1e0362237c2..d81e8fd8244 100644 --- a/jetty-jndi/pom.xml +++ b/jetty-jndi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 jetty-jndi diff --git a/jetty-jspc-maven-plugin/pom.xml b/jetty-jspc-maven-plugin/pom.xml index da7dfd22202..f8b0d9b1482 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.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 jetty-jspc-maven-plugin diff --git a/jetty-maven-plugin/pom.xml b/jetty-maven-plugin/pom.xml index 94b2fc04fcf..9fcd8d35668 100644 --- a/jetty-maven-plugin/pom.xml +++ b/jetty-maven-plugin/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 jetty-maven-plugin diff --git a/jetty-memcached/jetty-memcached-sessions/pom.xml b/jetty-memcached/jetty-memcached-sessions/pom.xml index db12d71f686..0ef4a349adf 100644 --- a/jetty-memcached/jetty-memcached-sessions/pom.xml +++ b/jetty-memcached/jetty-memcached-sessions/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.memcached memcached-parent - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 diff --git a/jetty-memcached/pom.xml b/jetty-memcached/pom.xml index 89424726860..ce5b1be8d8d 100644 --- a/jetty-memcached/pom.xml +++ b/jetty-memcached/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 diff --git a/jetty-nosql/pom.xml b/jetty-nosql/pom.xml index 57d27fc854e..70bc68ebdab 100644 --- a/jetty-nosql/pom.xml +++ b/jetty-nosql/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-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 2f66203b8ef..19a83c83866 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.4.4.v20170414 + 9.4.5-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 b76c42ef017..3f99227404f 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.4.4.v20170414 + 9.4.5-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 a212f116cbb..e39141377c9 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.4.4.v20170414 + 9.4.5-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 a30707b886e..83adc145dd1 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.4.4.v20170414 + 9.4.5-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 40128650261..2b469659514 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.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 jetty-httpservice diff --git a/jetty-osgi/pom.xml b/jetty-osgi/pom.xml index f56b299e83d..15f868ac040 100644 --- a/jetty-osgi/pom.xml +++ b/jetty-osgi/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 diff --git a/jetty-osgi/test-jetty-osgi-context/pom.xml b/jetty-osgi/test-jetty-osgi-context/pom.xml index 6997e84cadc..9950b7b9017 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.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 test-jetty-osgi-context diff --git a/jetty-osgi/test-jetty-osgi-fragment/pom.xml b/jetty-osgi/test-jetty-osgi-fragment/pom.xml index 17ba681be9c..f0575da28fc 100644 --- a/jetty-osgi/test-jetty-osgi-fragment/pom.xml +++ b/jetty-osgi/test-jetty-osgi-fragment/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT ../pom.xml 4.0.0 diff --git a/jetty-osgi/test-jetty-osgi-server/pom.xml b/jetty-osgi/test-jetty-osgi-server/pom.xml index 1664c3e9250..d24fc258b2a 100644 --- a/jetty-osgi/test-jetty-osgi-server/pom.xml +++ b/jetty-osgi/test-jetty-osgi-server/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 test-jetty-osgi-server diff --git a/jetty-osgi/test-jetty-osgi-webapp/pom.xml b/jetty-osgi/test-jetty-osgi-webapp/pom.xml index 7fdeacc7e90..058f5e030f8 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.4.4.v20170414 + 9.4.5-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 e604a476340..7f6674b8d7d 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.4.4.v20170414 + 9.4.5-SNAPSHOT ../pom.xml 4.0.0 diff --git a/jetty-plus/pom.xml b/jetty-plus/pom.xml index 0134f75ed45..795d3d5a9a1 100644 --- a/jetty-plus/pom.xml +++ b/jetty-plus/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 jetty-plus diff --git a/jetty-proxy/pom.xml b/jetty-proxy/pom.xml index fb808939830..62ae184e52e 100644 --- a/jetty-proxy/pom.xml +++ b/jetty-proxy/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 jetty-proxy diff --git a/jetty-quickstart/pom.xml b/jetty-quickstart/pom.xml index 3a8b58e63e2..5a8fce08505 100644 --- a/jetty-quickstart/pom.xml +++ b/jetty-quickstart/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 org.eclipse.jetty diff --git a/jetty-rewrite/pom.xml b/jetty-rewrite/pom.xml index b6bc98d6a8e..276945e5361 100644 --- a/jetty-rewrite/pom.xml +++ b/jetty-rewrite/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 jetty-rewrite diff --git a/jetty-runner/pom.xml b/jetty-runner/pom.xml index d28319ee66a..7afbbebb063 100644 --- a/jetty-runner/pom.xml +++ b/jetty-runner/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 jetty-runner diff --git a/jetty-security/pom.xml b/jetty-security/pom.xml index 6c10a37915e..6b3a8a65b0a 100644 --- a/jetty-security/pom.xml +++ b/jetty-security/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 jetty-security diff --git a/jetty-server/pom.xml b/jetty-server/pom.xml index 48bb08babd2..e8d5998549e 100644 --- a/jetty-server/pom.xml +++ b/jetty-server/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 jetty-server diff --git a/jetty-servlet/pom.xml b/jetty-servlet/pom.xml index ff832d27bf5..c6badbe4092 100644 --- a/jetty-servlet/pom.xml +++ b/jetty-servlet/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 jetty-servlet diff --git a/jetty-servlets/pom.xml b/jetty-servlets/pom.xml index 85558e78165..9230defdd0d 100644 --- a/jetty-servlets/pom.xml +++ b/jetty-servlets/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 jetty-servlets diff --git a/jetty-spring/pom.xml b/jetty-spring/pom.xml index 82bb8b2a4b6..10dd4b4bc96 100644 --- a/jetty-spring/pom.xml +++ b/jetty-spring/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 jetty-spring diff --git a/jetty-start/pom.xml b/jetty-start/pom.xml index 179463a6c2e..08ed7abee9b 100644 --- a/jetty-start/pom.xml +++ b/jetty-start/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 jetty-start diff --git a/jetty-unixsocket/pom.xml b/jetty-unixsocket/pom.xml index 646c7f2146d..d0d4f1c1ac1 100644 --- a/jetty-unixsocket/pom.xml +++ b/jetty-unixsocket/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 jetty-unixsocket diff --git a/jetty-util-ajax/pom.xml b/jetty-util-ajax/pom.xml index 6c364e95fca..c4243b0eab1 100644 --- a/jetty-util-ajax/pom.xml +++ b/jetty-util-ajax/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 jetty-util-ajax diff --git a/jetty-util/pom.xml b/jetty-util/pom.xml index cc16e5e2359..5b492b98abf 100644 --- a/jetty-util/pom.xml +++ b/jetty-util/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 jetty-util diff --git a/jetty-webapp/pom.xml b/jetty-webapp/pom.xml index 0cc6d62a13b..736fea38a37 100644 --- a/jetty-webapp/pom.xml +++ b/jetty-webapp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-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 727625cede3..c635044e383 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.4.4.v20170414 + 9.4.5-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 fe28ee012b7..b0c7638dfce 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.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/pom.xml b/jetty-websocket/pom.xml index 082705b857f..9f98baddac9 100644 --- a/jetty-websocket/pom.xml +++ b/jetty-websocket/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/websocket-api/pom.xml b/jetty-websocket/websocket-api/pom.xml index 0c717090ec8..a12c73bfa94 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.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/websocket-client/pom.xml b/jetty-websocket/websocket-client/pom.xml index 1fb816e62b7..ccaa50ed168 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.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/websocket-common/pom.xml b/jetty-websocket/websocket-common/pom.xml index 20ce8933552..1ceaad87953 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.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/websocket-server/pom.xml b/jetty-websocket/websocket-server/pom.xml index 8f82bcf5dbd..664be9115ba 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.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/websocket-servlet/pom.xml b/jetty-websocket/websocket-servlet/pom.xml index 6afdf9c8643..a1bbf1f7eab 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.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 diff --git a/jetty-xml/pom.xml b/jetty-xml/pom.xml index 3d7f124b68c..f4b682d2254 100644 --- a/jetty-xml/pom.xml +++ b/jetty-xml/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 jetty-xml diff --git a/pom.xml b/pom.xml index 2ce5f8ce806..baf709ed44f 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ 4.0.0 org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT Jetty :: Project The Eclipse Jetty Project pom diff --git a/tests/pom.xml b/tests/pom.xml index b7282c0b921..dc4bdb785c8 100644 --- a/tests/pom.xml +++ b/tests/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty jetty-project - 9.4.4.v20170414 + 9.4.5-SNAPSHOT ../pom.xml org.eclipse.jetty.tests diff --git a/tests/test-continuation/pom.xml b/tests/test-continuation/pom.xml index 6ce93545418..9c1bfd585dd 100644 --- a/tests/test-continuation/pom.xml +++ b/tests/test-continuation/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests tests-parent - 9.4.4.v20170414 + 9.4.5-SNAPSHOT ../pom.xml 4.0.0 diff --git a/tests/test-http-client-transport/pom.xml b/tests/test-http-client-transport/pom.xml index 207eeb022b6..a504b24ff64 100644 --- a/tests/test-http-client-transport/pom.xml +++ b/tests/test-http-client-transport/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests tests-parent - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 diff --git a/tests/test-integration/pom.xml b/tests/test-integration/pom.xml index 2f9d806105d..001ecd7cf79 100644 --- a/tests/test-integration/pom.xml +++ b/tests/test-integration/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests tests-parent - 9.4.4.v20170414 + 9.4.5-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 3216d572000..09d73bb281b 100644 --- a/tests/test-jmx/jmx-webapp-it/pom.xml +++ b/tests/test-jmx/jmx-webapp-it/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-jmx-parent - 9.4.4.v20170414 + 9.4.5-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 f6f7f9997d8..d8923a2b648 100644 --- a/tests/test-jmx/jmx-webapp/pom.xml +++ b/tests/test-jmx/jmx-webapp/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-jmx-parent - 9.4.4.v20170414 + 9.4.5-SNAPSHOT jmx-webapp war diff --git a/tests/test-jmx/pom.xml b/tests/test-jmx/pom.xml index 3875f193c8a..c6e866b4993 100644 --- a/tests/test-jmx/pom.xml +++ b/tests/test-jmx/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests tests-parent - 9.4.4.v20170414 + 9.4.5-SNAPSHOT 4.0.0 test-jmx-parent diff --git a/tests/test-loginservice/pom.xml b/tests/test-loginservice/pom.xml index 1fee6f8deff..9c851e4af15 100644 --- a/tests/test-loginservice/pom.xml +++ b/tests/test-loginservice/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests tests-parent - 9.4.4.v20170414 + 9.4.5-SNAPSHOT test-loginservice Jetty Tests :: Login Service diff --git a/tests/test-quickstart/pom.xml b/tests/test-quickstart/pom.xml index 975d6f4f8b4..9658f868839 100644 --- a/tests/test-quickstart/pom.xml +++ b/tests/test-quickstart/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests tests-parent - 9.4.4.v20170414 + 9.4.5-SNAPSHOT ../pom.xml 4.0.0 diff --git a/tests/test-sessions/pom.xml b/tests/test-sessions/pom.xml index 1e437dbe1ce..4fbdff395e3 100644 --- a/tests/test-sessions/pom.xml +++ b/tests/test-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests tests-parent - 9.4.4.v20170414 + 9.4.5-SNAPSHOT test-sessions-parent Jetty Tests :: Sessions :: Parent diff --git a/tests/test-sessions/test-file-sessions/pom.xml b/tests/test-sessions/test-file-sessions/pom.xml index 90cdadbf09a..961a908b0d8 100644 --- a/tests/test-sessions/test-file-sessions/pom.xml +++ b/tests/test-sessions/test-file-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.4.4.v20170414 + 9.4.5-SNAPSHOT test-file-sessions Jetty Tests :: Sessions :: File diff --git a/tests/test-sessions/test-gcloud-sessions/pom.xml b/tests/test-sessions/test-gcloud-sessions/pom.xml index a5caf2658e2..4a0d104e545 100644 --- a/tests/test-sessions/test-gcloud-sessions/pom.xml +++ b/tests/test-sessions/test-gcloud-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.4.4.v20170414 + 9.4.5-SNAPSHOT test-gcloud-sessions Jetty Tests :: Sessions :: GCloud diff --git a/tests/test-sessions/test-hash-sessions/pom.xml b/tests/test-sessions/test-hash-sessions/pom.xml index face8aea460..c190f7650be 100644 --- a/tests/test-sessions/test-hash-sessions/pom.xml +++ b/tests/test-sessions/test-hash-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.4.4.v20170414 + 9.4.5-SNAPSHOT test-hash-sessions Jetty Tests :: Sessions :: Hash diff --git a/tests/test-sessions/test-infinispan-sessions/pom.xml b/tests/test-sessions/test-infinispan-sessions/pom.xml index b5d60504e56..2c41539fe6a 100644 --- a/tests/test-sessions/test-infinispan-sessions/pom.xml +++ b/tests/test-sessions/test-infinispan-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.4.4.v20170414 + 9.4.5-SNAPSHOT test-infinispan-sessions Jetty Tests :: Sessions :: Infinispan diff --git a/tests/test-sessions/test-jdbc-sessions/pom.xml b/tests/test-sessions/test-jdbc-sessions/pom.xml index d7a8ed6ed13..91b9adea8f3 100644 --- a/tests/test-sessions/test-jdbc-sessions/pom.xml +++ b/tests/test-sessions/test-jdbc-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.4.4.v20170414 + 9.4.5-SNAPSHOT test-jdbc-sessions Jetty Tests :: Sessions :: JDBC diff --git a/tests/test-sessions/test-memcached-sessions/pom.xml b/tests/test-sessions/test-memcached-sessions/pom.xml index f0e557c8fe0..0a449dac248 100644 --- a/tests/test-sessions/test-memcached-sessions/pom.xml +++ b/tests/test-sessions/test-memcached-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.4.4.v20170414 + 9.4.5-SNAPSHOT test-memcached-sessions Jetty Tests :: Sessions :: Memcached diff --git a/tests/test-sessions/test-mongodb-sessions/pom.xml b/tests/test-sessions/test-mongodb-sessions/pom.xml index 28730998637..d3e55bd0f50 100644 --- a/tests/test-sessions/test-mongodb-sessions/pom.xml +++ b/tests/test-sessions/test-mongodb-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.4.4.v20170414 + 9.4.5-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 fe8d103d1a4..369cce42f73 100644 --- a/tests/test-sessions/test-sessions-common/pom.xml +++ b/tests/test-sessions/test-sessions-common/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.4.4.v20170414 + 9.4.5-SNAPSHOT test-sessions-common Jetty Tests :: Sessions :: Common diff --git a/tests/test-webapps/pom.xml b/tests/test-webapps/pom.xml index f4d749f151c..50ae6cd2014 100644 --- a/tests/test-webapps/pom.xml +++ b/tests/test-webapps/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests tests-parent - 9.4.4.v20170414 + 9.4.5-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 6c4e1a3acb1..f2ef13e9b33 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.4.4.v20170414 + 9.4.5-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 2537a1de3a7..fc151a5546c 100644 --- a/tests/test-webapps/test-jetty-webapp/pom.xml +++ b/tests/test-webapps/test-jetty-webapp/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.4.4.v20170414 + 9.4.5-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 201abd8227c..791f785c590 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.4.4.v20170414 + 9.4.5-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 3ca70ca9820..79c84d8adaf 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.4.4.v20170414 + 9.4.5-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 9ee7ad364ae..d5c84546559 100644 --- a/tests/test-webapps/test-proxy-webapp/pom.xml +++ b/tests/test-webapps/test-proxy-webapp/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.4.4.v20170414 + 9.4.5-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 4e08ea61590..ca90d0cf110 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.4.4.v20170414 + 9.4.5-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 92ee79340bd..fb8ff72837f 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.4.4.v20170414 + 9.4.5-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 1daec8ce9fd..afe2e4018f3 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.4.4.v20170414 + 9.4.5-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 efeb162daeb..fa6a9b5f0b5 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.4.4.v20170414 + 9.4.5-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 8e6f264117f..7757e55870f 100644 --- a/tests/test-webapps/test-webapp-rfc2616/pom.xml +++ b/tests/test-webapps/test-webapp-rfc2616/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.4.4.v20170414 + 9.4.5-SNAPSHOT test-webapp-rfc2616 Jetty Tests :: WebApp :: RFC2616 From 7e61570481a7bd8edcd2203838456ea467833160 Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Wed, 19 Apr 2017 13:13:15 +1000 Subject: [PATCH 27/80] Issue #1480 Optimised canonicalPath implementation --- .../java/org/eclipse/jetty/util/URIUtil.java | 120 +++++++++++++----- .../org/eclipse/jetty/util/URIUtilTest.java | 19 ++- 2 files changed, 105 insertions(+), 34 deletions(-) diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/URIUtil.java b/jetty-util/src/main/java/org/eclipse/jetty/util/URIUtil.java index 338e076da79..826533f115a 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/URIUtil.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/URIUtil.java @@ -22,8 +22,6 @@ import java.net.URI; import java.net.URISyntaxException; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; -import java.util.*; -import java.util.regex.Pattern; import org.eclipse.jetty.util.Utf8Appendable.NotUtf8Exception; import org.eclipse.jetty.util.log.Log; @@ -47,7 +45,6 @@ public class URIUtil public static final String SLASH="/"; public static final String HTTP="http"; public static final String HTTPS="https"; - private static final Pattern __PATH_SPLIT = Pattern.compile("(?<=\\/)"); // Use UTF-8 as per http://www.w3.org/TR/html40/appendix/notes.html#non-ascii-chars public static final Charset __CHARSET=StandardCharsets.UTF_8 ; @@ -554,40 +551,105 @@ public class URIUtil */ public static String canonicalPath(String path) { - if (path == null || path.isEmpty() || !path.contains(".")) + if (path == null || path.isEmpty()) return path; - if(path.startsWith("/..")) - return null; - - List directories = new ArrayList<>(); - Collections.addAll(directories, __PATH_SPLIT.split(path)); + boolean slash = true; + int end = path.length(); + int i = 0; - for(ListIterator iterator = directories.listIterator(); iterator.hasNext();) + loop: + while (i0) + canonical.append('.'); + if (c!='\0') + canonical.append(c); + } + + slash = true; + dots = 0; + break; + + case '.': + if (dots>0) + dots++; + else if (slash) + dots = 1; + slash = false; + break; + + default: + while (dots-->0) + canonical.append('.'); + canonical.append(c); + dots = 0; + slash = false; + } + + i++; + } + return canonical.toString(); } /* ------------------------------------------------------------ */ diff --git a/jetty-util/src/test/java/org/eclipse/jetty/util/URIUtilTest.java b/jetty-util/src/test/java/org/eclipse/jetty/util/URIUtilTest.java index 5c03e3be576..02d0ab6cf28 100644 --- a/jetty-util/src/test/java/org/eclipse/jetty/util/URIUtilTest.java +++ b/jetty-util/src/test/java/org/eclipse/jetty/util/URIUtilTest.java @@ -239,13 +239,15 @@ public class URIUtilTest {"/aaa///bbb/","/aaa///bbb/"}, {"/aaa/./bbb/","/aaa/bbb/"}, {"/aaa/../bbb/","/bbb/"}, + {"/aaa..bbb/","/aaa..bbb/"}, + {"/aaa/..bbb/","/aaa/..bbb/"}, {"/aaa/./../bbb/","/bbb/"}, {"/aaa/bbb/ccc/../../ddd/","/aaa/ddd/"}, {"./bbb/","bbb/"}, {"./aaa/../bbb/","bbb/"}, {"./",""}, - {".//",".//"}, - {".///",".///"}, + {".//","/"}, + {".///","//"}, {"/.","/"}, {"//.","//"}, {"///.","///"}, @@ -280,13 +282,20 @@ public class URIUtilTest {"a/../..",null}, {"/foo/../../bar",null}, {"/foo/../bar//","/bar//"}, + {"/....","/...."}, }; for (int t=0;t Date: Wed, 19 Apr 2017 15:27:46 +0200 Subject: [PATCH 28/80] Update Weld & related versions in CDI module Signed-off-by: Tomas Remes --- .../cdi-servlet/src/main/config/modules/cdi.mod | 15 +++++++-------- jetty-cdi/pom.xml | 2 +- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/jetty-cdi/cdi-servlet/src/main/config/modules/cdi.mod b/jetty-cdi/cdi-servlet/src/main/config/modules/cdi.mod index 68a926d62f2..0b1236fcae5 100644 --- a/jetty-cdi/cdi-servlet/src/main/config/modules/cdi.mod +++ b/jetty-cdi/cdi-servlet/src/main/config/modules/cdi.mod @@ -13,14 +13,13 @@ lib/cdi/ maven://javax.enterprise/cdi-api/1.2|lib/cdi/javax.enterprise.cdi-api-1.2.jar maven://javax.interceptor/javax.interceptor-api/1.2|lib/cdi/javax.interceptor-api-1.2.jar maven://javax.inject/javax.inject/1|lib/cdi/javax.inject-1.0.jar -maven://org.jboss.weld.servlet/weld-servlet-core/2.2.9.Final|lib/cdi/weld-servlet-core-2.2.9.Final.jar -maven://org.jboss.weld.environment/weld-environment-common/2.2.9.Final|lib/cdi/weld-environment-common-2.2.9.Final.jar -maven://org.jboss.weld/weld-core-impl/2.2.9.Final|lib/cdi/weld-core-impl-2.2.9.Final.jar -maven://org.jboss.classfilewriter/jboss-classfilewriter/1.0.5.Final|lib/cdi/jboss-classfilewriter-1.0.5.Final.jar -maven://com.google.guava/guava/13.0.1|lib/cdi/com.google.guava.guava-13.0.1.jar -maven://org.jboss.weld/weld-spi/2.2.SP3|lib/cdi/weld-spi-2.2.SP3.jar -maven://org.jboss.weld/weld-api/2.2.SP3|lib/cdi/weld-api-2.2.SP3.jar -maven://org.jboss.logging/jboss-logging/3.1.3.GA|lib/cdi/jboss-logging-3.1.3.GA.jar +maven://org.jboss.weld.servlet/weld-servlet-core/2.4.3.Final|lib/cdi/weld-servlet-core-2.4.3.Final.jar +maven://org.jboss.weld.environment/weld-environment-common/2.4.3.Final|lib/cdi/weld-environment-common-2.4.3.Final.jar +maven://org.jboss.weld/weld-core-impl/2.4.3.Final|lib/cdi/weld-core-impl-2.4.3.Final.jar +maven://org.jboss.classfilewriter/jboss-classfilewriter/1.1.2.Final|lib/cdi/jboss-classfilewriter-1.1.2.Final.jar +maven://org.jboss.weld/weld-spi/2.4.SP1|lib/cdi/weld-spi-2.4.SP1.jar +maven://org.jboss.weld/weld-api/2.4.SP1|lib/cdi/weld-api-2.4.SP1.jar +maven://org.jboss.logging/jboss-logging/3.2.1.Final|lib/cdi/jboss-logging-3.2.1.Final.jar [lib] diff --git a/jetty-cdi/pom.xml b/jetty-cdi/pom.xml index 93826b69529..1e27cd25a8c 100644 --- a/jetty-cdi/pom.xml +++ b/jetty-cdi/pom.xml @@ -11,7 +11,7 @@ http://www.eclipse.org/jetty pom - 2.2.9.Final + 2.4.3.Final From a69a532b094b93f2bbadba1ab02786bafeb1374f Mon Sep 17 00:00:00 2001 From: WalkerWatch Date: Wed, 19 Apr 2017 14:05:51 -0400 Subject: [PATCH 29/80] Updating for new Javadoc repository. Signed-off-by: WalkerWatch --- jetty-documentation/pom.xml | 2 +- .../configuring/deploying/deployment-processing-webapps.adoc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/jetty-documentation/pom.xml b/jetty-documentation/pom.xml index cf0a9b247a7..ebaa3b7bc37 100644 --- a/jetty-documentation/pom.xml +++ b/jetty-documentation/pom.xml @@ -58,7 +58,7 @@ true true ${project.version} - http://download.eclipse.org/jetty/stable-9/apidocs + http://www.eclipse.org/jetty/javadoc/${project.version} http://download.eclipse.org/jetty/stable-9/xref ${basedir}/.. https://github.com/eclipse/jetty.project/tree/jetty-9.4.x diff --git a/jetty-documentation/src/main/asciidoc/configuring/deploying/deployment-processing-webapps.adoc b/jetty-documentation/src/main/asciidoc/configuring/deploying/deployment-processing-webapps.adoc index ad8bcabe93a..da252d41091 100644 --- a/jetty-documentation/src/main/asciidoc/configuring/deploying/deployment-processing-webapps.adoc +++ b/jetty-documentation/src/main/asciidoc/configuring/deploying/deployment-processing-webapps.adoc @@ -52,7 +52,7 @@ META-INF/web-fragment.xml ===== Anatomy of a Configuration Class -A Configuration class is called 5 times in different phases of the link:http://download.eclipse.org/jetty/stable-9/apidocs/org/eclipse/jetty/webapp/WebAppContext.html[`WebAppContext's`] lifecycle: +A Configuration class is called 5 times in different phases of the link:{JDURL}/org/eclipse/jetty/webapp/WebAppContext.html[`WebAppContext's`] lifecycle: preConfigure:: As the `WebAppContext` is starting up this phase is executed. From ad2fe2730362658713eca51ecf4f282cd93dfb59 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Wed, 19 Apr 2017 12:16:37 -0700 Subject: [PATCH 30/80] Improving javadoc --- .../main/java/org/eclipse/jetty/util/URIUtil.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/URIUtil.java b/jetty-util/src/main/java/org/eclipse/jetty/util/URIUtil.java index 826533f115a..47b42e54f67 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/URIUtil.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/URIUtil.java @@ -543,11 +543,16 @@ public class URIUtil } /* ------------------------------------------------------------ */ - /** Convert a path to a cananonical form. - * All instances of "." and ".." are factored out. Null is returned - * if the path tries to .. above its root. - * @param path the path to convert - * @return path or null. + /** + * Convert a path to a cananonical form. + *

+ * All instances of "." and ".." are factored out. + *

+ *

+ * Null is returned if the path tries to .. above its root. + *

+ * @param path the path to convert (expects URI/URL form, decoded, and with path separators '/') + * @return the canonical path, or null if path traversal above root. */ public static String canonicalPath(String path) { From f64b0409ff5bb260986a1767cfd2063e4910a325 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Wed, 19 Apr 2017 12:16:42 -0700 Subject: [PATCH 31/80] Issue #1480 - improving canonicalPath test cases --- .../jetty/util/URIUtilCanonicalPathTest.java | 150 ++++++++++++++++++ .../org/eclipse/jetty/util/URIUtilTest.java | 74 --------- 2 files changed, 150 insertions(+), 74 deletions(-) create mode 100644 jetty-util/src/test/java/org/eclipse/jetty/util/URIUtilCanonicalPathTest.java diff --git a/jetty-util/src/test/java/org/eclipse/jetty/util/URIUtilCanonicalPathTest.java b/jetty-util/src/test/java/org/eclipse/jetty/util/URIUtilCanonicalPathTest.java new file mode 100644 index 00000000000..5c28824acce --- /dev/null +++ b/jetty-util/src/test/java/org/eclipse/jetty/util/URIUtilCanonicalPathTest.java @@ -0,0 +1,150 @@ +// +// ======================================================================== +// Copyright (c) 1995-2017 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.util; + +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.nullValue; +import static org.junit.Assert.assertThat; +import static org.junit.Assume.assumeFalse; + +import java.util.Arrays; +import java.util.List; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; + +@RunWith(Parameterized.class) +public class URIUtilCanonicalPathTest +{ + @Parameterized.Parameters(name = "{0}") + public static List data() + { + String[][] canonical = + { + // Basic examples (no changes expected) + {"/hello.html", "/hello.html"}, + {"/css/main.css", "/css/main.css"}, + {"/", "/"}, + {"", ""}, + {"/aaa/bbb/", "/aaa/bbb/"}, + {"/aaa/bbb", "/aaa/bbb"}, + {"aaa/bbb", "aaa/bbb"}, + {"aaa/", "aaa/"}, + {"aaa", "aaa"}, + {"a", "a"}, + {"a/", "a/"}, + + // Extra slashes + {"/aaa//bbb/", "/aaa//bbb/"}, + {"/aaa//bbb", "/aaa//bbb"}, + {"/aaa///bbb/", "/aaa///bbb/"}, + + // Path traversal with current references "./" + {"/aaa/./bbb/", "/aaa/bbb/"}, + {"/aaa/./bbb", "/aaa/bbb"}, + {"./bbb/", "bbb/"}, + {"./aaa/../bbb/", "bbb/"}, + {"/foo/.", "/foo/"}, + {"./", ""}, + {".", ""}, + {".//", "/"}, + {".///", "//"}, + {"/.", "/"}, + {"//.", "//"}, + {"///.", "///"}, + + // Path traversal directory (but not past root) + {"/aaa/../bbb/", "/bbb/"}, + {"/aaa/../bbb", "/bbb"}, + {"/aaa..bbb/", "/aaa..bbb/"}, + {"/aaa..bbb", "/aaa..bbb"}, + {"/aaa/..bbb/", "/aaa/..bbb/"}, + {"/aaa/..bbb", "/aaa/..bbb"}, + {"/aaa/./../bbb/", "/bbb/"}, + {"/aaa/./../bbb", "/bbb"}, + {"/aaa/bbb/ccc/../../ddd/", "/aaa/ddd/"}, + {"/aaa/bbb/ccc/../../ddd", "/aaa/ddd"}, + {"/foo/../bar//", "/bar//"}, + {"/ctx/../bar/../ctx/all/index.txt", "/ctx/all/index.txt"}, + {"/down/.././index.html", "/index.html"}, + + // Path traversal up past root + {"..", null}, + {"./..", null}, + {"aaa/../..", null}, + {"/foo/bar/../../..", null}, + {"/../foo", null}, + {"a/.", "a/"}, + {"a/..", ""}, + {"a/../..", null}, + {"/foo/../../bar", null}, + + // Query parameter specifics + {"/ctx/dir?/../index.html", "/ctx/dir?/../index.html"}, + {"/get-files?file=/etc/passwd", "/get-files?file=/etc/passwd"}, + {"/get-files?file=../../../../../passwd", "/get-files?file=../../../../../passwd"}, + + // Known windows shell quirks + {"file.txt ", "file.txt "}, // with spaces + {"file.txt...", "file.txt..."}, // extra dots ignored by windows + {"file.txt\u0000", "file.txt\u0000"}, // null terminated is ignored by windows + {"file.txt\"\"\"\"", "file.txt\"\"\"\""}, // extra quotes ignored by windows + {"file.txt<<<>>><", "file.txt<<<>>><"}, // angle brackets at end of path ignored by windows + {"././././././file.txt", "file.txt"}, + + // Oddball requests that look like path traversal, but are not + {"/....", "/...."}, + {"/..../ctx/..../blah/logo.jpg", "/..../ctx/..../blah/logo.jpg"}, + + // paths with encoded segments should remain encoded + // canonicalPath() is not responsible for decoding characters + {"%2e%2e/", "%2e%2e/"}, + }; + return Arrays.asList(canonical); + } + + @Parameterized.Parameter(0) + public String input; + + @Parameterized.Parameter(1) + public String expectedResult; + + @Test + public void testCanonicalPath() + { + assertThat("Canonical", URIUtil.canonicalPath(input), is(expectedResult)); + } + + @Test + public void testCanonicalPathWithQuery() + { + // Skip this variation if the actual test contains a query already + assumeFalse(input.contains("?")); + + if (expectedResult == null) + { + assertThat("Canonical with Query", URIUtil.canonicalPath(input + "?a=1"), nullValue()); + } + else + { + assertThat("Canonical", URIUtil.canonicalPath(input + "?a=1"), is(expectedResult + "?a=1")); + } + } +} diff --git a/jetty-util/src/test/java/org/eclipse/jetty/util/URIUtilTest.java b/jetty-util/src/test/java/org/eclipse/jetty/util/URIUtilTest.java index 02d0ab6cf28..171e80340ad 100644 --- a/jetty-util/src/test/java/org/eclipse/jetty/util/URIUtilTest.java +++ b/jetty-util/src/test/java/org/eclipse/jetty/util/URIUtilTest.java @@ -27,8 +27,6 @@ import static org.junit.Assert.assertTrue; import java.net.URI; import java.nio.charset.StandardCharsets; -import org.hamcrest.Matchers; -import org.junit.Assert; import org.junit.Test; @@ -228,78 +226,6 @@ public class URIUtilTest assertFalse(URIUtil.equalsIgnoreEncodings("/foo2fbar","/foo/bar")); } - /* ------------------------------------------------------------ */ - @Test - public void testCanonicalPath() - { - String[][] canonical = - { - {"/aaa/bbb/","/aaa/bbb/"}, - {"/aaa//bbb/","/aaa//bbb/"}, - {"/aaa///bbb/","/aaa///bbb/"}, - {"/aaa/./bbb/","/aaa/bbb/"}, - {"/aaa/../bbb/","/bbb/"}, - {"/aaa..bbb/","/aaa..bbb/"}, - {"/aaa/..bbb/","/aaa/..bbb/"}, - {"/aaa/./../bbb/","/bbb/"}, - {"/aaa/bbb/ccc/../../ddd/","/aaa/ddd/"}, - {"./bbb/","bbb/"}, - {"./aaa/../bbb/","bbb/"}, - {"./",""}, - {".//","/"}, - {".///","//"}, - {"/.","/"}, - {"//.","//"}, - {"///.","///"}, - {"/","/"}, - {"aaa/bbb","aaa/bbb"}, - {"aaa/","aaa/"}, - {"aaa","aaa"}, - {"/aaa/bbb","/aaa/bbb"}, - {"/aaa//bbb","/aaa//bbb"}, - {"/aaa/./bbb","/aaa/bbb"}, - {"/aaa/../bbb","/bbb"}, - {"/aaa/./../bbb","/bbb"}, - {"./bbb","bbb"}, - {"./aaa/../bbb","bbb"}, - {"aaa/bbb/..","aaa/"}, - {"aaa/bbb/../","aaa/"}, - {"/aaa//../bbb","/aaa/bbb"}, - {"/aaa/./../bbb","/bbb"}, - {"./",""}, - {".",""}, - {"",""}, - {"..",null}, - {"./..",null}, - {"aaa/../..",null}, - {"/foo/bar/../../..",null}, - {"/../foo",null}, - {"/foo/.","/foo/"}, - {"a","a"}, - {"a/","a/"}, - {"a/.","a/"}, - {"a/..",""}, - {"a/../..",null}, - {"/foo/../../bar",null}, - {"/foo/../bar//","/bar//"}, - {"/....","/...."}, - }; - - for (int t=0;t Date: Wed, 19 Apr 2017 15:40:31 -0400 Subject: [PATCH 32/80] Updating documentation pom.xml for Javadoc Signed-off-by: WalkerWatch --- jetty-documentation/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jetty-documentation/pom.xml b/jetty-documentation/pom.xml index dd5f77ba373..427b4ceb0f7 100644 --- a/jetty-documentation/pom.xml +++ b/jetty-documentation/pom.xml @@ -71,7 +71,7 @@ true true ${project.version} - http://download.eclipse.org/jetty/stable-9/apidocs + http://www.eclipse.org/jetty/javadoc/${project.version} http://download.eclipse.org/jetty/stable-9/xref ${basedir}/.. https://github.com/eclipse/jetty.project/tree/jetty-9.3.x From a85da08fd4b996aa27be31f47c3633214b7ebf1c Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Thu, 20 Apr 2017 08:10:44 +1000 Subject: [PATCH 33/80] Issue #1480 - Fixed single dot handling --- jetty-util/src/main/java/org/eclipse/jetty/util/URIUtil.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/URIUtil.java b/jetty-util/src/main/java/org/eclipse/jetty/util/URIUtil.java index 47b42e54f67..5895ad40bf7 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/URIUtil.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/URIUtil.java @@ -641,6 +641,8 @@ public class URIUtil dots++; else if (slash) dots = 1; + else + canonical.append('.'); slash = false; break; From 9ce983229348cfad9984239bc7fe4c2811cfc271 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Wed, 19 Apr 2017 15:14:44 -0700 Subject: [PATCH 34/80] Issue #1480 - more testcase updates --- .../java/org/eclipse/jetty/util/URIUtilCanonicalPathTest.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/jetty-util/src/test/java/org/eclipse/jetty/util/URIUtilCanonicalPathTest.java b/jetty-util/src/test/java/org/eclipse/jetty/util/URIUtilCanonicalPathTest.java index 5c28824acce..9d80c3c8275 100644 --- a/jetty-util/src/test/java/org/eclipse/jetty/util/URIUtilCanonicalPathTest.java +++ b/jetty-util/src/test/java/org/eclipse/jetty/util/URIUtilCanonicalPathTest.java @@ -104,7 +104,9 @@ public class URIUtilCanonicalPathTest // Known windows shell quirks {"file.txt ", "file.txt "}, // with spaces {"file.txt...", "file.txt..."}, // extra dots ignored by windows - {"file.txt\u0000", "file.txt\u0000"}, // null terminated is ignored by windows + // BREAKS Jenkins: {"file.txt\u0000", "file.txt\u0000"}, // null terminated is ignored by windows + {"file.txt\r", "file.txt\r"}, // CR terminated is ignored by windows + {"file.txt\n", "file.txt\n"}, // LF terminated is ignored by windows {"file.txt\"\"\"\"", "file.txt\"\"\"\""}, // extra quotes ignored by windows {"file.txt<<<>>><", "file.txt<<<>>><"}, // angle brackets at end of path ignored by windows {"././././././file.txt", "file.txt"}, From f5631a9f1b6990ce25898b6f28a90f84c934b43a Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Thu, 20 Apr 2017 09:38:50 +1000 Subject: [PATCH 35/80] Fix #1486 --- .../eclipse/jetty/servlet/DefaultServlet.java | 4 +- .../jetty/servlet/DefaultServletTest.java | 66 ++++++++++++++++--- 2 files changed, 60 insertions(+), 10 deletions(-) diff --git a/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/DefaultServlet.java b/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/DefaultServlet.java index ad4a092c24c..06d83a33a7f 100644 --- a/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/DefaultServlet.java +++ b/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/DefaultServlet.java @@ -587,7 +587,7 @@ public class DefaultServlet extends HttpServlet implements ResourceFactory else { // Forward to the index - RequestDispatcher dispatcher=request.getRequestDispatcher(welcome); + RequestDispatcher dispatcher=_servletContext.getRequestDispatcher(welcome); if (dispatcher!=null) { if (included) @@ -673,7 +673,7 @@ public class DefaultServlet extends HttpServlet implements ResourceFactory String welcome_in_context=URIUtil.addPaths(pathInContext,_welcomes[i]); Resource welcome=getResource(welcome_in_context); if (welcome!=null && welcome.exists()) - return _welcomes[i]; + return welcome_in_context; if ((_welcomeServlets || _welcomeExactServlets) && welcome_servlet==null) { diff --git a/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/DefaultServletTest.java b/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/DefaultServletTest.java index aea158288f6..6341ffd20c6 100644 --- a/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/DefaultServletTest.java +++ b/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/DefaultServletTest.java @@ -326,11 +326,13 @@ public class DefaultServletTest testdir.ensureEmpty(); File resBase = testdir.getPathFile("docroot").toFile(); FS.ensureDirExists(resBase); - File inde = new File(resBase, "index.htm"); - File index = new File(resBase, "index.html"); + + File dir = new File(resBase, "dir"); + assertTrue(dir.mkdirs()); + File inde = new File(dir, "index.htm"); + File index = new File(dir, "index.html"); String resBasePath = resBase.getAbsolutePath(); - ServletHolder defholder = context.addServlet(DefaultServlet.class, "/"); defholder.setInitParameter("dirAllowed", "false"); defholder.setInitParameter("redirectWelcome", "false"); @@ -344,25 +346,73 @@ public class DefaultServletTest @SuppressWarnings("unused") ServletHolder jspholder = context.addServlet(NoJspServlet.class, "*.jsp"); - String response = connector.getResponses("GET /context/ HTTP/1.0\r\n\r\n"); + String response = connector.getResponses("GET /context/dir/ HTTP/1.0\r\n\r\n"); assertResponseContains("403", response); createFile(index, "

Hello Index

"); - response = connector.getResponses("GET /context/ HTTP/1.0\r\n\r\n"); + response = connector.getResponses("GET /context/dir/ HTTP/1.0\r\n\r\n"); assertResponseContains("

Hello Index

", response); createFile(inde, "

Hello Inde

"); - response = connector.getResponses("GET /context/ HTTP/1.0\r\n\r\n"); + response = connector.getResponses("GET /context/dir/ HTTP/1.0\r\n\r\n"); assertResponseContains("

Hello Index

", response); assertTrue(index.delete()); - response = connector.getResponses("GET /context/ HTTP/1.0\r\n\r\n"); + response = connector.getResponses("GET /context/dir/ HTTP/1.0\r\n\r\n"); assertResponseContains("

Hello Inde

", response); assertTrue(inde.delete()); - response = connector.getResponses("GET /context/ HTTP/1.0\r\n\r\n"); + response = connector.getResponses("GET /context/dir/ HTTP/1.0\r\n\r\n"); assertResponseContains("403", response); } + + @Test + public void testWelcomeRedirect() throws Exception + { + testdir.ensureEmpty(); + File resBase = testdir.getPathFile("docroot").toFile(); + FS.ensureDirExists(resBase); + + File dir = new File(resBase, "dir"); + assertTrue(dir.mkdirs()); + File inde = new File(dir, "index.htm"); + File index = new File(dir, "index.html"); + + String resBasePath = resBase.getAbsolutePath(); + ServletHolder defholder = context.addServlet(DefaultServlet.class, "/"); + defholder.setInitParameter("dirAllowed", "false"); + defholder.setInitParameter("redirectWelcome", "true"); + defholder.setInitParameter("welcomeServlets", "false"); + defholder.setInitParameter("gzip", "false"); + defholder.setInitParameter("resourceBase", resBasePath); + defholder.setInitParameter("maxCacheSize", "1024000"); + defholder.setInitParameter("maxCachedFileSize", "512000"); + defholder.setInitParameter("maxCachedFiles", "100"); + + @SuppressWarnings("unused") + ServletHolder jspholder = context.addServlet(NoJspServlet.class, "*.jsp"); + + String response = connector.getResponses("GET /context/dir/ HTTP/1.0\r\n\r\n"); + assertResponseContains("403", response); + + createFile(index, "

Hello Index

"); + response = connector.getResponses("GET /context/dir/ HTTP/1.0\r\n\r\n"); + assertResponseContains("Location: http://0.0.0.0/context/dir/index.html", response); + + createFile(inde, "

Hello Inde

"); + response = connector.getResponses("GET /context/dir/ HTTP/1.0\r\n\r\n"); + assertResponseContains("Location: http://0.0.0.0/context/dir/index.html", response); + + assertTrue(index.delete()); + response = connector.getResponses("GET /context/dir/ HTTP/1.0\r\n\r\n"); + assertResponseContains("Location: http://0.0.0.0/context/dir/index.htm", response); + + assertTrue(inde.delete()); + response = connector.getResponses("GET /context/dir/ HTTP/1.0\r\n\r\n"); + assertResponseContains("403", response); + } + + @Test public void testWelcomeServlet() throws Exception From 9e15e01f36847acdaaf6407b7ba990fb011f8df9 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Wed, 19 Apr 2017 18:01:12 -0700 Subject: [PATCH 36/80] Allowing URLStreamHandler test to exist in codebase, but not run in CI --- jetty-webapp/pom.xml | 3 +++ .../java/org/eclipse/jetty/webapp/WebAppClassLoaderTest.java | 2 +- .../eclipse/jetty/webapp/WebAppClassLoaderUrlStreamTest.java | 2 -- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/jetty-webapp/pom.xml b/jetty-webapp/pom.xml index 736fea38a37..49538ce5180 100644 --- a/jetty-webapp/pom.xml +++ b/jetty-webapp/pom.xml @@ -38,6 +38,9 @@ org.apache.maven.plugins maven-surefire-plugin + + org.eclipse.jetty.webapp.WebAppClassLoaderUrlStreamTest + 1 false diff --git a/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppClassLoaderTest.java b/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppClassLoaderTest.java index 2974ea9f3d0..dbf4970a9f9 100644 --- a/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppClassLoaderTest.java +++ b/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppClassLoaderTest.java @@ -245,7 +245,7 @@ public class WebAppClassLoaderTest public void testResources() throws Exception { // The existence of a URLStreamHandler changes the behavior - assumeThat("No URLStreamHandler in place", URLStreamHandlerUtil.getFactory(), nullValue()); + assumeThat("URLStreamHandler changes behavior, skip test", URLStreamHandlerUtil.getFactory(), nullValue()); List expected = new ArrayList<>(); List resources; diff --git a/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppClassLoaderUrlStreamTest.java b/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppClassLoaderUrlStreamTest.java index 74229a0b0e8..296285052e6 100644 --- a/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppClassLoaderUrlStreamTest.java +++ b/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppClassLoaderUrlStreamTest.java @@ -25,9 +25,7 @@ import java.util.Map; import org.junit.After; import org.junit.Before; -import org.junit.Ignore; -@Ignore("Not suitable for testing on CI (as URL object is modified)") public class WebAppClassLoaderUrlStreamTest extends WebAppClassLoaderTest { public static class URLHandlers implements URLStreamHandlerFactory From 2f04b0f869bfae162b9cec23bdbee04043c43287 Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Thu, 20 Apr 2017 11:38:28 +1000 Subject: [PATCH 37/80] Fix #1487 --- .../jetty/embedded/FastFileServer.java | 3 +- .../jetty/rewrite/handler/RedirectUtil.java | 2 +- .../eclipse/jetty/server/PushBuilderImpl.java | 2 +- .../org/eclipse/jetty/server/Request.java | 2 +- .../org/eclipse/jetty/server/Response.java | 2 +- .../java/org/eclipse/jetty/server/Server.java | 2 +- .../jetty/server/handler/ContextHandler.java | 4 +- .../jetty/server/handler/ResourceHandler.java | 2 +- .../eclipse/jetty/servlet/DefaultServlet.java | 13 +- .../jetty/servlet/DefaultServletTest.java | 27 +++- .../java/org/eclipse/jetty/util/URIUtil.java | 61 +++++++- .../jetty/util/resource/FileResource.java | 2 +- .../jetty/util/resource/PathResource.java | 2 +- .../eclipse/jetty/util/resource/Resource.java | 4 +- .../jetty/util/resource/URLResource.java | 2 +- .../org/eclipse/jetty/util/URIUtilTest.java | 145 +++++++++++++----- 16 files changed, 211 insertions(+), 64 deletions(-) diff --git a/examples/embedded/src/main/java/org/eclipse/jetty/embedded/FastFileServer.java b/examples/embedded/src/main/java/org/eclipse/jetty/embedded/FastFileServer.java index ac9b6d0b721..14e5ca46ac1 100644 --- a/examples/embedded/src/main/java/org/eclipse/jetty/embedded/FastFileServer.java +++ b/examples/embedded/src/main/java/org/eclipse/jetty/embedded/FastFileServer.java @@ -111,8 +111,7 @@ public class FastFileServer { if (!request.getPathInfo().endsWith(URIUtil.SLASH)) { - response.sendRedirect(response.encodeRedirectURL(URIUtil - .addPaths(request.getRequestURI(), URIUtil.SLASH))); + response.sendRedirect(response.encodeRedirectURL(request.getRequestURI()+URIUtil.SLASH)); return; } String listing = Resource.newResource(file).getListHTML( diff --git a/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RedirectUtil.java b/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RedirectUtil.java index b556fe64b8a..dd2363bea6e 100644 --- a/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RedirectUtil.java +++ b/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RedirectUtil.java @@ -54,7 +54,7 @@ public final class RedirectUtil // relative to request String path = request.getRequestURI(); String parent = (path.endsWith("/")) ? path : URIUtil.parentPath(path); - location = URIUtil.canonicalPath(URIUtil.addPaths(parent,location)); + location = URIUtil.canonicalPath(URIUtil.addEncodedPaths(parent,location)); if (!location.startsWith("/")) url.append('/'); } diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/PushBuilderImpl.java b/jetty-server/src/main/java/org/eclipse/jetty/server/PushBuilderImpl.java index 4b332686122..12df9952710 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/PushBuilderImpl.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/PushBuilderImpl.java @@ -297,7 +297,7 @@ public class PushBuilderImpl implements PushBuilder _fields.add(HttpHeader.IF_MODIFIED_SINCE,_lastModified); } - HttpURI uri = HttpURI.createHttpURI(_request.getScheme(),_request.getServerName(),_request.getServerPort(),_path,param,query,null); + HttpURI uri = HttpURI.createHttpURI(_request.getScheme(),_request.getServerName(),_request.getServerPort(),path,param,query,null); MetaData.Request push = new MetaData.Request(_method,uri,_request.getHttpVersion(),_fields); if (LOG.isDebugEnabled()) diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java b/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java index 417f5502c6e..8b5b145530a 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java @@ -1279,7 +1279,7 @@ public class Request implements HttpServletRequest relTo = relTo.substring(0,slash + 1); else relTo = "/"; - path = URIUtil.addPaths(URIUtil.encodePath(relTo),path); + path = URIUtil.addPaths(relTo,path); } return _context.getRequestDispatcher(path); diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/Response.java b/jetty-server/src/main/java/org/eclipse/jetty/server/Response.java index 24510b5671f..984209c3fff 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/Response.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/Response.java @@ -648,7 +648,7 @@ public class Response implements HttpServletResponse // relative to request String path=_channel.getRequest().getRequestURI(); String parent=(path.endsWith("/"))?path:URIUtil.parentPath(path); - location=URIUtil.canonicalPath(URIUtil.addPaths(parent,location)); + location=URIUtil.canonicalPath(URIUtil.addEncodedPaths(parent,location)); if (!location.startsWith("/")) buf.append('/'); } diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/Server.java b/jetty-server/src/main/java/org/eclipse/jetty/server/Server.java index 71e5e49d4f2..6ff8e40ebca 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/Server.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/Server.java @@ -563,7 +563,7 @@ public class Server extends HandlerWrapper implements Attributes // this is a dispatch with a path ServletContext context=event.getServletContext(); String query=baseRequest.getQueryString(); - baseRequest.setURIPathQuery(URIUtil.addPaths(context==null?null:URIUtil.encodePath(context.getContextPath()), path)); + baseRequest.setURIPathQuery(URIUtil.addEncodedPaths(context==null?null:URIUtil.encodePath(context.getContextPath()), path)); HttpURI uri = baseRequest.getHttpURI(); baseRequest.setPathInfo(uri.getDecodedPath()); if (uri.getQuery()!=null) 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 487e3339898..df66f624cd3 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 @@ -996,9 +996,9 @@ public class ContextHandler extends ScopedHandler implements Attributes, Gracefu // context request must end with / baseRequest.setHandled(true); if (baseRequest.getQueryString() != null) - response.sendRedirect(URIUtil.addPaths(baseRequest.getRequestURI(),URIUtil.SLASH) + "?" + baseRequest.getQueryString()); + response.sendRedirect(baseRequest.getRequestURI() + "/?" + baseRequest.getQueryString()); else - response.sendRedirect(URIUtil.addPaths(baseRequest.getRequestURI(),URIUtil.SLASH)); + response.sendRedirect(baseRequest.getRequestURI() + "/"); return false; } diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ResourceHandler.java b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ResourceHandler.java index 1185293f0fd..93776a1e80b 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ResourceHandler.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ResourceHandler.java @@ -453,7 +453,7 @@ public class ResourceHandler extends HandlerWrapper implements ResourceFactory boolean endsWithSlash=(pathInfo==null?request.getServletPath():pathInfo).endsWith(URIUtil.SLASH); if (!endsWithSlash) { - response.sendRedirect(response.encodeRedirectURL(URIUtil.addPaths(request.getRequestURI(),URIUtil.SLASH))); + response.sendRedirect(response.encodeRedirectURL(request.getRequestURI()+URIUtil.SLASH)); return; } diff --git a/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/DefaultServlet.java b/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/DefaultServlet.java index 06d83a33a7f..38234b9db3c 100644 --- a/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/DefaultServlet.java +++ b/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/DefaultServlet.java @@ -490,9 +490,10 @@ public class DefaultServlet extends HttpServlet implements ResourceFactory { String q=request.getQueryString(); pathInContext=pathInContext.substring(0,pathInContext.length()-1); + String uri = URIUtil.addPaths(_servletContext.getContextPath(),pathInContext); if (q!=null&&q.length()!=0) - pathInContext+="?"+q; - response.sendRedirect(response.encodeRedirectURL(URIUtil.addPaths(_servletContext.getContextPath(),pathInContext))); + uri+="?"+q; + response.sendRedirect(response.encodeRedirectURL(uri)); return; } @@ -578,11 +579,11 @@ public class DefaultServlet extends HttpServlet implements ResourceFactory { // Redirect to the index response.setContentLength(0); + String uri=URIUtil.encodePath(URIUtil.addPaths( _servletContext.getContextPath(),welcome)); String q=request.getQueryString(); - if (q!=null&&q.length()!=0) - response.sendRedirect(response.encodeRedirectURL(URIUtil.addPaths( _servletContext.getContextPath(),welcome)+"?"+q)); - else - response.sendRedirect(response.encodeRedirectURL(URIUtil.addPaths( _servletContext.getContextPath(),welcome))); + if (q!=null&&!q.isEmpty()) + uri+="?"+q; + response.sendRedirect(response.encodeRedirectURL(uri)); } else { diff --git a/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/DefaultServletTest.java b/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/DefaultServletTest.java index 6341ffd20c6..072f6c72ff1 100644 --- a/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/DefaultServletTest.java +++ b/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/DefaultServletTest.java @@ -411,7 +411,32 @@ public class DefaultServletTest response = connector.getResponses("GET /context/dir/ HTTP/1.0\r\n\r\n"); assertResponseContains("403", response); } - + + @Test + public void testWelcomeDirWithQuestion() throws Exception + { + testdir.ensureEmpty(); + File resBase = testdir.getPathFile("docroot").toFile(); + FS.ensureDirExists(resBase); + context.setBaseResource(Resource.newResource(resBase)); + + File dir = new File(resBase, "dir?"); + assertTrue(dir.mkdirs()); + File index = new File(dir, "index.html"); + createFile(index, "

Hello Index

"); + + ServletHolder defholder = context.addServlet(DefaultServlet.class, "/"); + defholder.setInitParameter("dirAllowed", "false"); + defholder.setInitParameter("redirectWelcome", "true"); + defholder.setInitParameter("welcomeServlets", "false"); + defholder.setInitParameter("gzip", "false"); + + String response = connector.getResponse("GET /context/dir%3F HTTP/1.0\r\n\r\n"); + assertResponseContains("Location: http://0.0.0.0/context/dir%3F/", response); + + response = connector.getResponse("GET /context/dir%3F/ HTTP/1.0\r\n\r\n"); + assertResponseContains("Location: http://0.0.0.0/context/dir%3F/index.html", response); + } @Test diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/URIUtil.java b/jetty-util/src/main/java/org/eclipse/jetty/util/URIUtil.java index 1b21dcf7c4f..3d3671ebd11 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/URIUtil.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/URIUtil.java @@ -472,14 +472,14 @@ public class URIUtil /* ------------------------------------------------------------ */ - /** Add two URI path segments. + /** Add two encoded URI path segments. * Handles null and empty paths, path and query params (eg ?a=b or * ;JSESSIONID=xxx) and avoids duplicate '/' * @param p1 URI path segment (should be encoded) * @param p2 URI path segment (should be encoded) * @return Legally combined path segments. */ - public static String addPaths(String p1, String p2) + public static String addEncodedPaths(String p1, String p2) { if (p1==null || p1.length()==0) { @@ -524,7 +524,54 @@ public class URIUtil return buf.toString(); } - + + /* ------------------------------------------------------------ */ + /** Add two Decoded URI path segments. + * Handles null and empty paths. Path and query params (eg ?a=b or + * ;JSESSIONID=xxx) are not handled + * @param p1 URI path segment (should be decoded) + * @param p2 URI path segment (should be decoded) + * @return Legally combined path segments. + */ + public static String addPaths(String p1, String p2) + { + if (p1==null || p1.length()==0) + { + if (p1!=null && p2==null) + return p1; + return p2; + } + if (p2==null || p2.length()==0) + return p1; + + boolean p1EndsWithSlash = p1.endsWith(SLASH); + boolean p2StartsWithSlash = p2.startsWith(SLASH); + + if (p1EndsWithSlash && p2StartsWithSlash) + { + if (p2.length()==1) + return p1; + if (p1.length()==1) + return p2; + } + + StringBuilder buf = new StringBuilder(p1.length()+p2.length()+2); + buf.append(p1); + + if (p1.endsWith(SLASH)) + { + if (p2.startsWith(SLASH)) + buf.setLength(buf.length()-1); + } + else + { + if (!p2.startsWith(SLASH)) + buf.append(SLASH); + } + buf.append(p2); + + return buf.toString(); + } /* ------------------------------------------------------------ */ /** Return the parent Path. * Treat a URI like a directory path and return the parent directory. @@ -916,7 +963,12 @@ public class URIUtil return equalsIgnoreEncodings(uriA.getPath(),uriB.getPath()); } - public static URI addDecodedPath(URI uri, String path) + /** + * @param uri A URI to add the path to + * @param path A decoded path element + * @return URI with path added. + */ + public static URI addPath(URI uri, String path) { String base = uri.toASCIIString(); StringBuilder buf = new StringBuilder(base.length()+path.length()*3); @@ -924,7 +976,6 @@ public class URIUtil if (buf.charAt(base.length()-1)!='/') buf.append('/'); - byte[] bytes=null; int offset=path.charAt(0)=='/'?1:0; encodePath(buf,path,offset); diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/resource/FileResource.java b/jetty-util/src/main/java/org/eclipse/jetty/util/resource/FileResource.java index 6deda09ef26..868402f2555 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/resource/FileResource.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/resource/FileResource.java @@ -169,7 +169,7 @@ public class FileResource extends Resource if (base.isDirectory()) { // treat all paths being added as relative - uri=new URI(URIUtil.addPaths(base.toURI().toASCIIString(),encoded)); + uri=new URI(URIUtil.addEncodedPaths(base.toURI().toASCIIString(),encoded)); } else { diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/resource/PathResource.java b/jetty-util/src/main/java/org/eclipse/jetty/util/resource/PathResource.java index 54fdd56dc56..968847a8bc0 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/resource/PathResource.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/resource/PathResource.java @@ -213,7 +213,7 @@ public class PathResource extends Resource this.path = parent.path.getFileSystem().getPath(parent.path.toString(), childPath); if (isDirectory() &&!childPath.endsWith("/")) childPath+="/"; - this.uri = URIUtil.addDecodedPath(parent.uri,childPath); + this.uri = URIUtil.addPath(parent.uri,childPath); this.alias = checkAliasPath(); } diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/resource/Resource.java b/jetty-util/src/main/java/org/eclipse/jetty/util/resource/Resource.java index 195fa839f15..a00837edf6f 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/resource/Resource.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/resource/Resource.java @@ -566,7 +566,7 @@ public abstract class Resource implements ResourceFactory, Closeable if (parent) { buf.append("Parent Directory\n"); } @@ -579,7 +579,7 @@ public abstract class Resource implements ResourceFactory, Closeable Resource item = addPath(ls[i]); buf.append("\n Date: Thu, 20 Apr 2017 14:32:54 +1000 Subject: [PATCH 38/80] Fixed #1487 #1486 --- .../src/main/java/org/eclipse/jetty/server/Request.java | 1 + .../test/java/org/eclipse/jetty/webapp/WebAppContextTest.java | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java b/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java index 34af7363a1f..0af469959f8 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java @@ -1765,6 +1765,7 @@ public class Request implements HttpServletRequest if (encoded==null) { path = uri.isAbsolute()?"/":null; + uri.setPath(path); } else if (encoded.startsWith("/")) { diff --git a/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppContextTest.java b/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppContextTest.java index c78f1df4fc2..c69ae790f9a 100644 --- a/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppContextTest.java +++ b/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppContextTest.java @@ -217,7 +217,7 @@ public class WebAppContextTest server.start(); try { - String response = connector.getResponses("GET http://localhost:8080 HTTP/1.1\r\nHost: localhost:8080\r\nConnection: close\r\n\r\n"); + String response = connector.getResponse("GET http://localhost:8080 HTTP/1.1\r\nHost: localhost:8080\r\nConnection: close\r\n\r\n"); Assert.assertTrue(response.indexOf("200 OK")>=0); } finally From a2f89f2bf9d64a82c9acb8875ddd6afeef2b151e Mon Sep 17 00:00:00 2001 From: olivier lamy Date: Thu, 20 Apr 2017 12:36:48 +1000 Subject: [PATCH 39/80] implementation for #1481 Add a new base class UserStore Signed-off-by: olivier lamy --- .../jetty/security/PropertyUserStore.java | 63 ++++----------- .../org/eclipse/jetty/security/UserStore.java | 76 +++++++++++++++++++ .../jetty/security/TestLoginService.java | 28 +++++-- pom.xml | 2 +- 4 files changed, 113 insertions(+), 56 deletions(-) create mode 100644 jetty-security/src/main/java/org/eclipse/jetty/security/UserStore.java diff --git a/jetty-security/src/main/java/org/eclipse/jetty/security/PropertyUserStore.java b/jetty-security/src/main/java/org/eclipse/jetty/security/PropertyUserStore.java index 604dbacef4f..43b58603ea2 100644 --- a/jetty-security/src/main/java/org/eclipse/jetty/security/PropertyUserStore.java +++ b/jetty-security/src/main/java/org/eclipse/jetty/security/PropertyUserStore.java @@ -18,12 +18,19 @@ package org.eclipse.jetty.security; +import org.eclipse.jetty.util.PathWatcher; +import org.eclipse.jetty.util.PathWatcher.PathWatchEvent; +import org.eclipse.jetty.util.StringUtil; +import org.eclipse.jetty.util.log.Log; +import org.eclipse.jetty.util.log.Logger; +import org.eclipse.jetty.util.resource.PathResource; +import org.eclipse.jetty.util.resource.Resource; +import org.eclipse.jetty.util.security.Credential; + import java.io.File; import java.io.IOException; import java.nio.file.Path; -import java.security.Principal; import java.util.ArrayList; -import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; @@ -31,20 +38,6 @@ import java.util.Map; import java.util.Properties; import java.util.Set; -import javax.security.auth.Subject; - - -import org.eclipse.jetty.server.UserIdentity; -import org.eclipse.jetty.util.PathWatcher; -import org.eclipse.jetty.util.PathWatcher.PathWatchEvent; -import org.eclipse.jetty.util.StringUtil; -import org.eclipse.jetty.util.component.AbstractLifeCycle; -import org.eclipse.jetty.util.log.Log; -import org.eclipse.jetty.util.log.Logger; -import org.eclipse.jetty.util.resource.PathResource; -import org.eclipse.jetty.util.resource.Resource; -import org.eclipse.jetty.util.security.Credential; - /** * PropertyUserStore *

@@ -59,7 +52,7 @@ import org.eclipse.jetty.util.security.Credential; * * If DIGEST Authentication is used, the password must be in a recoverable format, either plain text or OBF:. */ -public class PropertyUserStore extends AbstractLifeCycle implements PathWatcher.Listener +public class PropertyUserStore extends UserStore implements PathWatcher.Listener { private static final Logger LOG = Log.getLogger(PropertyUserStore.class); @@ -69,10 +62,7 @@ public class PropertyUserStore extends AbstractLifeCycle implements PathWatcher. protected PathWatcher pathWatcher; protected boolean hotReload = false; // default is not to reload - protected IdentityService _identityService = new DefaultIdentityService(); protected boolean _firstLoad = true; // true if first load, false from that point on - protected final List _knownUsers = new ArrayList(); - protected final Map _knownUserIdentities = new HashMap(); protected List _listeners; /** @@ -145,12 +135,6 @@ public class PropertyUserStore extends AbstractLifeCycle implements PathWatcher. { _configPath = configPath; } - - /* ------------------------------------------------------------ */ - public UserIdentity getUserIdentity(String userName) - { - return _knownUserIdentities.get(userName); - } /* ------------------------------------------------------------ */ /** @@ -199,8 +183,8 @@ public class PropertyUserStore extends AbstractLifeCycle implements PathWatcher. StringBuilder s = new StringBuilder(); s.append(this.getClass().getName()); s.append("["); - s.append("users.count=").append(this._knownUsers.size()); - s.append("identityService=").append(this._identityService); + s.append("users.count=").append(this.getKnownUserIdentities().size()); + s.append("identityService=").append(this.getIdentityService()); s.append("]"); return s.toString(); } @@ -220,7 +204,7 @@ public class PropertyUserStore extends AbstractLifeCycle implements PathWatcher. if (getConfigResource().exists()) properties.load(getConfigResource().getInputStream()); - Set known = new HashSet(); + Set known = new HashSet<>(); for (Map.Entry entry : properties.entrySet()) { @@ -243,27 +227,12 @@ public class PropertyUserStore extends AbstractLifeCycle implements PathWatcher. } known.add(username); Credential credential = Credential.getCredential(credentials); - - Principal userPrincipal = new AbstractLoginService.UserPrincipal(username,credential); - Subject subject = new Subject(); - subject.getPrincipals().add(userPrincipal); - subject.getPrivateCredentials().add(credential); - - if (roles != null) - { - for (String role : roleArray) - { - subject.getPrincipals().add(new AbstractLoginService.RolePrincipal(role)); - } - } - - subject.setReadOnly(); - - _knownUserIdentities.put(username,_identityService.newUserIdentity(subject,userPrincipal,roleArray)); + addUser( username, credential, roleArray ); notifyUpdate(username,credential,roleArray); } } + final List _knownUsers = new ArrayList(); synchronized (_knownUsers) { /* @@ -277,7 +246,7 @@ public class PropertyUserStore extends AbstractLifeCycle implements PathWatcher. String user = users.next(); if (!known.contains(user)) { - _knownUserIdentities.remove(user); + removeUser( user ); notifyRemove(user); } } diff --git a/jetty-security/src/main/java/org/eclipse/jetty/security/UserStore.java b/jetty-security/src/main/java/org/eclipse/jetty/security/UserStore.java new file mode 100644 index 00000000000..d23a17e9692 --- /dev/null +++ b/jetty-security/src/main/java/org/eclipse/jetty/security/UserStore.java @@ -0,0 +1,76 @@ +// +// ======================================================================== +// Copyright (c) 1995-2017 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.security; + +import org.eclipse.jetty.server.UserIdentity; +import org.eclipse.jetty.util.component.AbstractLifeCycle; +import org.eclipse.jetty.util.security.Credential; + +import javax.security.auth.Subject; +import java.security.Principal; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * Base class to store User + */ +public class UserStore extends AbstractLifeCycle +{ + private IdentityService _identityService = new DefaultIdentityService(); + private final Map _knownUserIdentities = new ConcurrentHashMap<>(); + + protected void addUser( String username, Credential credential, String[] roles) + { + Principal userPrincipal = new AbstractLoginService.UserPrincipal( username, credential); + Subject subject = new Subject(); + subject.getPrincipals().add(userPrincipal); + subject.getPrivateCredentials().add(credential); + + if (roles != null) + { + for (String role : roles) + { + subject.getPrincipals().add(new AbstractLoginService.RolePrincipal(role)); + } + } + + subject.setReadOnly(); + _knownUserIdentities.put(username,_identityService.newUserIdentity(subject,userPrincipal,roles)); + } + + protected void removeUser(String username) + { + _knownUserIdentities.remove(username); + } + + public UserIdentity getUserIdentity(String userName) + { + return _knownUserIdentities.get(userName); + } + + public IdentityService getIdentityService() + { + return _identityService; + } + + protected Map getKnownUserIdentities() + { + return _knownUserIdentities; + } +} diff --git a/jetty-security/src/test/java/org/eclipse/jetty/security/TestLoginService.java b/jetty-security/src/test/java/org/eclipse/jetty/security/TestLoginService.java index e8adc097cf8..a977e9bdd31 100644 --- a/jetty-security/src/test/java/org/eclipse/jetty/security/TestLoginService.java +++ b/jetty-security/src/test/java/org/eclipse/jetty/security/TestLoginService.java @@ -19,9 +19,14 @@ package org.eclipse.jetty.security; +import java.security.Principal; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; +import java.util.Set; +import org.eclipse.jetty.server.UserIdentity; import org.eclipse.jetty.util.security.Credential; /** @@ -31,9 +36,8 @@ import org.eclipse.jetty.util.security.Credential; */ public class TestLoginService extends AbstractLoginService { - protected Map _users = new HashMap<>(); - protected Map _roles = new HashMap<>(); - + + UserStore userStore = new UserStore(); public TestLoginService(String name) @@ -43,9 +47,7 @@ public class TestLoginService extends AbstractLoginService public void putUser (String username, Credential credential, String[] roles) { - UserPrincipal userPrincipal = new UserPrincipal(username,credential); - _users.put(username, userPrincipal); - _roles.put(username, roles); + userStore.addUser( username, credential, roles ); } /** @@ -54,7 +56,16 @@ public class TestLoginService extends AbstractLoginService @Override protected String[] loadRoleInfo(UserPrincipal user) { - return _roles.get(user.getName()); + UserIdentity userIdentity = userStore.getUserIdentity( user.getName() ); + Set roles = userIdentity.getSubject().getPrincipals( RolePrincipal.class); + if (roles == null) + return null; + + List list = new ArrayList<>(); + for (RolePrincipal r:roles) + list.add(r.getName()); + + return list.toArray(new String[roles.size()]); } /** @@ -63,7 +74,8 @@ public class TestLoginService extends AbstractLoginService @Override protected UserPrincipal loadUserInfo(String username) { - return _users.get(username); + UserIdentity userIdentity = userStore.getUserIdentity( username ); + return userIdentity == null ? null : (UserPrincipal) userIdentity.getUserPrincipal(); } } diff --git a/pom.xml b/pom.xml index baf709ed44f..f593767451d 100644 --- a/pom.xml +++ b/pom.xml @@ -581,7 +581,7 @@ org.apache.maven.plugins maven-surefire-plugin - 2.19.1 + 2.20 @{argLine} -Dfile.encoding=UTF-8 -Duser.language=en -Duser.region=US -showversion -Xmx1g -Xms1g -XX:+PrintGCDetails false From 99a98127cd9806fdd765a1400dc3db9dac9616b5 Mon Sep 17 00:00:00 2001 From: olivier lamy Date: Thu, 20 Apr 2017 12:50:14 +1000 Subject: [PATCH 40/80] #1481 HashLogin has now a setter to configure the UserStore implementation to use Signed-off-by: olivier lamy --- .../jetty/security/HashLoginService.java | 43 +++++++++++-------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/jetty-security/src/main/java/org/eclipse/jetty/security/HashLoginService.java b/jetty-security/src/main/java/org/eclipse/jetty/security/HashLoginService.java index 04ecbcaf208..360a8af3e4a 100644 --- a/jetty-security/src/main/java/org/eclipse/jetty/security/HashLoginService.java +++ b/jetty-security/src/main/java/org/eclipse/jetty/security/HashLoginService.java @@ -49,11 +49,12 @@ public class HashLoginService extends AbstractLoginService { private static final Logger LOG = Log.getLogger(HashLoginService.class); - private PropertyUserStore _propertyUserStore; private File _configFile; private Resource _configResource; private boolean hotReload = false; // default is not to reload - + private UserStore _userStore; + + /* ------------------------------------------------------------ */ public HashLoginService() @@ -139,13 +140,21 @@ public class HashLoginService extends AbstractLoginService this.hotReload = enable; } - + /** + * Configure the {@link UserStore} implementation to use. + * If none, for backward compat if none the {@link PropertyUserStore} will be used + * @param userStore the {@link UserStore} implementation to use + */ + public void setUserStore(UserStore userStore) + { + this._userStore = userStore; + } /* ------------------------------------------------------------ */ @Override protected String[] loadRoleInfo(UserPrincipal user) { - UserIdentity id = _propertyUserStore.getUserIdentity(user.getName()); + UserIdentity id = _userStore.getUserIdentity(user.getName()); if (id == null) return null; @@ -162,13 +171,11 @@ public class HashLoginService extends AbstractLoginService } - - /* ------------------------------------------------------------ */ @Override protected UserPrincipal loadUserInfo(String userName) { - UserIdentity id = _propertyUserStore.getUserIdentity(userName); + UserIdentity id = _userStore.getUserIdentity(userName); if (id != null) { return (UserPrincipal)id.getUserPrincipal(); @@ -187,16 +194,18 @@ public class HashLoginService extends AbstractLoginService protected void doStart() throws Exception { super.doStart(); - - if (_propertyUserStore == null) + + // can be null so we switch to previous behaviour using PropertyUserStore + if (_userStore == null) { if(LOG.isDebugEnabled()) LOG.debug("doStart: Starting new PropertyUserStore. PropertiesFile: " + _configFile + " hotReload: " + hotReload); - - _propertyUserStore = new PropertyUserStore(); - _propertyUserStore.setHotReload(hotReload); - _propertyUserStore.setConfigPath(_configFile); - _propertyUserStore.start(); + + PropertyUserStore propertyUserStore = new PropertyUserStore(); + propertyUserStore.setHotReload(hotReload); + propertyUserStore.setConfigPath(_configFile); + propertyUserStore.start(); + this._userStore = propertyUserStore; } } @@ -208,8 +217,8 @@ public class HashLoginService extends AbstractLoginService protected void doStop() throws Exception { super.doStop(); - if (_propertyUserStore != null) - _propertyUserStore.stop(); - _propertyUserStore = null; + if (_userStore != null) + _userStore.stop(); + _userStore = null; } } From 6a88e13b3ab89e638841b5a4cb9c640a69f1a72a Mon Sep 17 00:00:00 2001 From: olivier lamy Date: Thu, 20 Apr 2017 14:24:15 +1000 Subject: [PATCH 41/80] make those methods public for external use Signed-off-by: olivier lamy --- .../src/main/java/org/eclipse/jetty/security/UserStore.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/jetty-security/src/main/java/org/eclipse/jetty/security/UserStore.java b/jetty-security/src/main/java/org/eclipse/jetty/security/UserStore.java index d23a17e9692..faad5a96776 100644 --- a/jetty-security/src/main/java/org/eclipse/jetty/security/UserStore.java +++ b/jetty-security/src/main/java/org/eclipse/jetty/security/UserStore.java @@ -35,7 +35,7 @@ public class UserStore extends AbstractLifeCycle private IdentityService _identityService = new DefaultIdentityService(); private final Map _knownUserIdentities = new ConcurrentHashMap<>(); - protected void addUser( String username, Credential credential, String[] roles) + public void addUser( String username, Credential credential, String[] roles) { Principal userPrincipal = new AbstractLoginService.UserPrincipal( username, credential); Subject subject = new Subject(); @@ -54,7 +54,7 @@ public class UserStore extends AbstractLifeCycle _knownUserIdentities.put(username,_identityService.newUserIdentity(subject,userPrincipal,roles)); } - protected void removeUser(String username) + public void removeUser(String username) { _knownUserIdentities.remove(username); } @@ -69,7 +69,7 @@ public class UserStore extends AbstractLifeCycle return _identityService; } - protected Map getKnownUserIdentities() + public Map getKnownUserIdentities() { return _knownUserIdentities; } From 626327fa67dab948fc070e98978647cd84f61199 Mon Sep 17 00:00:00 2001 From: olivier lamy Date: Thu, 20 Apr 2017 15:01:41 +1000 Subject: [PATCH 42/80] add as simple unit test #1481 --- .../jetty/security/HashLoginService.java | 7 +- .../eclipse/jetty/security/UserStoreTest.java | 70 +++++++++++++++++++ 2 files changed, 74 insertions(+), 3 deletions(-) create mode 100644 jetty-security/src/test/java/org/eclipse/jetty/security/UserStoreTest.java diff --git a/jetty-security/src/main/java/org/eclipse/jetty/security/HashLoginService.java b/jetty-security/src/main/java/org/eclipse/jetty/security/HashLoginService.java index 360a8af3e4a..87559a22938 100644 --- a/jetty-security/src/main/java/org/eclipse/jetty/security/HashLoginService.java +++ b/jetty-security/src/main/java/org/eclipse/jetty/security/HashLoginService.java @@ -22,6 +22,7 @@ import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Set; +import java.util.stream.Collectors; import org.eclipse.jetty.server.UserIdentity; import org.eclipse.jetty.util.log.Log; @@ -163,9 +164,9 @@ public class HashLoginService extends AbstractLoginService if (roles == null) return null; - List list = new ArrayList<>(); - for (RolePrincipal r:roles) - list.add(r.getName()); + List list = roles.stream() + .map( rolePrincipal -> rolePrincipal.getName() ) + .collect( Collectors.toList() ); return list.toArray(new String[roles.size()]); } diff --git a/jetty-security/src/test/java/org/eclipse/jetty/security/UserStoreTest.java b/jetty-security/src/test/java/org/eclipse/jetty/security/UserStoreTest.java new file mode 100644 index 00000000000..cd61c4c5cb2 --- /dev/null +++ b/jetty-security/src/test/java/org/eclipse/jetty/security/UserStoreTest.java @@ -0,0 +1,70 @@ +// +// ======================================================================== +// Copyright (c) 1995-2017 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.security; + +import org.eclipse.jetty.server.UserIdentity; +import org.eclipse.jetty.util.security.Credential; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +public class UserStoreTest +{ + UserStore userStore; + + @Before + public void setup() { + userStore = new UserStore(); + } + + @Test + public void addUser() + { + this.userStore.addUser( "foo", Credential.getCredential( "beer" ), new String[]{"pub"} ); + Assert.assertEquals(1, this.userStore.getKnownUserIdentities().size()); + UserIdentity userIdentity = this.userStore.getUserIdentity( "foo" ); + Assert.assertNotNull( userIdentity ); + Assert.assertEquals( "foo", userIdentity.getUserPrincipal().getName() ); + Set + roles = userIdentity.getSubject().getPrincipals( AbstractLoginService.RolePrincipal.class); + List list = roles.stream() + .map( rolePrincipal -> rolePrincipal.getName() ) + .collect( Collectors.toList() ); + Assert.assertEquals(1, list.size()); + Assert.assertEquals( "pub", list.get( 0 ) ); + } + + @Test + public void removeUser() + { + this.userStore.addUser( "foo", Credential.getCredential( "beer" ), new String[]{"pub"} ); + Assert.assertEquals(1, this.userStore.getKnownUserIdentities().size()); + UserIdentity userIdentity = this.userStore.getUserIdentity( "foo" ); + Assert.assertNotNull( userIdentity ); + Assert.assertEquals( "foo", userIdentity.getUserPrincipal().getName() ); + userStore.removeUser( "foo" ); + userIdentity = this.userStore.getUserIdentity( "foo" ); + Assert.assertNull( userIdentity ); + } + +} From 9f3841d8e08dcb06f0a52346929617a30d0da0be Mon Sep 17 00:00:00 2001 From: olivier lamy Date: Thu, 20 Apr 2017 15:41:26 +1000 Subject: [PATCH 43/80] fix after review Signed-off-by: olivier lamy --- .../java/org/eclipse/jetty/security/HashLoginService.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/jetty-security/src/main/java/org/eclipse/jetty/security/HashLoginService.java b/jetty-security/src/main/java/org/eclipse/jetty/security/HashLoginService.java index 87559a22938..e1ee2cf4d09 100644 --- a/jetty-security/src/main/java/org/eclipse/jetty/security/HashLoginService.java +++ b/jetty-security/src/main/java/org/eclipse/jetty/security/HashLoginService.java @@ -54,7 +54,7 @@ public class HashLoginService extends AbstractLoginService private Resource _configResource; private boolean hotReload = false; // default is not to reload private UserStore _userStore; - + private boolean _userStoreAutoCreate = false; /* ------------------------------------------------------------ */ @@ -206,7 +206,8 @@ public class HashLoginService extends AbstractLoginService propertyUserStore.setHotReload(hotReload); propertyUserStore.setConfigPath(_configFile); propertyUserStore.start(); - this._userStore = propertyUserStore; + _userStore = propertyUserStore; + _userStoreAutoCreate = true; } } @@ -218,7 +219,7 @@ public class HashLoginService extends AbstractLoginService protected void doStop() throws Exception { super.doStop(); - if (_userStore != null) + if (_userStore != null && _userStoreAutoCreate) _userStore.stop(); _userStore = null; } From e1bd46023e04905b92307b014ac67cb680ff6251 Mon Sep 17 00:00:00 2001 From: Jan Bartel Date: Thu, 20 Apr 2017 18:10:34 +1000 Subject: [PATCH 44/80] Issue #1481 Fix bug --- .../jetty/security/PropertyUserStore.java | 38 ++++++++----------- 1 file changed, 15 insertions(+), 23 deletions(-) diff --git a/jetty-security/src/main/java/org/eclipse/jetty/security/PropertyUserStore.java b/jetty-security/src/main/java/org/eclipse/jetty/security/PropertyUserStore.java index 43b58603ea2..18919777f8a 100644 --- a/jetty-security/src/main/java/org/eclipse/jetty/security/PropertyUserStore.java +++ b/jetty-security/src/main/java/org/eclipse/jetty/security/PropertyUserStore.java @@ -232,40 +232,31 @@ public class PropertyUserStore extends UserStore implements PathWatcher.Listener } } - final List _knownUsers = new ArrayList(); - synchronized (_knownUsers) + final List currentlyKnownUsers = new ArrayList(getKnownUserIdentities().keySet()); + /* + * + * if its not the initial load then we want to process removed users + */ + if (!_firstLoad) { - /* - * if its not the initial load then we want to process removed users - */ - if (!_firstLoad) + Iterator users = currentlyKnownUsers.iterator(); + while (users.hasNext()) { - Iterator users = _knownUsers.iterator(); - while (users.hasNext()) + String user = users.next(); + if (!known.contains(user)) { - String user = users.next(); - if (!known.contains(user)) - { - removeUser( user ); - notifyRemove(user); - } + removeUser( user ); + notifyRemove(user); } } - - /* - * reset the tracked _users list to the known users we just processed - */ - - _knownUsers.clear(); - _knownUsers.addAll(known); - } + /* * set initial load to false as there should be no more initial loads */ _firstLoad = false; - + if (LOG.isDebugEnabled()) { LOG.debug("Loaded " + this + " from " + _configPath); @@ -301,6 +292,7 @@ public class PropertyUserStore extends UserStore implements PathWatcher.Listener { try { + System.err.println("PATH WATCH EVENT: "+event.getType()); loadUsers(); } catch (IOException e) From 874662fe4a05954dab1ab77534f745aa322f7441 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Thu, 20 Apr 2017 09:00:48 -0700 Subject: [PATCH 45/80] Issue #1475 - retain encoded form of path --- jetty-util/src/main/java/org/eclipse/jetty/util/URIUtil.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/URIUtil.java b/jetty-util/src/main/java/org/eclipse/jetty/util/URIUtil.java index 6cf415248a2..16192d19cfd 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/URIUtil.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/URIUtil.java @@ -1085,7 +1085,8 @@ public class URIUtil { if (!"jar".equals(uri.getScheme())) return uri; - String s = uri.getSchemeSpecificPart(); + // Get SSP (retaining encoded form) + String s = uri.getRawSchemeSpecificPart(); int bang_slash = s.indexOf("!/"); if (bang_slash>=0) s=s.substring(0,bang_slash); From 970cec230bc6806f18e7b790ec79b6c4edd34176 Mon Sep 17 00:00:00 2001 From: olivier lamy Date: Fri, 21 Apr 2017 11:44:50 +1000 Subject: [PATCH 46/80] prefer LOG.debug to System.err.println Signed-off-by: olivier lamy --- .../java/org/eclipse/jetty/security/PropertyUserStore.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/jetty-security/src/main/java/org/eclipse/jetty/security/PropertyUserStore.java b/jetty-security/src/main/java/org/eclipse/jetty/security/PropertyUserStore.java index 18919777f8a..ddd1268179c 100644 --- a/jetty-security/src/main/java/org/eclipse/jetty/security/PropertyUserStore.java +++ b/jetty-security/src/main/java/org/eclipse/jetty/security/PropertyUserStore.java @@ -292,7 +292,10 @@ public class PropertyUserStore extends UserStore implements PathWatcher.Listener { try { - System.err.println("PATH WATCH EVENT: "+event.getType()); + if (LOG.isDebugEnabled()) + { + LOG.debug( "PATH WATCH EVENT: {}", event.getType() ); + } loadUsers(); } catch (IOException e) From 29a26c76a25f964eabd630d10b3f9357bdfb7a87 Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Fri, 21 Apr 2017 13:25:18 +1000 Subject: [PATCH 47/80] Fixes #1493 --- .../src/main/java/org/eclipse/jetty/server/HttpChannel.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java index feb8eba29da..6bac7730f51 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java @@ -344,7 +344,7 @@ public class HttpChannel implements Runnable, HttpOutput.Interceptor { try { - _response.reset(); + _response.reset(true); Integer icode = (Integer)_request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE); int code = icode != null ? icode : HttpStatus.INTERNAL_SERVER_ERROR_500; _response.setStatus(code); @@ -528,7 +528,7 @@ public class HttpChannel implements Runnable, HttpOutput.Interceptor try { Integer code=(Integer)_request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE); - _response.reset(); + _response.reset(true); _response.setStatus(code == null ? 500 : code); _response.flushBuffer(); } From 8aa64949c20d35763219685578bac8b5e67d002e Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Fri, 21 Apr 2017 13:25:52 +1000 Subject: [PATCH 48/80] Fixes #1492 ini properties should be overridable --- jetty-util/src/main/config/modules/log4j-impl.mod | 2 +- jetty-util/src/main/config/modules/log4j2-api.mod | 2 +- jetty-util/src/main/config/modules/logback-impl.mod | 2 +- jetty-util/src/main/config/modules/slf4j-api.mod | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/jetty-util/src/main/config/modules/log4j-impl.mod b/jetty-util/src/main/config/modules/log4j-impl.mod index da0b1e20763..5aaaa62cc21 100644 --- a/jetty-util/src/main/config/modules/log4j-impl.mod +++ b/jetty-util/src/main/config/modules/log4j-impl.mod @@ -26,5 +26,5 @@ Log4j is released under the Apache 2.0 license. http://www.apache.org/licenses/LICENSE-2.0.html [ini] -log4j.version=1.2.17 +log4j.version?=1.2.17 diff --git a/jetty-util/src/main/config/modules/log4j2-api.mod b/jetty-util/src/main/config/modules/log4j2-api.mod index cc0fb44635f..123427e7d6c 100644 --- a/jetty-util/src/main/config/modules/log4j2-api.mod +++ b/jetty-util/src/main/config/modules/log4j2-api.mod @@ -21,5 +21,5 @@ Log4j is released under the Apache 2.0 license. http://www.apache.org/licenses/LICENSE-2.0.html [ini] -log4j2.version=2.6.1 +log4j2.version?=2.6.1 diff --git a/jetty-util/src/main/config/modules/logback-impl.mod b/jetty-util/src/main/config/modules/logback-impl.mod index df20d86846f..a9364601720 100644 --- a/jetty-util/src/main/config/modules/logback-impl.mod +++ b/jetty-util/src/main/config/modules/logback-impl.mod @@ -34,5 +34,5 @@ or (per the licensee's choosing) under http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html [ini] -logback.version=1.1.7 +logback.version?=1.1.7 diff --git a/jetty-util/src/main/config/modules/slf4j-api.mod b/jetty-util/src/main/config/modules/slf4j-api.mod index c514b7083fd..6fb36bd9407 100644 --- a/jetty-util/src/main/config/modules/slf4j-api.mod +++ b/jetty-util/src/main/config/modules/slf4j-api.mod @@ -14,7 +14,7 @@ maven://org.slf4j/slf4j-api/${slf4j.version}|lib/slf4j/slf4j-api-${slf4j.version lib/slf4j/slf4j-api-${slf4j.version}.jar [ini] -slf4j.version=1.7.21 +slf4j.version?=1.7.21 [license] SLF4J is distributed under the MIT License. From 68c7a1d9606bdf1534766d0ff139d3b92bb4e714 Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Fri, 21 Apr 2017 14:24:22 +1000 Subject: [PATCH 49/80] Fixes #1494 Converted dependencies from a Set to a List, so the order of dependencies can be used to help select between multiple provides. More specifically, stop an unordered Set allowing one dependency to trigger a default provider when an earlier specified dependency enables a specific provider. --- .../main/java/org/eclipse/jetty/start/Module.java | 13 +++++++------ .../main/java/org/eclipse/jetty/start/Modules.java | 11 +++++++---- .../resources/usecases/ordered.default.assert.txt | 12 ++++++++++++ .../resources/usecases/ordered.default.cmdline.txt | 2 ++ .../usecases/ordered/modules/convenience.mod | 4 ++++ .../resources/usecases/ordered/modules/original.mod | 4 ++++ .../usecases/ordered/modules/replacement.mod | 7 +++++++ .../usecases/ordered/modules/something-else.mod | 3 +++ 8 files changed, 46 insertions(+), 10 deletions(-) create mode 100644 jetty-start/src/test/resources/usecases/ordered.default.assert.txt create mode 100644 jetty-start/src/test/resources/usecases/ordered.default.cmdline.txt create mode 100644 jetty-start/src/test/resources/usecases/ordered/modules/convenience.mod create mode 100644 jetty-start/src/test/resources/usecases/ordered/modules/original.mod create mode 100644 jetty-start/src/test/resources/usecases/ordered/modules/replacement.mod create mode 100644 jetty-start/src/test/resources/usecases/ordered/modules/something-else.mod 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 7cf647eea8e..6ed80acbaec 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 @@ -116,7 +116,7 @@ public class Module implements Comparable private final List _license=new ArrayList<>(); /** Dependencies */ - private final Set _depends=new HashSet<>(); + private final List _depends=new ArrayList<>(); /** Optional */ private final Set _optional=new HashSet<>(); @@ -183,10 +183,10 @@ public class Module implements Comparable { Function expander = d->{return props.expand(d);}; - Set tmp=_depends.stream().map(expander).collect(Collectors.toSet()); + List tmp=_depends.stream().map(expander).collect(Collectors.toList()); _depends.clear(); _depends.addAll(tmp); - tmp=_optional.stream().map(expander).collect(Collectors.toSet()); + tmp=_optional.stream().map(expander).collect(Collectors.toList()); _optional.clear(); _optional.addAll(tmp); } @@ -329,7 +329,8 @@ public class Module implements Comparable break; case "DEPEND": case "DEPENDS": - _depends.add(line); + if (!_depends.contains(line)) + _depends.add(line); break; case "FILE": case "FILES": @@ -437,9 +438,9 @@ public class Module implements Comparable return str.toString(); } - public Set getDepends() + public List getDepends() { - return new HashSet<>(_depends); + return new ArrayList<>(_depends); } public Set getProvides() 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 f6a729db0f4..d0ab02faab1 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 @@ -335,12 +335,13 @@ public class Modules implements Iterable } // Process module dependencies (always processed as may be dynamic) + StartLog.debug("Enabled module %s depends on %s",module.getName(),module.getDepends()); for(String dependsOn:module.getDepends()) { // Look for modules that provide that dependency Set providers = getAvailableProviders(dependsOn); - StartLog.debug("Module %s depends on %s provided by ",module,dependsOn,providers); + StartLog.debug("Module %s depends on %s provided by %s",module,dependsOn,providers); // If there are no known providers of the module if (providers.isEmpty()) @@ -381,11 +382,11 @@ public class Modules implements Iterable private Set getAvailableProviders(String name) { // Get all available providers - Set providers = _provided.get(name); + StartLog.debug("Providers of %s are %s",name,providers); if (providers==null || providers.isEmpty()) return Collections.emptySet(); - + providers = new HashSet<>(providers); // find all currently provided names by other modules @@ -409,13 +410,15 @@ public class Modules implements Iterable { if (provided.contains(p)) { + StartLog.debug("Removing provider %s because %s already enabled",provider,p); i.remove(); break; } } } } - + + StartLog.debug("Available providers of %s are %s",name,providers); return providers; } diff --git a/jetty-start/src/test/resources/usecases/ordered.default.assert.txt b/jetty-start/src/test/resources/usecases/ordered.default.assert.txt new file mode 100644 index 00000000000..80ab7490ced --- /dev/null +++ b/jetty-start/src/test/resources/usecases/ordered.default.assert.txt @@ -0,0 +1,12 @@ +## The XMLs we expect (order is important) +XML|${jetty.home}/etc/base.xml +XML|${jetty.home}/etc/main.xml + +# The LIBs we expect (order is irrelevant) +LIB|${jetty.home}/lib/base.jar +LIB|${jetty.home}/lib/main.jar +LIB|${jetty.home}/lib/other.jar + +# The Properties we expect (order is irrelevant) +PROP|main.prop=value0 +PROP|impl=replacement diff --git a/jetty-start/src/test/resources/usecases/ordered.default.cmdline.txt b/jetty-start/src/test/resources/usecases/ordered.default.cmdline.txt new file mode 100644 index 00000000000..7224543a10f --- /dev/null +++ b/jetty-start/src/test/resources/usecases/ordered.default.cmdline.txt @@ -0,0 +1,2 @@ +--module=main,convenience + diff --git a/jetty-start/src/test/resources/usecases/ordered/modules/convenience.mod b/jetty-start/src/test/resources/usecases/ordered/modules/convenience.mod new file mode 100644 index 00000000000..98189f32d57 --- /dev/null +++ b/jetty-start/src/test/resources/usecases/ordered/modules/convenience.mod @@ -0,0 +1,4 @@ + +[depends] +replacement +something-else diff --git a/jetty-start/src/test/resources/usecases/ordered/modules/original.mod b/jetty-start/src/test/resources/usecases/ordered/modules/original.mod new file mode 100644 index 00000000000..a8f0ed9a779 --- /dev/null +++ b/jetty-start/src/test/resources/usecases/ordered/modules/original.mod @@ -0,0 +1,4 @@ + + +[ini] +impl=original diff --git a/jetty-start/src/test/resources/usecases/ordered/modules/replacement.mod b/jetty-start/src/test/resources/usecases/ordered/modules/replacement.mod new file mode 100644 index 00000000000..aea4b1365d3 --- /dev/null +++ b/jetty-start/src/test/resources/usecases/ordered/modules/replacement.mod @@ -0,0 +1,7 @@ + + +[provides] +original + +[ini] +impl=replacement diff --git a/jetty-start/src/test/resources/usecases/ordered/modules/something-else.mod b/jetty-start/src/test/resources/usecases/ordered/modules/something-else.mod new file mode 100644 index 00000000000..506f5be7313 --- /dev/null +++ b/jetty-start/src/test/resources/usecases/ordered/modules/something-else.mod @@ -0,0 +1,3 @@ + +[depends] +original From a3f77a127c4949a0fcee6dddf9d4b108638cb91b Mon Sep 17 00:00:00 2001 From: olivier lamy Date: Fri, 21 Apr 2017 14:37:48 +1000 Subject: [PATCH 50/80] update bom with new 9.4 modules Signed-off-by: olivier lamy --- jetty-bom/pom.xml | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/jetty-bom/pom.xml b/jetty-bom/pom.xml index 63e0c355518..6b68d819542 100644 --- a/jetty-bom/pom.xml +++ b/jetty-bom/pom.xml @@ -49,12 +49,12 @@ org.eclipse.jetty - jetty-gcloud-memcached-session-manager + jetty-gcloud-session-manager ${project.version} org.eclipse.jetty - jetty-gcloud-session-manager + jetty-home ${project.version} @@ -97,6 +97,11 @@ jetty-jndi ${project.version} + + org.eclipse.jetty + jetty-memcached-sessions + ${project.version} + org.eclipse.jetty jetty-monitor @@ -167,6 +172,16 @@ jetty-spring ${project.version} + + org.eclipse.jetty + jetty-start + ${project.version} + + + org.eclipse.jetty + jetty-unixsocket + ${project.version} + org.eclipse.jetty jetty-util From 63ff4af6b86a0abe12d5e9b6048a83efa1e1ced6 Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Fri, 21 Apr 2017 15:21:04 +1000 Subject: [PATCH 51/80] improved unit test --- .../java/org/eclipse/jetty/servlet/AsyncServletIOTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/AsyncServletIOTest.java b/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/AsyncServletIOTest.java index 38f94f6227d..4f82c04f70f 100644 --- a/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/AsyncServletIOTest.java +++ b/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/AsyncServletIOTest.java @@ -22,6 +22,7 @@ import static java.nio.charset.StandardCharsets.ISO_8859_1; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.not; import static org.hamcrest.Matchers.greaterThanOrEqualTo; +import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.startsWith; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; @@ -624,7 +625,6 @@ public class AsyncServletIOTest .append("Content-Length: 20\r\n") .append("\r\n") .append("12345678\r\n"); - int port=_port; List list = new ArrayList<>(); try (Socket socket = new Socket("localhost",port)) @@ -682,7 +682,7 @@ public class AsyncServletIOTest LOG.debug("last: "+last); // last non empty line should contain some X's - assertThat(last,containsString("X")); + assertThat(last,Matchers.anyOf(containsString("X"),is(""))); // last non empty line should not contain end chunk assertThat(last,not(containsString("0"))); } From f28a7776627a031b57fb83a614b6ee6a4c8afc67 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Fri, 21 Apr 2017 11:06:49 +0200 Subject: [PATCH 52/80] Fixes #1404 - Jetty 9.4.2 does not support constructors with varargs in XML config files. The issue was caused by a missing @Name annotation on the "protocols" parameter. --- .../http2/server/AbstractHTTP2ServerConnectionFactory.java | 2 +- .../jetty/http2/server/HTTP2CServerConnectionFactory.java | 2 +- .../jetty/http2/server/HTTP2ServerConnectionFactory.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/AbstractHTTP2ServerConnectionFactory.java b/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/AbstractHTTP2ServerConnectionFactory.java index 717a8928714..40daa43b043 100644 --- a/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/AbstractHTTP2ServerConnectionFactory.java +++ b/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/AbstractHTTP2ServerConnectionFactory.java @@ -54,7 +54,7 @@ public abstract class AbstractHTTP2ServerConnectionFactory extends AbstractConne this(httpConfiguration,"h2"); } - protected AbstractHTTP2ServerConnectionFactory(@Name("config") HttpConfiguration httpConfiguration, String... protocols) + protected AbstractHTTP2ServerConnectionFactory(@Name("config") HttpConfiguration httpConfiguration, @Name("protocols") String... protocols) { super(protocols); for (String p:protocols) diff --git a/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HTTP2CServerConnectionFactory.java b/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HTTP2CServerConnectionFactory.java index f3d5fb8faab..1c3651b0d9b 100644 --- a/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HTTP2CServerConnectionFactory.java +++ b/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HTTP2CServerConnectionFactory.java @@ -54,7 +54,7 @@ public class HTTP2CServerConnectionFactory extends HTTP2ServerConnectionFactory this(httpConfiguration,"h2c"); } - public HTTP2CServerConnectionFactory(@Name("config") HttpConfiguration httpConfiguration, String... protocols) + public HTTP2CServerConnectionFactory(@Name("config") HttpConfiguration httpConfiguration, @Name("protocols") String... protocols) { super(httpConfiguration,protocols); for (String p:protocols) diff --git a/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HTTP2ServerConnectionFactory.java b/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HTTP2ServerConnectionFactory.java index 7d543243e3d..7b5356b1707 100644 --- a/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HTTP2ServerConnectionFactory.java +++ b/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HTTP2ServerConnectionFactory.java @@ -53,7 +53,7 @@ public class HTTP2ServerConnectionFactory extends AbstractHTTP2ServerConnectionF super(httpConfiguration); } - public HTTP2ServerConnectionFactory(@Name("config") HttpConfiguration httpConfiguration,String... protocols) + public HTTP2ServerConnectionFactory(@Name("config") HttpConfiguration httpConfiguration, @Name("protocols") String... protocols) { super(httpConfiguration,protocols); } From de7c146bd741307cd924a9dcef386d516e75b1e9 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Fri, 21 Apr 2017 11:29:10 +0200 Subject: [PATCH 53/80] Fixes #1235 - DNS lookup in newSSLEngine(InetSocketAddress address). --- .../eclipse/jetty/util/ssl/SslContextFactory.java | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/ssl/SslContextFactory.java b/jetty-util/src/main/java/org/eclipse/jetty/util/ssl/SslContextFactory.java index 21e8af0a626..99d552c6ad7 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/ssl/SslContextFactory.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/ssl/SslContextFactory.java @@ -1560,13 +1560,6 @@ public class SslContextFactory extends AbstractLifeCycle implements Dumpable * If the given {@code address} is null, it is equivalent to {@link #newSSLEngine()}, otherwise * {@link #newSSLEngine(String, int)} is called. *

- * If {@link #getNeedClientAuth()} is {@code true}, then the host name is passed to - * {@link #newSSLEngine(String, int)}, possibly incurring in a reverse DNS lookup, which takes time - * and may hang the selector (since this method is usually called by the selector thread). - *

- * Otherwise, the host address is passed to {@link #newSSLEngine(String, int)} without DNS lookup - * penalties. - *

* Clients that wish to create {@link SSLEngine} instances must use {@link #newSSLEngine(String, int)}. * * @param address the remote peer address @@ -1576,10 +1569,7 @@ public class SslContextFactory extends AbstractLifeCycle implements Dumpable { if (address == null) return newSSLEngine(); - - boolean useHostName = getNeedClientAuth(); - String hostName = useHostName ? address.getHostName() : address.getAddress().getHostAddress(); - return newSSLEngine(hostName, address.getPort()); + return newSSLEngine(address.getHostString(), address.getPort()); } /** From 20ac0dbb76f4ca8c05d31099ed34b1dffd31e192 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Mon, 24 Apr 2017 11:03:32 +0200 Subject: [PATCH 54/80] Code cleanup. --- .../jetty/webapp/ClasspathPatternTest.java | 204 ++++++++---------- 1 file changed, 92 insertions(+), 112 deletions(-) diff --git a/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/ClasspathPatternTest.java b/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/ClasspathPatternTest.java index 47c195dffe0..8482107d30d 100644 --- a/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/ClasspathPatternTest.java +++ b/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/ClasspathPatternTest.java @@ -18,29 +18,21 @@ package org.eclipse.jetty.webapp; -import static org.hamcrest.Matchers.containsInAnyOrder; -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; - import java.util.Arrays; import org.eclipse.jetty.toolchain.test.JDK; -import org.eclipse.jetty.util.IO; import org.eclipse.jetty.util.TypeUtil; import org.eclipse.jetty.util.resource.Resource; import org.hamcrest.Matchers; import org.junit.Assert; import org.junit.Before; import org.junit.Test; - import sun.security.provider.Sun; public class ClasspathPatternTest { private final ClasspathPattern _pattern = new ClasspathPattern(); - + @Before public void before() { @@ -49,66 +41,64 @@ public class ClasspathPatternTest _pattern.add("-org.excluded."); _pattern.add("org.example.FooBar"); _pattern.add("-org.example.Excluded"); - _pattern.addAll(Arrays.asList(new String[]{ - "-org.example.Nested$Minus", - "org.example.Nested", - "org.example.Nested$Something"})); - - - assertThat(_pattern,containsInAnyOrder( - "org.package.", - "-org.excluded.", - "org.example.FooBar", - "-org.example.Excluded", - "-org.example.Nested$Minus", - "org.example.Nested", - "org.example.Nested$Something" - )); + _pattern.addAll(Arrays.asList( + "-org.example.Nested$Minus", + "org.example.Nested", + "org.example.Nested$Something")); + + Assert.assertThat(_pattern, Matchers.containsInAnyOrder( + "org.package.", + "-org.excluded.", + "org.example.FooBar", + "-org.example.Excluded", + "-org.example.Nested$Minus", + "org.example.Nested", + "org.example.Nested$Something" + )); } - - + @Test public void testClassMatch() { - assertTrue(_pattern.match("org.example.FooBar")); - assertTrue(_pattern.match("org.example.Nested")); - - assertFalse(_pattern.match("org.example.Unknown")); - assertFalse(_pattern.match("org.example.FooBar.Unknown")); + Assert.assertTrue(_pattern.match("org.example.FooBar")); + Assert.assertTrue(_pattern.match("org.example.Nested")); + + Assert.assertFalse(_pattern.match("org.example.Unknown")); + Assert.assertFalse(_pattern.match("org.example.FooBar.Unknown")); } - + @Test public void testPackageMatch() { - assertTrue(_pattern.match("org.package.Something")); - assertTrue(_pattern.match("org.package.other.Something")); - - assertFalse(_pattern.match("org.example.Unknown")); - assertFalse(_pattern.match("org.example.FooBar.Unknown")); - assertFalse(_pattern.match("org.example.FooBarElse")); + Assert.assertTrue(_pattern.match("org.package.Something")); + Assert.assertTrue(_pattern.match("org.package.other.Something")); + + Assert.assertFalse(_pattern.match("org.example.Unknown")); + Assert.assertFalse(_pattern.match("org.example.FooBar.Unknown")); + Assert.assertFalse(_pattern.match("org.example.FooBarElse")); } @Test public void testExplicitNestedMatch() { - assertTrue(_pattern.match("org.example.Nested$Something")); - assertFalse(_pattern.match("org.example.Nested$Minus")); - assertTrue(_pattern.match("org.example.Nested$Other")); + Assert.assertTrue(_pattern.match("org.example.Nested$Something")); + Assert.assertFalse(_pattern.match("org.example.Nested$Minus")); + Assert.assertTrue(_pattern.match("org.example.Nested$Other")); } @Test public void testImplicitNestedMatch() { - assertTrue(_pattern.match("org.example.FooBar$Other")); - assertTrue(_pattern.match("org.example.Nested$Other")); + Assert.assertTrue(_pattern.match("org.example.FooBar$Other")); + Assert.assertTrue(_pattern.match("org.example.Nested$Other")); } - + @Test public void testDoubledNested() { - assertTrue(_pattern.match("org.example.Nested$Something$Else")); - - assertFalse(_pattern.match("org.example.Nested$Minus$Else")); + Assert.assertTrue(_pattern.match("org.example.Nested$Something$Else")); + + Assert.assertFalse(_pattern.match("org.example.Nested$Minus$Else")); } @Test @@ -116,29 +106,26 @@ public class ClasspathPatternTest { _pattern.clear(); _pattern.add("."); - assertTrue(_pattern.match("org.example.Anything")); - assertTrue(_pattern.match("org.example.Anything$Else")); + Assert.assertTrue(_pattern.match("org.example.Anything")); + Assert.assertTrue(_pattern.match("org.example.Anything$Else")); } - /** - * - */ @SuppressWarnings("restriction") @Test - public void testiIncludedLocations() throws Exception + public void testIncludedLocations() throws Exception { // jar from JVM classloader Resource loc_string = TypeUtil.getLoadedFrom(String.class); // System.err.println(loc_string); - + // another jar from JVM classloader Resource loc_jsse = TypeUtil.getLoadedFrom(Sun.class); // System.err.println(loc_jsse); - + // a jar from maven repo jar Resource loc_junit = TypeUtil.getLoadedFrom(Test.class); // System.err.println(loc_junit); - + // a jar from another maven repo jar Resource loc_tool = TypeUtil.getLoadedFrom(JDK.class); // System.err.println(loc_tool); @@ -146,41 +133,36 @@ public class ClasspathPatternTest // class file Resource loc_test = TypeUtil.getLoadedFrom(ClasspathPatternTest.class); // System.err.println(loc_test); - + ClasspathPattern pattern = new ClasspathPattern(); pattern.include("something"); - assertThat(pattern.match(String.class),is(false)); - assertThat(pattern.match(Sun.class),is(false)); - assertThat(pattern.match(Test.class),is(false)); - assertThat(pattern.match(JDK.class),is(false)); - assertThat(pattern.match(ClasspathPatternTest.class),is(false)); - + Assert.assertThat(pattern.match(String.class), Matchers.is(false)); + Assert.assertThat(pattern.match(Sun.class), Matchers.is(false)); + Assert.assertThat(pattern.match(Test.class), Matchers.is(false)); + Assert.assertThat(pattern.match(JDK.class), Matchers.is(false)); + Assert.assertThat(pattern.match(ClasspathPatternTest.class), Matchers.is(false)); + // Add directory for both JVM classes pattern.include(loc_string.getFile().getParentFile().toURI().toString()); - + // Add jar for individual class and classes directory - pattern.include(loc_junit.toString(),loc_test.toString()); - - assertThat(pattern.match(String.class),is(true)); - assertThat(pattern.match(Sun.class),is(true)); - assertThat(pattern.match(Test.class),is(true)); - assertThat(pattern.match(JDK.class),is(false)); - assertThat(pattern.match(ClasspathPatternTest.class),is(true)); - + pattern.include(loc_junit.toString(), loc_test.toString()); + + Assert.assertThat(pattern.match(String.class), Matchers.is(true)); + Assert.assertThat(pattern.match(Sun.class), Matchers.is(true)); + Assert.assertThat(pattern.match(Test.class), Matchers.is(true)); + Assert.assertThat(pattern.match(JDK.class), Matchers.is(false)); + Assert.assertThat(pattern.match(ClasspathPatternTest.class), Matchers.is(true)); + // exclude by package name still works pattern.add("-sun.security.provider.Sun"); - assertThat(pattern.match(String.class),is(true)); - assertThat(pattern.match(Sun.class),is(false)); - assertThat(pattern.match(Test.class),is(true)); - assertThat(pattern.match(JDK.class),is(false)); - assertThat(pattern.match(ClasspathPatternTest.class),is(true)); - - + Assert.assertThat(pattern.match(String.class), Matchers.is(true)); + Assert.assertThat(pattern.match(Sun.class), Matchers.is(false)); + Assert.assertThat(pattern.match(Test.class), Matchers.is(true)); + Assert.assertThat(pattern.match(JDK.class), Matchers.is(false)); + Assert.assertThat(pattern.match(ClasspathPatternTest.class), Matchers.is(true)); } - - /** - * - */ + @SuppressWarnings("restriction") @Test public void testExcludeLocations() throws Exception @@ -188,15 +170,15 @@ public class ClasspathPatternTest // jar from JVM classloader Resource loc_string = TypeUtil.getLoadedFrom(String.class); // System.err.println(loc_string); - + // another jar from JVM classloader Resource loc_jsse = TypeUtil.getLoadedFrom(Sun.class); // System.err.println(loc_jsse); - + // a jar from maven repo jar Resource loc_junit = TypeUtil.getLoadedFrom(Test.class); // System.err.println(loc_junit); - + // a jar from another maven repo jar Resource loc_tool = TypeUtil.getLoadedFrom(JDK.class); // System.err.println(loc_tool); @@ -204,45 +186,43 @@ public class ClasspathPatternTest // class file Resource loc_test = TypeUtil.getLoadedFrom(ClasspathPatternTest.class); // System.err.println(loc_test); - + ClasspathPattern pattern = new ClasspathPattern(); - + // include everything pattern.include("."); - - assertThat(pattern.match(String.class),is(true)); - assertThat(pattern.match(Sun.class),is(true)); - assertThat(pattern.match(Test.class),is(true)); - assertThat(pattern.match(JDK.class),is(true)); - assertThat(pattern.match(ClasspathPatternTest.class),is(true)); - + + Assert.assertThat(pattern.match(String.class), Matchers.is(true)); + Assert.assertThat(pattern.match(Sun.class), Matchers.is(true)); + Assert.assertThat(pattern.match(Test.class), Matchers.is(true)); + Assert.assertThat(pattern.match(JDK.class), Matchers.is(true)); + Assert.assertThat(pattern.match(ClasspathPatternTest.class), Matchers.is(true)); + // Add directory for both JVM classes pattern.exclude(loc_string.getFile().getParentFile().toURI().toString()); - - // Add jar for individual class and classes directory - pattern.exclude(loc_junit.toString(),loc_test.toString()); - - assertThat(pattern.match(String.class),is(false)); - assertThat(pattern.match(Sun.class),is(false)); - assertThat(pattern.match(Test.class),is(false)); - assertThat(pattern.match(JDK.class),is(true)); - assertThat(pattern.match(ClasspathPatternTest.class),is(false)); - } - - + // Add jar for individual class and classes directory + pattern.exclude(loc_junit.toString(), loc_test.toString()); + + Assert.assertThat(pattern.match(String.class), Matchers.is(false)); + Assert.assertThat(pattern.match(Sun.class), Matchers.is(false)); + Assert.assertThat(pattern.match(Test.class), Matchers.is(false)); + Assert.assertThat(pattern.match(JDK.class), Matchers.is(true)); + Assert.assertThat(pattern.match(ClasspathPatternTest.class), Matchers.is(false)); + } + @Test public void testLarge() { ClasspathPattern pattern = new ClasspathPattern(); - for (int i=0; i<500; i++) + for (int i = 0; i < 500; i++) { - assertTrue(pattern.add("n"+i+"."+Integer.toHexString(100+i)+".Name")); + Assert.assertTrue(pattern.add("n" + i + "." + Integer.toHexString(100 + i) + ".Name")); } - - for (int i=0; i<500; i++) + + for (int i = 0; i < 500; i++) { - assertTrue(pattern.match("n"+i+"."+Integer.toHexString(100+i)+".Name")); + Assert.assertTrue(pattern.match("n" + i + "." + Integer.toHexString(100 + i) + ".Name")); } } } From 99e5b118bdc853610387d3b55c330e4178c39db1 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Mon, 24 Apr 2017 11:03:57 +0200 Subject: [PATCH 55/80] Fixes to make code compatible with JDK 9. --- .../jetty/annotations/AnnotationParser.java | 4 ++-- .../io/SelectChannelEndPointSslTest.java | 21 +++++++------------ .../jetty/webapp/ClasspathPatternTest.java | 5 +++++ 3 files changed, 15 insertions(+), 15 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 16f7a290838..1520370a86a 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 @@ -581,7 +581,7 @@ public class AnnotationParser throws Exception { Class cz = clazz; - while (cz != null) + while (cz != Object.class) { if (!isParsed(cz.getName())) { @@ -601,7 +601,7 @@ public class AnnotationParser if (visitSuperClasses) cz = cz.getSuperclass(); else - cz = null; + break; } } diff --git a/jetty-io/src/test/java/org/eclipse/jetty/io/SelectChannelEndPointSslTest.java b/jetty-io/src/test/java/org/eclipse/jetty/io/SelectChannelEndPointSslTest.java index a4da692b838..acafab0fdbd 100644 --- a/jetty-io/src/test/java/org/eclipse/jetty/io/SelectChannelEndPointSslTest.java +++ b/jetty-io/src/test/java/org/eclipse/jetty/io/SelectChannelEndPointSslTest.java @@ -18,10 +18,6 @@ package org.eclipse.jetty.io; -import static org.hamcrest.Matchers.greaterThan; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertThat; - import java.io.File; import java.io.IOException; import java.net.Socket; @@ -37,15 +33,21 @@ import javax.net.ssl.SSLException; import javax.net.ssl.SSLSocket; import org.eclipse.jetty.io.ssl.SslConnection; +import org.eclipse.jetty.toolchain.test.JDK; import org.eclipse.jetty.toolchain.test.MavenTestingUtils; import org.eclipse.jetty.toolchain.test.annotation.Stress; import org.eclipse.jetty.util.BufferUtil; import org.eclipse.jetty.util.ssl.SslContextFactory; import org.junit.Assert; +import org.junit.Assume; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; +import static org.hamcrest.Matchers.greaterThan; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThat; + public class SelectChannelEndPointSslTest extends SelectChannelEndPointTest { @@ -261,6 +263,8 @@ public class SelectChannelEndPointSslTest extends SelectChannelEndPointTest @Test public void checkSslEngineBehaviour() throws Exception { + Assume.assumeFalse(JDK.IS_9); + SSLEngine server = __sslCtxFactory.newSSLEngine(); SSLEngine client = __sslCtxFactory.newSSLEngine(); @@ -297,13 +301,11 @@ public class SelectChannelEndPointSslTest extends SelectChannelEndPointTest netC2S.flip(); assertEquals(netC2S.remaining(),result.bytesProduced()); - // start the server server.setUseClientMode(false); server.beginHandshake(); Assert.assertEquals(HandshakeStatus.NEED_UNWRAP,server.getHandshakeStatus()); - // what if we try a needless wrap? serverOut.put(BufferUtil.toBuffer("Hello World")); serverOut.flip(); @@ -314,7 +316,6 @@ public class SelectChannelEndPointSslTest extends SelectChannelEndPointTest assertEquals(0,result.bytesProduced()); assertEquals(HandshakeStatus.NEED_UNWRAP,result.getHandshakeStatus()); - // Do the needed unwrap, to an empty buffer result=server.unwrap(netC2S,BufferUtil.EMPTY_BUFFER); assertEquals(SSLEngineResult.Status.BUFFER_OVERFLOW,result.getStatus()); @@ -322,7 +323,6 @@ public class SelectChannelEndPointSslTest extends SelectChannelEndPointTest assertEquals(0,result.bytesProduced()); assertEquals(HandshakeStatus.NEED_UNWRAP,result.getHandshakeStatus()); - // Do the needed unwrap, to a full buffer serverIn.position(serverIn.limit()); result=server.unwrap(netC2S,serverIn); @@ -331,7 +331,6 @@ public class SelectChannelEndPointSslTest extends SelectChannelEndPointTest assertEquals(0,result.bytesProduced()); assertEquals(HandshakeStatus.NEED_UNWRAP,result.getHandshakeStatus()); - // Do the needed unwrap, to an empty buffer serverIn.clear(); result=server.unwrap(netC2S,serverIn); @@ -343,9 +342,5 @@ public class SelectChannelEndPointSslTest extends SelectChannelEndPointTest server.getDelegatedTask().run(); assertEquals(HandshakeStatus.NEED_WRAP,server.getHandshakeStatus()); - - - - } } diff --git a/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/ClasspathPatternTest.java b/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/ClasspathPatternTest.java index 8482107d30d..468ea5068d4 100644 --- a/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/ClasspathPatternTest.java +++ b/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/ClasspathPatternTest.java @@ -25,6 +25,7 @@ import org.eclipse.jetty.util.TypeUtil; import org.eclipse.jetty.util.resource.Resource; import org.hamcrest.Matchers; import org.junit.Assert; +import org.junit.Assume; import org.junit.Before; import org.junit.Test; import sun.security.provider.Sun; @@ -114,6 +115,8 @@ public class ClasspathPatternTest @Test public void testIncludedLocations() throws Exception { + Assume.assumeFalse(JDK.IS_9); + // jar from JVM classloader Resource loc_string = TypeUtil.getLoadedFrom(String.class); // System.err.println(loc_string); @@ -167,6 +170,8 @@ public class ClasspathPatternTest @Test public void testExcludeLocations() throws Exception { + Assume.assumeFalse(JDK.IS_9); + // jar from JVM classloader Resource loc_string = TypeUtil.getLoadedFrom(String.class); // System.err.println(loc_string); From 8af0d153e07c8694e405c4e82d0f4f7110d857b8 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Mon, 24 Apr 2017 18:42:19 +0200 Subject: [PATCH 56/80] Updated version to correct value. --- jetty-bom/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jetty-bom/pom.xml b/jetty-bom/pom.xml index 26b41b9e927..0fefd5ed3df 100644 --- a/jetty-bom/pom.xml +++ b/jetty-bom/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.3.18-SNAPSHOT + 9.3.19-SNAPSHOT 4.0.0 jetty-bom From f12a765f10b17ec503ba9c424c4bec22fdeb2da0 Mon Sep 17 00:00:00 2001 From: WalkerWatch Date: Mon, 24 Apr 2017 14:58:02 -0400 Subject: [PATCH 57/80] Documentation cleanup and session additions. Resolves #1501 Signed-off-by: WalkerWatch --- jetty-documentation/pom.xml | 2 +- .../administration/runner/jetty-runner.adoc | 16 ++--- .../session-configuration-file-system.adoc | 25 ++++++-- .../session-configuration-gcloud.adoc | 25 +++++++- .../session-configuration-infinispan.adoc | 59 +++++++++++++++++-- .../sessions/session-configuration-jdbc.adoc | 21 ++++++- .../session-configuration-mongodb.adoc | 25 +++++++- .../configuring/security/jaas-support.adoc | 2 +- 8 files changed, 149 insertions(+), 26 deletions(-) diff --git a/jetty-documentation/pom.xml b/jetty-documentation/pom.xml index ebaa3b7bc37..682e69e680d 100644 --- a/jetty-documentation/pom.xml +++ b/jetty-documentation/pom.xml @@ -58,7 +58,7 @@ true true ${project.version} - http://www.eclipse.org/jetty/javadoc/${project.version} + zhttp://www.eclipse.org/jetty/javadoc/${project.version} http://download.eclipse.org/jetty/stable-9/xref ${basedir}/.. https://github.com/eclipse/jetty.project/tree/jetty-9.4.x diff --git a/jetty-documentation/src/main/asciidoc/administration/runner/jetty-runner.adoc b/jetty-documentation/src/main/asciidoc/administration/runner/jetty-runner.adoc index 3b67ae867bd..45c4006ad4c 100644 --- a/jetty-documentation/src/main/asciidoc/administration/runner/jetty-runner.adoc +++ b/jetty-documentation/src/main/asciidoc/administration/runner/jetty-runner.adoc @@ -63,14 +63,14 @@ By default, `jetty-runner` implements all Configuration Classes so that users ca If you wish to only implement certain Configuration Classes, they will need to be defined in the context xml for the webapp/context. The default Configuration Classes are: - `org.eclipse.jetty.webapp.WebInfConfiguration` - `org.eclipse.jetty.webapp.WebXmlConfiguration` - `org.eclipse.jetty.webapp.MetaInfConfiguration` - `org.eclipse.jetty.webapp.FragmentConfiguration` - `org.eclipse.jetty.webapp.JettyWebXmlConfiguration` - `org.eclipse.jetty.plus.webapp.EnvConfiguration` - `org.eclipse.jetty.plus.webapp.PlusConfiguration` - `org.eclipse.jetty.annotations.AnnotationConfiguration` +`org.eclipse.jetty.webapp.WebInfConfiguration` +`org.eclipse.jetty.webapp.WebXmlConfiguration` +`org.eclipse.jetty.webapp.MetaInfConfiguration` +`org.eclipse.jetty.webapp.FragmentConfiguration` +`org.eclipse.jetty.webapp.JettyWebXmlConfiguration` +`org.eclipse.jetty.plus.webapp.EnvConfiguration` +`org.eclipse.jetty.plus.webapp.PlusConfiguration` +`org.eclipse.jetty.annotations.AnnotationConfiguration` You can learn more about implementing specific Configuration Classes link:https://www.eclipse.org/jetty/documentation/current/configuring-webapps.html#webapp-configurations[here.] diff --git a/jetty-documentation/src/main/asciidoc/administration/sessions/session-configuration-file-system.adoc b/jetty-documentation/src/main/asciidoc/administration/sessions/session-configuration-file-system.adoc index f23ef4d68ab..1dd3770fcba 100644 --- a/jetty-documentation/src/main/asciidoc/administration/sessions/session-configuration-file-system.adoc +++ b/jetty-documentation/src/main/asciidoc/administration/sessions/session-configuration-file-system.adoc @@ -18,6 +18,8 @@ === Non-Clustered Session Management: File System +==== Enabling File System Sessions + When using the Jetty distribution, you will first need to enable the `session-store-file` link:#startup-modules[module] for your link:#startup-base-and-home[Jetty base] using the `--add-to-start` argument on the command line. [source, screen, subs="{sub-order}"] @@ -33,16 +35,19 @@ MKDIR : ${jetty.base}/sessions INFO : Base directory was modified ---- -//TODO - Callout default Session file location - note it is configurable Doing this enables the File System Session module and any dependent modules or files needed for it to run on the server. -The example above is running an fresh `${jetty.base}` with nothing enabled. +The example above is using a fresh `${jetty.base}` with nothing else enabled. + When the `--add-to-start` argument was added to the command line, it enabled the the `session-store-file` module as well as the `sessions` and `server` modules, which are required for the File System session management to operate. Additionally a `${jetty.base}/sessions` directory was created. By default Session files will be saved to this directory. -In addition to adding these modules to the classpath of the server it also added several ini configuration files to the `start.d` directory of the `${jetty.base}`. +In addition to adding these modules to the classpath of the server, several ini configuration files were added to the `${jetty.base}/start.d` directory. -Opening the `start.d/session-store-file.ini` will show a list of all the configurable options for the file system session module: + +==== Configuring File System Session Properties + +Opening `start.d/session-store-file.ini` will show a list of all the configurable options for the file system session module: [source, screen, subs="{sub-order}"] ---- @@ -54,6 +59,7 @@ Opening the `start.d/session-store-file.ini` will show a list of all the configu jetty.session.file.storeDir=${jetty.base}/sessions #jetty.session.file.deleteUnrestorableFiles=false +#jetty.session.savePeriod.seconds=0 ---- jetty.session.storeDir:: @@ -61,3 +67,14 @@ This defines the location for storage of Session files. jetty.session.file.deleteUnrestorableFiles:: Boolean. If set to true, unreadable files will be deleted: this is useful to prevent repeated logging of the same error when the scavenger periodically (re-) attempts to load the corrupted information for a session in order to expire it. +jetty.session.savePeriod.seconds=0:: +By default whenever the last concurrent request leaves a session, that session is always persisted via the `SessionDataStore`, even if the only thing that changed on the session is its updated last access time. +A non-zero value means that the `SessionDataStore` will skip persisting the session if only the access time changed, and it has been less than `savePeriod` seconds since the last time the session was written. ++ +____ +[NOTE] +Configuring `savePeriod` is useful if your persistence technology is very slow/costly for writes. +In a clustered environment, there is a risk of the last access time of the session being out-of-date in the shared store for up to `savePeriod` seconds. +This allows the possibility that a node may prematurely expire the session, even though it is in use by another node. +Thorough consideration of the `maxIdleTime` of the session when setting the `savePeriod` is imperative - there is no point in setting a `savePeriod` that is larger than the `maxIdleTime`. +____ diff --git a/jetty-documentation/src/main/asciidoc/administration/sessions/session-configuration-gcloud.adoc b/jetty-documentation/src/main/asciidoc/administration/sessions/session-configuration-gcloud.adoc index 2b493c7cdf8..a1b95614edd 100644 --- a/jetty-documentation/src/main/asciidoc/administration/sessions/session-configuration-gcloud.adoc +++ b/jetty-documentation/src/main/asciidoc/administration/sessions/session-configuration-gcloud.adoc @@ -58,7 +58,7 @@ To enable communication using the GCloud Emulator: * Ensure you have the GCloud SDK installed: https://cloud.google.com/sdk/?hl=en * Follow the instructions link:https://cloud.google.com/datastore/docs/tools/datastore-emulator[here] on how to start the GCloud datastore emulator, and how to propagate the environment variables that it creates to the terminal in which you run Jetty. -==== Configuring the Google Cloud DataStore Module +==== Enabling the Google Cloud DataStore Module When using the Jetty distribution, you will first need to enable the `session-store-gcloud` link:#startup-modules[module] for your link:#startup-base-and-home[Jetty base] using the `--add-to-start` argument on the command line. @@ -177,7 +177,7 @@ Usage: java -jar $JETTY_HOME/start.jar [options] [properties] [configs] ---- Doing this enables the GCloud Session module and any dependent session modules or files needed for it to run on the server. -The example above is running an fresh `${jetty.base}` with nothing enabled. +The example above is using a fresh `${jetty.base}` with nothing else enabled. Because the Google Cloud DataStore is not a technology provided by the Eclipse Foundation, users are prompted to assent to the licenses of the external vendor (Apache in this case). You will notice, however, that the above output presented a warning: GCloud requires certain Java Commons Logging features to work correctly. @@ -200,13 +200,16 @@ INFO : Base directory was modified ---- When the `--add-to-start` argument was added to the command line the first time, it enabled the the `session-store-gcloud` module as well as several others, such as as `server`, `sessions`, `webapp` and others which are required for GCloud session management to operate; the `slf4j-simple-impl` and its dependent modules were added when the the command was run the second time. -In addition to adding these modules to the classpath of the server it also added the respective configuration files to the `start.d` directory of the `${jetty.base}`. + +In addition to adding these modules to the classpath of the server it also added the respective configuration files to the `${jetty.base}start.d` directory. ____ [NOTE] If you have updated versions of the jar files automatically downloaded by Jetty, you can place them in the associated `${jetty.base}/lib/` directory and use the `--skip-file-validation=` command line option to prevent errors when starting your server. ____ +==== Configuring GCloud Session Properties + Opening the `start.d/session-store-gcloud.ini` will display a list of all the configurable properties for the Google Cloud DataStore module: [source, screen, subs="{sub-order}"] @@ -219,6 +222,8 @@ Opening the `start.d/session-store-gcloud.ini` will display a list of all the co ## GCloudDatastore Session config +#jetty.session.gracePeriod.seconds=3600 +#jetty.session.savePeriod.seconds=0 #jetty.session.gcloud.maxRetries=5 #jetty.session.gcloud.backoffMs=1000 #jetty.session.gcloud.namespace= @@ -236,6 +241,20 @@ Opening the `start.d/session-store-gcloud.ini` will display a list of all the co #jetty.session.gcloud.model.attributes=attributes ---- +jetty.session.gracePeriod.seconds:: +Amount of time, in seconds, to wait for other nodes to be checked to verify an expired session is in fact expired throughout the cluster before closing it. +jetty.session.savePeriod.seconds=0:: +By default whenever the last concurrent request leaves a session, that session is always persisted via the `SessionDataStore`, even if the only thing that changed on the session is its updated last access time. +A non-zero value means that the `SessionDataStore` will skip persisting the session if only the access time changed, and it has been less than `savePeriod` seconds since the last time the session was written. ++ +____ +[NOTE] +Configuring `savePeriod` is useful if your persistence technology is very slow/costly for writes. +In a clustered environment, there is a risk of the last access time of the session being out-of-date in the shared store for up to `savePeriod` seconds. +This allows the possibility that a node may prematurely expire the session, even though it is in use by another node. +Thorough consideration of the `maxIdleTime` of the session when setting the `savePeriod` is imperative - there is no point in setting a `savePeriod` that is larger than the `maxIdleTime`. +____ + jetty.session.gcloud.maxRetries:: Maxmium number of tries to connect to GCloud DataStore to write sessions. jetty.session.gcloud.backoffMs:: diff --git a/jetty-documentation/src/main/asciidoc/administration/sessions/session-configuration-infinispan.adoc b/jetty-documentation/src/main/asciidoc/administration/sessions/session-configuration-infinispan.adoc index eebd9937726..c4cad1f7669 100644 --- a/jetty-documentation/src/main/asciidoc/administration/sessions/session-configuration-infinispan.adoc +++ b/jetty-documentation/src/main/asciidoc/administration/sessions/session-configuration-infinispan.adoc @@ -18,6 +18,8 @@ === Clustered Session Management: Inifinspan +==== Enabling Infinispan Sessions + When using the Jetty distribution, you will first need to enable the `session-store-infinispan-remote` link:#startup-modules[module] for your link:#startup-base-and-home[Jetty base] using the `--add-to-start` argument on the command line. [source, screen, subs="{sub-order}"] @@ -50,17 +52,21 @@ INFO : Base directory was modified ---- Doing this enables the remote Infinispan Session module and any dependent modules or files needed for it to run on the server. -The example above is running an fresh `${jetty.base}` with nothing enabled. +The example above is using a fresh `${jetty.base}` with nothing else enabled. Because Infinispan is not a technology provided by the Eclipse Foundation, users are prompted to assent to the licenses of the external vendor (Apache in this case). + When the `--add-to-start` argument was added to the command line, it enabled the the `session-store-infinispan-remote` module as well as the `sessions` and `server` modules, which are required for Infinispan session management to operate. It also downloaded the needed Infinispan-specific jar files and created a directory named `${jetty.base}/lib/infinispan/` to house them. -In addition to adding these modules to the classpath of the server it also added several ini configuration files to the `start.d` directory of the `${jetty.base}`. + +In addition to adding these modules to the classpath of the server it also added several ini configuration files to the `${jetty.base}/start.d` directory. ____ [NOTE] If you have updated versions of the jar files automatically downloaded by Jetty, you can place them in the associated `${jetty.base}/lib/` directory and use the `--skip-file-validation=` command line option to prevent errors when starting your server. ____ +==== Configuring Inifinspan Remote Properties + Opening the `start.d/session-store-infinispan-remote.ini` will show a list of all the configurable options for the JDBC module: [source, screen, subs="{sub-order}"] @@ -74,6 +80,7 @@ Opening the `start.d/session-store-infinispan-remote.ini` will show a list of al #jetty.session.infinispan.remoteCacheName=sessions #jetty.session.infinispan.idleTimeout.seconds=0 #jetty.session.gracePeriod.seconds=3600 +#jetty.session.savePeriod.seconds=0 ---- jetty.session.infinispan.remoteCacheName:: @@ -82,7 +89,17 @@ jetty.session.infinispan.idleTimeout.seconds:: Amount of time, in seconds, that the system allows the connector to remain idle before closing the connection. jetty.session.gracePeriod.seconds:: Amount of time, in seconds, to wait for other nodes to be checked to verify an expired session is in fact expired throughout the cluster before closing it. - +jetty.session.savePeriod.seconds=0:: +By default whenever the last concurrent request leaves a session, that session is always persisted via the `SessionDataStore`, even if the only thing that changed on the session is its updated last access time. +A non-zero value means that the `SessionDataStore` will skip persisting the session if only the access time changed, and it has been less than `savePeriod` seconds since the last time the session was written. ++ +____ +[NOTE] +Configuring `savePeriod` is useful if your persistence technology is very slow/costly for writes. +In a clustered environment, there is a risk of the last access time of the session being out-of-date in the shared store for up to `savePeriod` seconds. +This allows the possibility that a node may prematurely expire the session, even though it is in use by another node. +Thorough consideration of the `maxIdleTime` of the session when setting the `savePeriod` is imperative - there is no point in setting a `savePeriod` that is larger than the `maxIdleTime`. +____ ==== Configuring Embedded Inifinspan Clustering @@ -113,8 +130,40 @@ INFO : Base directory was modified ---- Doing this enables the embedded Infinispan Session module and any dependent modules or files needed for it to run on the server. -The example above is running an fresh `${jetty.base}` with nothing enabled. +The example above is using a fresh `${jetty.base}` with nothing else enabled. Because Infinispan is not a technology provided by the Eclipse Foundation, users are prompted to assent to the licenses of the external vendor (Apache in this case). + When the `--add-to-start` argument was added to the command line, it enabled the the `session-store-infinispan-embedded` module as well as the `sessions` and `server` modules, which are required for Infinispan session management to operate. It also downloaded the needed Infinispan-specific jar files and created a directory named `${jetty.base}/lib/infinispan/` to house them. -In addition to adding these modules to the classpath of the server it also added several ini configuration files to the `start.d` directory of the `${jetty.base}`. + +In addition to adding these modules to the classpath of the server it also added several ini configuration files to the `${jetty.base}/start.d` directory. + +==== Configuring Inifinspan Embedded Properties + +Opening the `start.d/session-store-infinispan-remote.ini` will show a list of all the configurable options for the JDBC module: + +[source, screen, subs="{sub-order}"] +---- +# --------------------------------------- +# Module: session-store-infinispan-embedded +# Enables session data store in a local Infinispan cache +# --------------------------------------- +--module=session-store-infinispan-embedded + +#jetty.session.gracePeriod.seconds=3600 +#jetty.session.savePeriod.seconds=0 +---- + +jetty.session.gracePeriod.seconds:: +Amount of time, in seconds, to wait for other nodes to be checked to verify an expired session is in fact expired throughout the cluster before closing it. +jetty.session.savePeriod.seconds=0:: +By default whenever the last concurrent request leaves a session, that session is always persisted via the `SessionDataStore`, even if the only thing that changed on the session is its updated last access time. +A non-zero value means that the `SessionDataStore` will skip persisting the session if only the access time changed, and it has been less than `savePeriod` seconds since the last time the session was written. ++ +____ +[NOTE] +Configuring `savePeriod` is useful if your persistence technology is very slow/costly for writes. +In a clustered environment, there is a risk of the last access time of the session being out-of-date in the shared store for up to `savePeriod` seconds. +This allows the possibility that a node may prematurely expire the session, even though it is in use by another node. +Thorough consideration of the `maxIdleTime` of the session when setting the `savePeriod` is imperative - there is no point in setting a `savePeriod` that is larger than the `maxIdleTime`. +____ diff --git a/jetty-documentation/src/main/asciidoc/administration/sessions/session-configuration-jdbc.adoc b/jetty-documentation/src/main/asciidoc/administration/sessions/session-configuration-jdbc.adoc index 101618e0b96..4902b880d33 100644 --- a/jetty-documentation/src/main/asciidoc/administration/sessions/session-configuration-jdbc.adoc +++ b/jetty-documentation/src/main/asciidoc/administration/sessions/session-configuration-jdbc.adoc @@ -18,6 +18,8 @@ === Clustered Session Management: JDBC +==== Enabling JDBC Sessions + When using the Jetty distribution, you will first need to enable the `session-store-jdbc` link:#startup-modules[module] for your link:#startup-base-and-home[Jetty base] using the `--add-to-start` argument on the command line. [source, screen, subs="{sub-order}"] @@ -34,9 +36,13 @@ INFO : Base directory was modified ---- Doing this enables the JDBC Session module and any dependent modules or files needed for it to run on the server. -The example above is running an fresh `${jetty.base}` with nothing enabled. +The example above is using a fresh `${jetty.base}` with nothing else enabled. + When the `--add-to-start` argument was added to the command line, it enabled the the `session-store-jdbc` module as well as the `sessions` and `server` modules, which are required for JDBC session management to operate. -In addition to adding these modules to the classpath of the server it also added several ini configuration files to the `start.d` directory of the `${jetty.base}`. + +In addition to adding these modules to the classpath of the server, several ini configuration files were added to the `${jetty.base}/start.d` directory. + +==== Configuring JDBC Session Properties Opening the `start.d/session-store-jdbc.ini` will show a list of all the configurable options for the JDBC module: @@ -81,6 +87,17 @@ db-connection-type=datasource jetty.session.gracePeriod.seconds:: Amount of time, in seconds, to wait for other nodes to be checked to verify an expired session is in fact expired throughout the cluster before closing it. +jetty.session.savePeriod.seconds=0:: +By default whenever the last concurrent request leaves a session, that session is always persisted via the `SessionDataStore`, even if the only thing that changed on the session is its updated last access time. +A non-zero value means that the `SessionDataStore` will skip persisting the session if only the access time changed, and it has been less than `savePeriod` seconds since the last time the session was written. ++ +____ +[NOTE] +Configuring `savePeriod` is useful if your persistence technology is very slow/costly for writes. +In a clustered environment, there is a risk of the last access time of the session being out-of-date in the shared store for up to `savePeriod` seconds. +This allows the possibility that a node may prematurely expire the session, even though it is in use by another node. +Thorough consideration of the `maxIdleTime` of the session when setting the `savePeriod` is imperative - there is no point in setting a `savePeriod` that is larger than the `maxIdleTime`. +____ db-connection-type:: Set to either `datasource` or `driver` depending on the type of connection being used. diff --git a/jetty-documentation/src/main/asciidoc/administration/sessions/session-configuration-mongodb.adoc b/jetty-documentation/src/main/asciidoc/administration/sessions/session-configuration-mongodb.adoc index 3e605f945b5..770b90456b1 100644 --- a/jetty-documentation/src/main/asciidoc/administration/sessions/session-configuration-mongodb.adoc +++ b/jetty-documentation/src/main/asciidoc/administration/sessions/session-configuration-mongodb.adoc @@ -18,6 +18,8 @@ === Clustered Session Management: MongoDB +==== Enabling MongoDB Sessions + When using the Jetty distribution, you will first need to enable the `session-store-mongo` link:#startup-modules[module] for your link:#startup-base-and-home[Jetty base] using the `--add-to-start` argument on the command line. [source, screen, subs="{sub-order}"] @@ -49,17 +51,21 @@ INFO : Base directory was modified ---- Doing this enables the MongoDB Session module and any dependent modules or files needed for it to run on the server. -The example above is running an fresh `${jetty.base}` with nothing enabled. +The example above is using a fresh `${jetty.base}` with nothing else enabled. + Because MongoDB is not a technology provided by the Eclipse Foundation, users are prompted to assent to the licenses of the external vendor (Apache in this case). When the `--add-to-start` argument was added to the command line, it enabled the the `session-store-mongo` module as well as the `sessions` and `server` modules, which are required for MongoDB session management to operate.. It also downloaded the needed Mongo-specific jar file and created a directory named `${jetty.base}/lib/nosql/` to house it. -In addition to adding these modules to the classpath of the server it also added several ini configuration files to the `start.d` directory of the `${jetty.base}`. + +In addition to adding these modules to the classpath of the server, several ini configuration files were added to the `${jetty.base}/start.d` directory. ____ [NOTE] If you have updated versions of the jar files automatically downloaded by Jetty, you can place them in the associated `${jetty.base}/lib/` directory and use the `--skip-file-validation=` command line option to prevent errors when starting your server. ____ +==== Configuring MongoDB Session Properties + Opening the `start.d/session-store-mongo.ini` will show a list of all the configurable options for the MongoDB module: [source, screen, subs="{sub-order}"] @@ -73,6 +79,7 @@ Opening the `start.d/session-store-mongo.ini` will show a list of all the config #jetty.session.mongo.dbName=HttpSessions #jetty.session.mongo.collectionName=jettySessions #jetty.session.gracePeriod.seconds=3600 +#jetty.session.savePeriod.seconds=0 connection-type=address #jetty.session.mongo.host=localhost @@ -82,6 +89,20 @@ connection-type=address #jetty.session.mongo.connectionString=mongodb://localhost ---- +jetty.session.gracePeriod.seconds:: +Amount of time, in seconds, to wait for other nodes to be checked to verify an expired session is in fact expired throughout the cluster before closing it. +jetty.session.savePeriod.seconds=0:: +By default whenever the last concurrent request leaves a session, that session is always persisted via the `SessionDataStore`, even if the only thing that changed on the session is its updated last access time. +A non-zero value means that the `SessionDataStore` will skip persisting the session if only the access time changed, and it has been less than `savePeriod` seconds since the last time the session was written. ++ +____ +[NOTE] +Configuring `savePeriod` is useful if your persistence technology is very slow/costly for writes. +In a clustered environment, there is a risk of the last access time of the session being out-of-date in the shared store for up to `savePeriod` seconds. +This allows the possibility that a node may prematurely expire the session, even though it is in use by another node. +Thorough consideration of the `maxIdleTime` of the session when setting the `savePeriod` is imperative - there is no point in setting a `savePeriod` that is larger than the `maxIdleTime`. +____ + jetty.session.mongo.dbName:: Name of the database in Mongo used to store the Session collection. jetty.session.mongo.collectionName:: diff --git a/jetty-documentation/src/main/asciidoc/configuring/security/jaas-support.adoc b/jetty-documentation/src/main/asciidoc/configuring/security/jaas-support.adoc index 1d2dd0b6e1e..665dd0b2786 100644 --- a/jetty-documentation/src/main/asciidoc/configuring/security/jaas-support.adoc +++ b/jetty-documentation/src/main/asciidoc/configuring/security/jaas-support.adoc @@ -122,7 +122,7 @@ An example: [[jaas-step-2]] ===== Step 2 -Set up your `LoginModule` in a configuration file, following the http://java.sun.com/j2se/1.4.2/docs/api/javax/security/auth/login/Configuration.html[syntax rules] : +Set up your `LoginModule` in a configuration file, following the https://docs.oracle.com/javase/7/docs/api/javax/security/auth/login/Configuration.html[syntax rules] : [source,ini] ---- From 417e6d32c2bbf015ed6a531d421a39d9d705dfb2 Mon Sep 17 00:00:00 2001 From: WalkerWatch Date: Mon, 24 Apr 2017 14:59:37 -0400 Subject: [PATCH 58/80] Pom fix Signed-off-by: WalkerWatch --- jetty-documentation/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jetty-documentation/pom.xml b/jetty-documentation/pom.xml index 682e69e680d..ebaa3b7bc37 100644 --- a/jetty-documentation/pom.xml +++ b/jetty-documentation/pom.xml @@ -58,7 +58,7 @@ true true ${project.version} - zhttp://www.eclipse.org/jetty/javadoc/${project.version} + http://www.eclipse.org/jetty/javadoc/${project.version} http://download.eclipse.org/jetty/stable-9/xref ${basedir}/.. https://github.com/eclipse/jetty.project/tree/jetty-9.4.x From e5b5a3c4ee1103dde4e44805f8b6b60f18157866 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Mon, 24 Apr 2017 12:42:57 -0700 Subject: [PATCH 59/80] Issue #1500 - adding testcase --- .../eclipse/jetty/servlet/ErrorPageTest.java | 60 +++++++++++++++---- 1 file changed, 48 insertions(+), 12 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 03e0b3a1a09..654edb440fa 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 @@ -18,9 +18,12 @@ package org.eclipse.jetty.servlet; +import static org.hamcrest.CoreMatchers.containsString; +import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; import java.io.IOException; +import java.io.PrintWriter; import javax.servlet.Servlet; import javax.servlet.ServletException; @@ -31,7 +34,6 @@ import javax.servlet.http.HttpServletResponse; import org.eclipse.jetty.server.Dispatcher; import org.eclipse.jetty.server.HttpChannel; import org.eclipse.jetty.server.LocalConnector; -import org.eclipse.jetty.server.QuietServletException; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.util.log.StacklessLogging; import org.hamcrest.Matchers; @@ -39,9 +41,6 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; -/** - * - */ public class ErrorPageTest { private Server _server; @@ -62,6 +61,7 @@ public class ErrorPageTest context.addServlet(DefaultServlet.class, "/"); context.addServlet(FailServlet.class, "/fail/*"); + context.addServlet(FailClosedServlet.class, "/fail-closed/*"); context.addServlet(ErrorServlet.class, "/error/*"); ErrorPageErrorHandler error = new ErrorPageErrorHandler(); @@ -81,7 +81,24 @@ public class ErrorPageTest _server.stop(); _server.join(); } - + + @Test + 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")); + assertThat(response,Matchers.containsString("ERROR_CODE: 599")); + assertThat(response,Matchers.containsString("ERROR_EXCEPTION: null")); + assertThat(response,Matchers.containsString("ERROR_EXCEPTION_TYPE: null")); + assertThat(response,Matchers.containsString("ERROR_SERVLET: org.eclipse.jetty.servlet.ErrorPageTest$FailClosedServlet-")); + assertThat(response,Matchers.containsString("ERROR_REQUEST_URI: /fail-closed/")); + + assertThat(response,not(containsString("This shouldn't be seen"))); + } + @Test public void testErrorCode() throws Exception { @@ -152,17 +169,36 @@ public class ErrorPageTest } } + public static class FailClosedServlet extends HttpServlet implements Servlet + { + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException + { + response.sendError(599); + // The below should result in no operation, as response should be closed. + try + { + response.setStatus(200); // this status code should not be seen + response.getWriter().append("This shouldn't be seen"); + } + catch (Throwable ignore) + { + } + } + } + public static class ErrorServlet extends HttpServlet implements Servlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - response.getWriter().println("ERROR_PAGE: "+request.getPathInfo()); - response.getWriter().println("ERROR_MESSAGE: "+request.getAttribute(Dispatcher.ERROR_MESSAGE)); - response.getWriter().println("ERROR_CODE: "+request.getAttribute(Dispatcher.ERROR_STATUS_CODE)); - response.getWriter().println("ERROR_EXCEPTION: "+request.getAttribute(Dispatcher.ERROR_EXCEPTION)); - response.getWriter().println("ERROR_EXCEPTION_TYPE: "+request.getAttribute(Dispatcher.ERROR_EXCEPTION_TYPE)); - response.getWriter().println("ERROR_SERVLET: "+request.getAttribute(Dispatcher.ERROR_SERVLET_NAME)); - response.getWriter().println("ERROR_REQUEST_URI: "+request.getAttribute(Dispatcher.ERROR_REQUEST_URI)); + PrintWriter writer = response.getWriter(); + writer.println("DISPATCH: " + request.getDispatcherType().name()); + writer.println("ERROR_PAGE: " + request.getPathInfo()); + writer.println("ERROR_MESSAGE: " + request.getAttribute(Dispatcher.ERROR_MESSAGE)); + writer.println("ERROR_CODE: " + request.getAttribute(Dispatcher.ERROR_STATUS_CODE)); + writer.println("ERROR_EXCEPTION: " + request.getAttribute(Dispatcher.ERROR_EXCEPTION)); + 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)); } } From 4c5dd93b30f617bbf028405751327f3a2a0e51ac Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Mon, 24 Apr 2017 16:08:37 -0700 Subject: [PATCH 60/80] Issue #1502 - Changing WSUF target creation used by PathMappings match --- .../jetty/websocket/jsr356/server/AltFilterTest.java | 2 +- .../websocket/server/WebSocketUpgradeFilter.java | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/AltFilterTest.java b/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/AltFilterTest.java index d5e191c14fb..734f7581022 100644 --- a/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/AltFilterTest.java +++ b/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/AltFilterTest.java @@ -77,7 +77,7 @@ public class AltFilterTest { client.start(); JettyEchoSocket clientEcho = new JettyEchoSocket(); - Future future = client.connect(clientEcho,uri.resolve("echo")); + Future future = client.connect(clientEcho,uri.resolve("echo;jsession=xyz")); // wait for connect future.get(1,TimeUnit.SECONDS); clientEcho.sendMessage("Hello Echo"); diff --git a/jetty-websocket/websocket-server/src/main/java/org/eclipse/jetty/websocket/server/WebSocketUpgradeFilter.java b/jetty-websocket/websocket-server/src/main/java/org/eclipse/jetty/websocket/server/WebSocketUpgradeFilter.java index 55bd7521a26..840a8cabd2a 100644 --- a/jetty-websocket/websocket-server/src/main/java/org/eclipse/jetty/websocket/server/WebSocketUpgradeFilter.java +++ b/jetty-websocket/websocket-server/src/main/java/org/eclipse/jetty/websocket/server/WebSocketUpgradeFilter.java @@ -207,12 +207,13 @@ public class WebSocketUpgradeFilter implements Filter, MappedWebSocketCreator, D return; } - // Since this is a filter, we need to be smart about determining the target path - String contextPath = httpreq.getContextPath(); - String target = httpreq.getRequestURI(); - if (target.startsWith(contextPath)) + // Since this is a filter, we need to be smart about determining the target path. + // We should rely on the Container for stripping path parameters and its ilk before + // attempting to match a specific mapped websocket creator. + String target = httpreq.getServletPath(); + if (httpreq.getPathInfo() != null) { - target = target.substring(contextPath.length()); + target = target + httpreq.getPathInfo(); } MappedResource resource = configuration.getMatch(target); From 8c26eddbc642855d669d794625d6eb0411ce73c0 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Wed, 26 Apr 2017 10:43:45 +0200 Subject: [PATCH 61/80] Fixes #1504 - Improve defaults for HTTP/2 flow control. Defaults are now 16/8 MiB on the client, and 1/0.5 MiB on the server for session/stream. --- .../org/eclipse/jetty/http2/client/HTTP2Client.java | 6 ++---- .../eclipse/jetty/http2/client/AbstractTest.java | 13 +++++++++++-- .../jetty/http2/client/FlowControlStalledTest.java | 4 ++++ .../jetty/http2/client/FlowControlStrategyTest.java | 5 ++++- .../AbstractHTTP2ServerConnectionFactory.java | 4 ++-- 5 files changed, 23 insertions(+), 9 deletions(-) diff --git a/jetty-http2/http2-client/src/main/java/org/eclipse/jetty/http2/client/HTTP2Client.java b/jetty-http2/http2-client/src/main/java/org/eclipse/jetty/http2/client/HTTP2Client.java index f2c33bf3e63..b1ab926a715 100644 --- a/jetty-http2/http2-client/src/main/java/org/eclipse/jetty/http2/client/HTTP2Client.java +++ b/jetty-http2/http2-client/src/main/java/org/eclipse/jetty/http2/client/HTTP2Client.java @@ -47,11 +47,9 @@ import org.eclipse.jetty.util.annotation.ManagedAttribute; import org.eclipse.jetty.util.annotation.ManagedObject; import org.eclipse.jetty.util.component.ContainerLifeCycle; import org.eclipse.jetty.util.ssl.SslContextFactory; -import org.eclipse.jetty.util.thread.ExecutionStrategy; import org.eclipse.jetty.util.thread.QueuedThreadPool; import org.eclipse.jetty.util.thread.ScheduledExecutorScheduler; import org.eclipse.jetty.util.thread.Scheduler; -import org.eclipse.jetty.util.thread.strategy.ProduceConsume; /** *

{@link HTTP2Client} provides an asynchronous, non-blocking implementation @@ -126,8 +124,8 @@ public class HTTP2Client extends ContainerLifeCycle private long connectTimeout = 10000; private int inputBufferSize = 8192; private List protocols = Arrays.asList("h2", "h2-17", "h2-16", "h2-15", "h2-14"); - private int initialSessionRecvWindow = FlowControlStrategy.DEFAULT_WINDOW_SIZE; - private int initialStreamRecvWindow = FlowControlStrategy.DEFAULT_WINDOW_SIZE; + private int initialSessionRecvWindow = 16 * 1024 * 1024; + private int initialStreamRecvWindow = 8 * 1024 * 1024; private FlowControlStrategy.Factory flowControlStrategyFactory = () -> new BufferingFlowControlStrategy(0.5F); @Override diff --git a/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/AbstractTest.java b/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/AbstractTest.java index 4d97ad79e91..7cd4325a310 100644 --- a/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/AbstractTest.java +++ b/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/AbstractTest.java @@ -28,6 +28,7 @@ import org.eclipse.jetty.http.HttpFields; import org.eclipse.jetty.http.HttpScheme; import org.eclipse.jetty.http.HttpVersion; import org.eclipse.jetty.http.MetaData; +import org.eclipse.jetty.http2.FlowControlStrategy; import org.eclipse.jetty.http2.api.Session; import org.eclipse.jetty.http2.api.server.ServerSessionListener; import org.eclipse.jetty.http2.server.HTTP2ServerConnectionFactory; @@ -55,7 +56,10 @@ public class AbstractTest protected void start(HttpServlet servlet) throws Exception { - prepareServer(new HTTP2ServerConnectionFactory(new HttpConfiguration())); + HTTP2ServerConnectionFactory connectionFactory = new HTTP2ServerConnectionFactory(new HttpConfiguration()); + connectionFactory.setInitialSessionRecvWindow(FlowControlStrategy.DEFAULT_WINDOW_SIZE); + connectionFactory.setInitialStreamRecvWindow(FlowControlStrategy.DEFAULT_WINDOW_SIZE); + prepareServer(connectionFactory); ServletContextHandler context = new ServletContextHandler(server, "/", true, false); context.addServlet(new ServletHolder(servlet), servletPath + "/*"); customizeContext(context); @@ -71,7 +75,10 @@ public class AbstractTest protected void start(ServerSessionListener listener) throws Exception { - prepareServer(new RawHTTP2ServerConnectionFactory(new HttpConfiguration(), listener)); + RawHTTP2ServerConnectionFactory connectionFactory = new RawHTTP2ServerConnectionFactory(new HttpConfiguration(), listener); + connectionFactory.setInitialSessionRecvWindow(FlowControlStrategy.DEFAULT_WINDOW_SIZE); + connectionFactory.setInitialStreamRecvWindow(FlowControlStrategy.DEFAULT_WINDOW_SIZE); + prepareServer(connectionFactory); server.start(); prepareClient(); @@ -93,6 +100,8 @@ public class AbstractTest QueuedThreadPool clientExecutor = new QueuedThreadPool(); clientExecutor.setName("client"); client.setExecutor(clientExecutor); + client.setInitialSessionRecvWindow(FlowControlStrategy.DEFAULT_WINDOW_SIZE); + client.setInitialStreamRecvWindow(FlowControlStrategy.DEFAULT_WINDOW_SIZE); } protected Session newClient(Session.Listener listener) throws Exception diff --git a/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/FlowControlStalledTest.java b/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/FlowControlStalledTest.java index 0b05a0a4184..b6b9cb2879f 100644 --- a/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/FlowControlStalledTest.java +++ b/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/FlowControlStalledTest.java @@ -72,6 +72,8 @@ public class FlowControlStalledTest serverExecutor.setName("server"); server = new Server(serverExecutor); RawHTTP2ServerConnectionFactory connectionFactory = new RawHTTP2ServerConnectionFactory(new HttpConfiguration(), listener); + connectionFactory.setInitialSessionRecvWindow(FlowControlStrategy.DEFAULT_WINDOW_SIZE); + connectionFactory.setInitialStreamRecvWindow(FlowControlStrategy.DEFAULT_WINDOW_SIZE); connectionFactory.setFlowControlStrategyFactory(flowControlFactory); connector = new ServerConnector(server, connectionFactory); server.addConnector(connector); @@ -81,6 +83,8 @@ public class FlowControlStalledTest QueuedThreadPool clientExecutor = new QueuedThreadPool(); clientExecutor.setName("client"); client.setExecutor(clientExecutor); + client.setInitialSessionRecvWindow(FlowControlStrategy.DEFAULT_WINDOW_SIZE); + client.setInitialStreamRecvWindow(FlowControlStrategy.DEFAULT_WINDOW_SIZE); client.setFlowControlStrategyFactory(flowControlFactory); client.start(); } diff --git a/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/FlowControlStrategyTest.java b/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/FlowControlStrategyTest.java index fc525627bba..247e9ff4a45 100644 --- a/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/FlowControlStrategyTest.java +++ b/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/FlowControlStrategyTest.java @@ -63,7 +63,6 @@ import org.eclipse.jetty.util.FutureCallback; import org.eclipse.jetty.util.FuturePromise; import org.eclipse.jetty.util.Promise; import org.eclipse.jetty.util.thread.QueuedThreadPool; -import org.eclipse.jetty.util.thread.Invocable.InvocationType; import org.junit.After; import org.junit.Assert; import org.junit.Ignore; @@ -86,6 +85,8 @@ public abstract class FlowControlStrategyTest serverExecutor.setName("server"); server = new Server(serverExecutor); RawHTTP2ServerConnectionFactory connectionFactory = new RawHTTP2ServerConnectionFactory(new HttpConfiguration(), listener); + connectionFactory.setInitialSessionRecvWindow(FlowControlStrategy.DEFAULT_WINDOW_SIZE); + connectionFactory.setInitialStreamRecvWindow(FlowControlStrategy.DEFAULT_WINDOW_SIZE); connectionFactory.setFlowControlStrategyFactory(FlowControlStrategyTest.this::newFlowControlStrategy); connector = new ServerConnector(server, connectionFactory); server.addConnector(connector); @@ -95,6 +96,8 @@ public abstract class FlowControlStrategyTest QueuedThreadPool clientExecutor = new QueuedThreadPool(); clientExecutor.setName("client"); client.setExecutor(clientExecutor); + client.setInitialSessionRecvWindow(FlowControlStrategy.DEFAULT_WINDOW_SIZE); + client.setInitialStreamRecvWindow(FlowControlStrategy.DEFAULT_WINDOW_SIZE); client.setFlowControlStrategyFactory(FlowControlStrategyTest.this::newFlowControlStrategy); client.start(); } diff --git a/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/AbstractHTTP2ServerConnectionFactory.java b/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/AbstractHTTP2ServerConnectionFactory.java index 40daa43b043..82ed664041e 100644 --- a/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/AbstractHTTP2ServerConnectionFactory.java +++ b/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/AbstractHTTP2ServerConnectionFactory.java @@ -42,8 +42,8 @@ public abstract class AbstractHTTP2ServerConnectionFactory extends AbstractConne private final Connection.Listener connectionListener = new ConnectionListener(); private final HttpConfiguration httpConfiguration; private int maxDynamicTableSize = 4096; - private int initialStreamRecvWindow = FlowControlStrategy.DEFAULT_WINDOW_SIZE; - private int initialSessionRecvWindow = FlowControlStrategy.DEFAULT_WINDOW_SIZE; + private int initialSessionRecvWindow = 1024 * 1024; + private int initialStreamRecvWindow = 512 * 1024; private int maxConcurrentStreams = 128; private int maxHeaderBlockFragment = 0; private FlowControlStrategy.Factory flowControlStrategyFactory = () -> new BufferingFlowControlStrategy(0.5F); From 6ca9bacee6039483fa138c1cfbd29e26e744fdeb Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Mon, 24 Apr 2017 09:36:38 -0700 Subject: [PATCH 62/80] Issue #1448 - Eliminating Resource creation from TypeUtil.getLoadedFrom() + Replaced with URI TypeUtil.getLocationOfClass(Class clazz) + and File TypeUtil.getLocationOfClassAsFile(Class clazz) + This is done to eliminate extraneous "new URL" and "URI.toURL" calls that can trigger URL Stream Handler creation and initialization which is the cause of the StackOverflowError --- .../annotations/AnnotationConfiguration.java | 5 +- .../java/org/eclipse/jetty/util/TypeUtil.java | 64 +++++++++++-------- .../org/eclipse/jetty/util/TypeUtilTest.java | 28 ++++---- .../jetty/webapp/ClasspathPattern.java | 17 +++-- .../jetty/webapp/ClasspathPatternTest.java | 27 ++++---- 5 files changed, 80 insertions(+), 61 deletions(-) diff --git a/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationConfiguration.java b/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationConfiguration.java index c8d3bf9bfcb..41a7e8ccd4d 100644 --- a/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationConfiguration.java +++ b/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationConfiguration.java @@ -640,7 +640,10 @@ public class AnnotationConfiguration extends AbstractConfiguration public Resource getJarFor (ServletContainerInitializer service) throws MalformedURLException, IOException { - return TypeUtil.getLoadedFrom(service.getClass()); + URI uri = TypeUtil.getLocationOfClass(service.getClass()); + if (uri == null) + return null; + return Resource.newResource(uri); } /** diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/TypeUtil.java b/jetty-util/src/main/java/org/eclipse/jetty/util/TypeUtil.java index 69f76c79c0c..f04f7a92c8f 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/TypeUtil.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/TypeUtil.java @@ -18,12 +18,15 @@ package org.eclipse.jetty.util; +import java.io.File; import java.io.IOException; import java.lang.annotation.Annotation; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Modifier; +import java.net.URI; +import java.net.URISyntaxException; import java.net.URL; import java.security.CodeSource; import java.security.ProtectionDomain; @@ -37,7 +40,6 @@ import java.util.Objects; import org.eclipse.jetty.util.annotation.Name; import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Logger; -import org.eclipse.jetty.util.resource.Resource; /* ------------------------------------------------------------ */ @@ -699,36 +701,48 @@ public class TypeUtil } /* ------------------------------------------------------------ */ - public static Resource getLoadedFrom(Class clazz) + public static URI getLocationOfClass(Class clazz) { - ProtectionDomain domain = clazz.getProtectionDomain(); - if (domain!=null) + try { - CodeSource source = domain.getCodeSource(); - if (source!=null) + ProtectionDomain domain = clazz.getProtectionDomain(); + if (domain != null) { - URL location = source.getLocation(); - - if (location!=null) - return Resource.newResource(location); + CodeSource source = domain.getCodeSource(); + if (source != null) + { + URL location = source.getLocation(); + + if (location != null) + return location.toURI(); + } + } + + String resourceName = clazz.getName().replace('.', '/') + ".class"; + ClassLoader loader = clazz.getClassLoader(); + URL url = (loader == null ? ClassLoader.getSystemClassLoader() : loader).getResource(resourceName); + if (url != null) + { + return URIUtil.getJarSource(url.toURI()); } } - - String rname = clazz.getName().replace('.','/')+".class"; - ClassLoader loader = clazz.getClassLoader(); - URL url = (loader==null?ClassLoader.getSystemClassLoader():loader).getResource(rname); - if (url!=null) + catch (URISyntaxException e) { - try - { - return Resource.newResource(URIUtil.getJarSource(url.toURI())); - } - catch(Exception e) - { - LOG.debug(e); - } - } - + LOG.debug(e); + } return null; } + + /* ------------------------------------------------------------ */ + public static File getLocationOfClassAsFile(Class clazz) + { + URI uri = getLocationOfClass(clazz); + + if (uri != null && "file".equalsIgnoreCase(uri.getScheme())) + { + return new File(uri); + } + return null; + } + } 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 5d67ee34fa0..6c630e9e3dd 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 @@ -22,7 +22,6 @@ package org.eclipse.jetty.util; import org.eclipse.jetty.toolchain.test.JDK; import org.hamcrest.Matchers; import org.junit.Assert; -import org.junit.Assume; import org.junit.Test; public class TypeUtilTest @@ -124,20 +123,19 @@ public class TypeUtilTest } @Test - public void testLoadedFrom() throws Exception + public void testGetLocationOfClass() throws Exception { - Assume.assumeFalse(JDK.IS_9); - Assert.assertThat(TypeUtil.getLoadedFrom(String.class).toString(),Matchers.containsString("/rt.jar")); - Assert.assertThat(TypeUtil.getLoadedFrom(Assert.class).toString(),Matchers.containsString(".jar")); - Assert.assertThat(TypeUtil.getLoadedFrom(TypeUtil.class).toString(),Matchers.containsString("/classes/")); - } - - @Test - public void testLoadedFrom9() throws Exception - { - Assume.assumeTrue(JDK.IS_9); - Assert.assertThat(TypeUtil.getLoadedFrom(String.class).toString(),Matchers.containsString("jrt:/java.base/java/lang/String.clas")); - Assert.assertThat(TypeUtil.getLoadedFrom(Assert.class).toString(),Matchers.containsString(".jar")); - Assert.assertThat(TypeUtil.getLoadedFrom(TypeUtil.class).toString(),Matchers.containsString("/classes/")); + // Classes from maven dependencies + Assert.assertThat(TypeUtil.getLocationOfClass(Assert.class).toASCIIString(),Matchers.containsString("/repository/")); + + // Class from project dependencies + Assert.assertThat(TypeUtil.getLocationOfClass(TypeUtil.class).toASCIIString(),Matchers.containsString("/classes/")); + + // Class from JVM core + String expectedJavaBase = "/rt.jar"; + if(JDK.IS_9) + expectedJavaBase = "/java.base/"; + + Assert.assertThat(TypeUtil.getLocationOfClass(String.class).toASCIIString(),Matchers.containsString(expectedJavaBase)); } } diff --git a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/ClasspathPattern.java b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/ClasspathPattern.java index 9e7fd968456..b0946d9df42 100644 --- a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/ClasspathPattern.java +++ b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/ClasspathPattern.java @@ -20,6 +20,7 @@ package org.eclipse.jetty.webapp; import java.io.File; +import java.net.URI; import java.net.URL; import java.nio.file.Path; import java.util.AbstractSet; @@ -515,10 +516,9 @@ public class ClasspathPattern extends AbstractSet try { Boolean byName = _patterns.isIncludedAndNotExcluded(clazz.getName()); - Resource resource = TypeUtil.getLoadedFrom(clazz); - Boolean byLocation = resource == null || resource.getFile() == null - ? null - : _locations.isIncludedAndNotExcluded(resource.getFile().toPath()); + File locationFile = TypeUtil.getLocationOfClassAsFile(clazz); + Boolean byLocation = locationFile == null ? null + : _locations.isIncludedAndNotExcluded(locationFile.toPath()); // Combine the tri-state match of both IncludeExclude Sets boolean included = byName==Boolean.TRUE || byLocation==Boolean.TRUE @@ -548,9 +548,12 @@ public class ClasspathPattern extends AbstractSet Boolean byLocation = null; try { - Resource resource = Resource.newResource(URIUtil.getJarSource(url.toURI())); - File file = resource.getFile(); - byLocation = _locations.isIncludedAndNotExcluded(file.toPath()); + URI jarUri = URIUtil.getJarSource(url.toURI()); + if ("file".equalsIgnoreCase(jarUri.getScheme())) + { + File file = new File(jarUri); + byLocation = _locations.isIncludedAndNotExcluded(file.toPath()); + } } catch(Exception e) { diff --git a/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/ClasspathPatternTest.java b/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/ClasspathPatternTest.java index 468ea5068d4..fa4718e930c 100644 --- a/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/ClasspathPatternTest.java +++ b/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/ClasspathPatternTest.java @@ -18,16 +18,17 @@ package org.eclipse.jetty.webapp; +import java.io.File; import java.util.Arrays; import org.eclipse.jetty.toolchain.test.JDK; import org.eclipse.jetty.util.TypeUtil; -import org.eclipse.jetty.util.resource.Resource; import org.hamcrest.Matchers; import org.junit.Assert; import org.junit.Assume; import org.junit.Before; import org.junit.Test; + import sun.security.provider.Sun; public class ClasspathPatternTest @@ -118,23 +119,23 @@ public class ClasspathPatternTest Assume.assumeFalse(JDK.IS_9); // jar from JVM classloader - Resource loc_string = TypeUtil.getLoadedFrom(String.class); + File loc_string = TypeUtil.getLocationOfClassAsFile(String.class); // System.err.println(loc_string); // another jar from JVM classloader - Resource loc_jsse = TypeUtil.getLoadedFrom(Sun.class); + File loc_jsse = TypeUtil.getLocationOfClassAsFile(Sun.class); // System.err.println(loc_jsse); // a jar from maven repo jar - Resource loc_junit = TypeUtil.getLoadedFrom(Test.class); + File loc_junit = TypeUtil.getLocationOfClassAsFile(Test.class); // System.err.println(loc_junit); // a jar from another maven repo jar - Resource loc_tool = TypeUtil.getLoadedFrom(JDK.class); + File loc_tool = TypeUtil.getLocationOfClassAsFile(JDK.class); // System.err.println(loc_tool); // class file - Resource loc_test = TypeUtil.getLoadedFrom(ClasspathPatternTest.class); + File loc_test = TypeUtil.getLocationOfClassAsFile(ClasspathPatternTest.class); // System.err.println(loc_test); ClasspathPattern pattern = new ClasspathPattern(); @@ -146,7 +147,7 @@ public class ClasspathPatternTest Assert.assertThat(pattern.match(ClasspathPatternTest.class), Matchers.is(false)); // Add directory for both JVM classes - pattern.include(loc_string.getFile().getParentFile().toURI().toString()); + pattern.include(loc_string.getParentFile().toURI().toString()); // Add jar for individual class and classes directory pattern.include(loc_junit.toString(), loc_test.toString()); @@ -173,23 +174,23 @@ public class ClasspathPatternTest Assume.assumeFalse(JDK.IS_9); // jar from JVM classloader - Resource loc_string = TypeUtil.getLoadedFrom(String.class); + File loc_string = TypeUtil.getLocationOfClassAsFile(String.class); // System.err.println(loc_string); // another jar from JVM classloader - Resource loc_jsse = TypeUtil.getLoadedFrom(Sun.class); + File loc_jsse = TypeUtil.getLocationOfClassAsFile(Sun.class); // System.err.println(loc_jsse); // a jar from maven repo jar - Resource loc_junit = TypeUtil.getLoadedFrom(Test.class); + File loc_junit = TypeUtil.getLocationOfClassAsFile(Test.class); // System.err.println(loc_junit); // a jar from another maven repo jar - Resource loc_tool = TypeUtil.getLoadedFrom(JDK.class); + File loc_tool = TypeUtil.getLocationOfClassAsFile(JDK.class); // System.err.println(loc_tool); // class file - Resource loc_test = TypeUtil.getLoadedFrom(ClasspathPatternTest.class); + File loc_test = TypeUtil.getLocationOfClassAsFile(ClasspathPatternTest.class); // System.err.println(loc_test); ClasspathPattern pattern = new ClasspathPattern(); @@ -204,7 +205,7 @@ public class ClasspathPatternTest Assert.assertThat(pattern.match(ClasspathPatternTest.class), Matchers.is(true)); // Add directory for both JVM classes - pattern.exclude(loc_string.getFile().getParentFile().toURI().toString()); + pattern.exclude(loc_string.getParentFile().toURI().toString()); // Add jar for individual class and classes directory pattern.exclude(loc_junit.toString(), loc_test.toString()); From a3ace98a8dc56603daa755fee639b9510cfe1385 Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Wed, 26 Apr 2017 13:50:58 +0200 Subject: [PATCH 63/80] Issue #1448 Optimized excluded by name handling --- .../main/java/org/eclipse/jetty/webapp/ClasspathPattern.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/ClasspathPattern.java b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/ClasspathPattern.java index b0946d9df42..cb4bec47e30 100644 --- a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/ClasspathPattern.java +++ b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/ClasspathPattern.java @@ -516,6 +516,8 @@ public class ClasspathPattern extends AbstractSet try { Boolean byName = _patterns.isIncludedAndNotExcluded(clazz.getName()); + if (Boolean.FALSE.equals(byName)) + return byName; // Already excluded so no need to check location. File locationFile = TypeUtil.getLocationOfClassAsFile(clazz); Boolean byLocation = locationFile == null ? null : _locations.isIncludedAndNotExcluded(locationFile.toPath()); @@ -543,6 +545,8 @@ public class ClasspathPattern extends AbstractSet name=name.replace("/","."); Boolean byName = _patterns.isIncludedAndNotExcluded(name); + if (Boolean.FALSE.equals(byName)) + return byName; // Already excluded so no need to check location. // Try to find a file path for location matching Boolean byLocation = null; @@ -566,4 +570,5 @@ public class ClasspathPattern extends AbstractSet boolean excluded = byName==Boolean.FALSE || byLocation==Boolean.FALSE; return included && !excluded; } + } From 9e65d1ebcb7ae5ac709f9dd2443ad80967a866f0 Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Wed, 26 Apr 2017 14:54:37 +0200 Subject: [PATCH 64/80] Issue #1505 * minor cleanups of ClasspathPattern * defined jetty.home.uri and jetty.base.uri in start.jar and webapp configuration properties * minor cleanup of start.jar property handling (more needed) * updated location classpathpatterns in modules --- .../jetty/deploy/DeploymentManager.java | 19 ++++++++++ .../bindings/GlobalWebappConfigBinding.java | 9 +---- .../deploy/providers/WebAppProvider.java | 7 +--- .../java/org/eclipse/jetty/start/Main.java | 15 +++++++- .../org/eclipse/jetty/start/StartArgs.java | 2 +- .../start/config/CommandLineConfigSource.java | 9 ++++- .../jetty/start/config/ConfigSources.java | 32 ++++++---------- .../jetty/start/ConfigurationAssert.java | 10 +++-- .../org/eclipse/jetty/start/MainTest.java | 14 ++++++- .../src/main/config/modules/log4j-impl.mod | 2 +- .../src/main/config/modules/log4j2-api.mod | 2 +- .../src/main/config/modules/logback-impl.mod | 2 +- .../src/main/config/modules/logging-jul.mod | 3 -- .../src/main/config/modules/logging-log4j.mod | 3 -- .../main/config/modules/logging-log4j2.mod | 3 -- .../main/config/modules/logging-logback.mod | 3 -- .../src/main/config/modules/logging-slf4j.mod | 3 -- .../src/main/config/modules/slf4j-api.mod | 1 + .../java/org/eclipse/jetty/util/TypeUtil.java | 13 ------- .../jetty/webapp/ClasspathPattern.java | 37 ++++++++++++------- .../jetty/webapp/ClasspathPatternTest.java | 35 +++++------------- 21 files changed, 111 insertions(+), 113 deletions(-) diff --git a/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/DeploymentManager.java b/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/DeploymentManager.java index d7963cef51f..704222cae91 100644 --- a/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/DeploymentManager.java +++ b/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/DeploymentManager.java @@ -18,6 +18,7 @@ package org.eclipse.jetty.deploy; +import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -45,6 +46,8 @@ import org.eclipse.jetty.util.annotation.Name; import org.eclipse.jetty.util.component.ContainerLifeCycle; import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Logger; +import org.eclipse.jetty.util.resource.Resource; +import org.eclipse.jetty.xml.XmlConfiguration; /** * The Deployment Manager. @@ -595,4 +598,20 @@ public class DeploymentManager extends ContainerLifeCycle { return getApps(_lifecycle.getNodeByName(nodeName)); } + + public void scope(XmlConfiguration xmlc, Resource webapp) + throws IOException + { + xmlc.getIdMap().put("Server", getServer()); + Resource home = Resource.newResource(System.getProperty("jetty.home",".")); + xmlc.getProperties().put("jetty.home",home.toString()); + xmlc.getProperties().put("jetty.home.uri",home.getURI().toString()); + + Resource base = Resource.newResource(System.getProperty("jetty.base",home.toString())); + xmlc.getProperties().put("jetty.base",base.toString()); + xmlc.getProperties().put("jetty.base.uri",base.getURI().toString()); + + xmlc.getProperties().put("jetty.webapp",webapp.toString()); + xmlc.getProperties().put("jetty.webapps",webapp.getFile().toPath().getParent().toString()); + } } diff --git a/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/bindings/GlobalWebappConfigBinding.java b/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/bindings/GlobalWebappConfigBinding.java index 5a50e2719a7..3c9df4df9f0 100644 --- a/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/bindings/GlobalWebappConfigBinding.java +++ b/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/bindings/GlobalWebappConfigBinding.java @@ -93,15 +93,8 @@ public class GlobalWebappConfigBinding implements AppLifeCycle.Binding if (globalContextSettings.exists()) { XmlConfiguration jettyXmlConfig = new XmlConfiguration(globalContextSettings.getInputStream()); - Resource resource = Resource.newResource(app.getOriginId()); - File file = resource.getFile(); - jettyXmlConfig.getIdMap().put("Server",app.getDeploymentManager().getServer()); - jettyXmlConfig.getProperties().put("jetty.home",System.getProperty("jetty.home",".")); - jettyXmlConfig.getProperties().put("jetty.base",System.getProperty("jetty.base",".")); - jettyXmlConfig.getProperties().put("jetty.webapp",file.getCanonicalPath()); - jettyXmlConfig.getProperties().put("jetty.webapps",file.getParentFile().getCanonicalPath()); - + app.getDeploymentManager().scope(jettyXmlConfig,resource); jettyXmlConfig.configure(context); } else diff --git a/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/providers/WebAppProvider.java b/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/providers/WebAppProvider.java index b076eff26b7..94e41b2d99a 100644 --- a/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/providers/WebAppProvider.java +++ b/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/providers/WebAppProvider.java @@ -294,11 +294,7 @@ public class WebAppProvider extends ScanningAppProvider } }; - xmlc.getIdMap().put("Server", getDeploymentManager().getServer()); - xmlc.getProperties().put("jetty.home",System.getProperty("jetty.home",".")); - xmlc.getProperties().put("jetty.base",System.getProperty("jetty.base",".")); - xmlc.getProperties().put("jetty.webapp",file.getCanonicalPath()); - xmlc.getProperties().put("jetty.webapps",file.getParentFile().getCanonicalPath()); + getDeploymentManager().scope(xmlc,resource); if (getConfigurationManager() != null) xmlc.getProperties().putAll(getConfigurationManager().getProperties()); @@ -354,7 +350,6 @@ public class WebAppProvider extends ScanningAppProvider return webAppContext; } - /* ------------------------------------------------------------ */ @Override protected void fileChanged(String filename) throws Exception 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 863c4486ed2..b0fc5713c13 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,7 +18,6 @@ package org.eclipse.jetty.start; -import static org.eclipse.jetty.start.UsageException.ERR_BAD_GRAPH; 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; @@ -295,6 +294,20 @@ public class Main StartArgs args = new StartArgs(baseHome); args.parse(baseHome.getConfigSources()); + Props props = baseHome.getConfigSources().getProps(); + Props.Prop home = props.getProp(BaseHome.JETTY_HOME); + if (!args.getProperties().containsKey(BaseHome.JETTY_HOME)) + args.getProperties().setProperty(home); + args.getProperties().setProperty(BaseHome.JETTY_HOME+".uri", + baseHome.getHomePath().toUri().toString(), + home.origin); + Props.Prop base = props.getProp(BaseHome.JETTY_BASE); + if (!args.getProperties().containsKey(BaseHome.JETTY_BASE)) + args.getProperties().setProperty(base); + args.getProperties().setProperty(BaseHome.JETTY_BASE+".uri", + baseHome.getBasePath().toUri().toString(), + base.origin); + // ------------------------------------------------------------ // 3) Module Registration Modules modules = new Modules(baseHome,args); 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 2073fd30eda..7b7ae07d627 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 @@ -120,7 +120,7 @@ public class StartArgs private Set skipFileValidationModules = new HashSet<>(); /** Map of enabled modules to the source of where that activation occurred */ - private Map> sources = new HashMap<>(); + Map> sources = new HashMap<>(); /** Map of properties to where that property was declared */ private Map propertySource = new HashMap<>(); diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/config/CommandLineConfigSource.java b/jetty-start/src/main/java/org/eclipse/jetty/start/config/CommandLineConfigSource.java index c581c414e43..d1facfe391c 100644 --- a/jetty-start/src/main/java/org/eclipse/jetty/start/config/CommandLineConfigSource.java +++ b/jetty-start/src/main/java/org/eclipse/jetty/start/config/CommandLineConfigSource.java @@ -41,6 +41,7 @@ public class CommandLineConfigSource implements ConfigSource { public static final String ORIGIN_INTERNAL_FALLBACK = ""; public static final String ORIGIN_CMD_LINE = ""; + public static final String ORIGIN_SYSTEM_PROPERTY = ""; private final RawArgs args; private final Props props; @@ -79,6 +80,7 @@ public class CommandLineConfigSource implements ConfigSource String val = System.getProperty(BaseHome.JETTY_BASE); if (!Utils.isBlank(val)) { + setProperty(BaseHome.JETTY_BASE,val,ORIGIN_SYSTEM_PROPERTY); return FS.toPath(val); } @@ -101,6 +103,7 @@ public class CommandLineConfigSource implements ConfigSource String val = System.getProperty(BaseHome.JETTY_HOME); if (!Utils.isBlank(val)) { + setProperty(BaseHome.JETTY_HOME,val,ORIGIN_SYSTEM_PROPERTY); return FS.toPath(val); } @@ -116,7 +119,9 @@ public class CommandLineConfigSource implements ConfigSource // ${jetty.home} is relative to found BaseHome class try { - return new File(new URI(m.group(1))).getParentFile().toPath(); + Path home = new File(new URI(m.group(1))).getParentFile().toPath(); + setProperty(BaseHome.JETTY_HOME,home.toString(),ORIGIN_INTERNAL_FALLBACK); + return home; } catch (URISyntaxException e) { @@ -127,7 +132,7 @@ public class CommandLineConfigSource implements ConfigSource // Lastly, fall back to ${user.dir} default Path home = FS.toPath(System.getProperty("user.dir",".")); - setProperty(BaseHome.JETTY_HOME,home.toString(),ORIGIN_INTERNAL_FALLBACK); + setProperty(BaseHome.JETTY_HOME,home.toString(),""); return home; } diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/config/ConfigSources.java b/jetty-start/src/main/java/org/eclipse/jetty/start/config/ConfigSources.java index 252e9184a93..249f5c97976 100644 --- a/jetty-start/src/main/java/org/eclipse/jetty/start/config/ConfigSources.java +++ b/jetty-start/src/main/java/org/eclipse/jetty/start/config/ConfigSources.java @@ -50,7 +50,6 @@ public class ConfigSources implements Iterable } private LinkedList sources = new LinkedList<>(); - private Props props = new Props(); private AtomicInteger sourceWeight = new AtomicInteger(1); public void add(ConfigSource source) throws IOException @@ -61,18 +60,15 @@ public class ConfigSources implements Iterable throw new UsageException(ERR_BAD_ARG,"Duplicate Configuration Source Reference: " + source); } sources.add(source); - Collections.sort(sources,new WeightedConfigSourceComparator()); - updateProps(); - // look for --include-jetty-dir entries for (RawArgs.Entry arg : source.getArgs()) { if (arg.startsWith("--include-jetty-dir")) { String ref = getValue(arg.getLine()); - String dirName = props.expand(ref); + String dirName = getProps().expand(ref); Path dir = FS.toPath(dirName).normalize().toAbsolutePath(); DirConfigSource dirsource = new DirConfigSource(ref,dir,sourceWeight.incrementAndGet(),true); add(dirsource); @@ -94,11 +90,20 @@ public class ConfigSources implements Iterable public Prop getProp(String key) { - return props.getProp(key); + return getProps().getProp(key); } - + public Props getProps() { + Props props = new Props(); + + // add all properties from config sources (in reverse order) + ListIterator iter = sources.listIterator(sources.size()); + while (iter.hasPrevious()) + { + ConfigSource source = iter.previous(); + props.addAll(source.getProps()); + } return props; } @@ -147,17 +152,4 @@ public class ConfigSources implements Iterable str.append(']'); return str.toString(); } - - private void updateProps() - { - props.reset(); - - // add all properties from config sources (in reverse order) - ListIterator iter = sources.listIterator(sources.size()); - while (iter.hasPrevious()) - { - ConfigSource source = iter.previous(); - props.addAll(source.getProps()); - } - } } diff --git a/jetty-start/src/test/java/org/eclipse/jetty/start/ConfigurationAssert.java b/jetty-start/src/test/java/org/eclipse/jetty/start/ConfigurationAssert.java index 58d9e114f57..70b4da00e95 100644 --- a/jetty-start/src/test/java/org/eclipse/jetty/start/ConfigurationAssert.java +++ b/jetty-start/src/test/java/org/eclipse/jetty/start/ConfigurationAssert.java @@ -137,9 +137,13 @@ public class ConfigurationAssert for (Prop prop : args.getProperties()) { String name = prop.key; - if ("jetty.home".equals(name) || "jetty.base".equals(name) || - "user.dir".equals(name) || prop.origin.equals(Props.ORIGIN_SYSPROP) || - name.startsWith("java.")) + if ("jetty.home".equals(name) || + "jetty.base".equals(name) || + "jetty.home.uri".equals(name) || + "jetty.base.uri".equals(name) || + "user.dir".equals(name) || + prop.origin.equals(Props.ORIGIN_SYSPROP) || + name.startsWith("java.")) { // strip these out from assertion, to make assertions easier. continue; diff --git a/jetty-start/src/test/java/org/eclipse/jetty/start/MainTest.java b/jetty-start/src/test/java/org/eclipse/jetty/start/MainTest.java index 58c9a091266..3b60f7d4cfe 100644 --- a/jetty-start/src/test/java/org/eclipse/jetty/start/MainTest.java +++ b/jetty-start/src/test/java/org/eclipse/jetty/start/MainTest.java @@ -60,9 +60,19 @@ public class MainTest Main main = new Main(); StartArgs args = main.processCommandLine(cmdLineArgs.toArray(new String[cmdLineArgs.size()])); BaseHome baseHome = main.getBaseHome(); - System.err.println(args); + // System.err.println(args); ConfigurationAssert.assertConfiguration(baseHome,args,"assert-home.txt"); + + // System.err.println("StartArgs.props:"); + // args.getProperties().forEach(p->System.err.println(p)); + // System.err.println("BaseHome.props:"); + // baseHome.getConfigSources().getProps().forEach(p->System.err.println(p)); + + assertThat(args.getProperties().getString("jetty.home"),is(baseHome.getHome())); + assertThat(args.getProperties().getString("jetty.home.uri"),is(baseHome.getHomePath().toUri().toString())); + assertThat(args.getProperties().getString("jetty.base"),is(baseHome.getBase())); + assertThat(args.getProperties().getString("jetty.base.uri"),is(baseHome.getBasePath().toUri().toString())); } @Test @@ -76,7 +86,7 @@ public class MainTest Main main = new Main(); StartArgs args = main.processCommandLine(cmdLineArgs.toArray(new String[cmdLineArgs.size()])); - System.err.println(args); + // System.err.println(args); // Assert.assertEquals("--stop should not build module tree", 0, args.getEnabledModules().size()); assertEquals("--stop missing port","10000",args.getProperties().getString("STOP.PORT")); diff --git a/jetty-util/src/main/config/modules/log4j-impl.mod b/jetty-util/src/main/config/modules/log4j-impl.mod index 5aaaa62cc21..dcc8fa52613 100644 --- a/jetty-util/src/main/config/modules/log4j-impl.mod +++ b/jetty-util/src/main/config/modules/log4j-impl.mod @@ -27,4 +27,4 @@ http://www.apache.org/licenses/LICENSE-2.0.html [ini] log4j.version?=1.2.17 - +jetty.webapp.addServerClasses+=,${jetty.base.uri}/lib/log4j/ diff --git a/jetty-util/src/main/config/modules/log4j2-api.mod b/jetty-util/src/main/config/modules/log4j2-api.mod index 123427e7d6c..da7a609b047 100644 --- a/jetty-util/src/main/config/modules/log4j2-api.mod +++ b/jetty-util/src/main/config/modules/log4j2-api.mod @@ -22,4 +22,4 @@ http://www.apache.org/licenses/LICENSE-2.0.html [ini] log4j2.version?=2.6.1 - +jetty.webapp.addServerClasses+=,${jetty.base.uri}/lib/log4j2/ diff --git a/jetty-util/src/main/config/modules/logback-impl.mod b/jetty-util/src/main/config/modules/logback-impl.mod index a9364601720..e001ca0a76e 100644 --- a/jetty-util/src/main/config/modules/logback-impl.mod +++ b/jetty-util/src/main/config/modules/logback-impl.mod @@ -35,4 +35,4 @@ or (per the licensee's choosing) under [ini] logback.version?=1.1.7 - +jetty.webapp.addServerClasses+=,${jetty.base.uri}/lib/logback/ diff --git a/jetty-util/src/main/config/modules/logging-jul.mod b/jetty-util/src/main/config/modules/logging-jul.mod index 17391fd1a02..a2dbe05e804 100644 --- a/jetty-util/src/main/config/modules/logging-jul.mod +++ b/jetty-util/src/main/config/modules/logging-jul.mod @@ -14,6 +14,3 @@ logging [exec] -Dorg.eclipse.jetty.util.log.class?=org.eclipse.jetty.util.log.Slf4jLog - -[ini] -jetty.webapp.addServerClasses+=,${jetty.base.uri}/lib/slf4j/ diff --git a/jetty-util/src/main/config/modules/logging-log4j.mod b/jetty-util/src/main/config/modules/logging-log4j.mod index 55d68bc2243..a19d24aaeab 100644 --- a/jetty-util/src/main/config/modules/logging-log4j.mod +++ b/jetty-util/src/main/config/modules/logging-log4j.mod @@ -14,6 +14,3 @@ logging [exec] -Dorg.eclipse.jetty.util.log.class?=org.eclipse.jetty.util.log.Slf4jLog - -[ini] -jetty.webapp.addServerClasses+=,${jetty.base.uri}/lib/slf4j/,${jetty.base.uri}/lib/log4j/ diff --git a/jetty-util/src/main/config/modules/logging-log4j2.mod b/jetty-util/src/main/config/modules/logging-log4j2.mod index 5c68f013479..f946abef861 100644 --- a/jetty-util/src/main/config/modules/logging-log4j2.mod +++ b/jetty-util/src/main/config/modules/logging-log4j2.mod @@ -14,6 +14,3 @@ logging [exec] -Dorg.eclipse.jetty.util.log.class?=org.eclipse.jetty.util.log.Slf4jLog - -[ini] -jetty.webapp.addServerClasses+=,${jetty.base.uri}/lib/slf4j/,${jetty.base.uri}/lib/log4j2/ diff --git a/jetty-util/src/main/config/modules/logging-logback.mod b/jetty-util/src/main/config/modules/logging-logback.mod index 6fc453669ef..b5c72046981 100644 --- a/jetty-util/src/main/config/modules/logging-logback.mod +++ b/jetty-util/src/main/config/modules/logging-logback.mod @@ -14,6 +14,3 @@ logging [exec] -Dorg.eclipse.jetty.util.log.class?=org.eclipse.jetty.util.log.Slf4jLog - -[ini] -jetty.webapp.addServerClasses+=,${jetty.base.uri}/lib/slf4j/,${jetty.base.uri}/lib/logback/ diff --git a/jetty-util/src/main/config/modules/logging-slf4j.mod b/jetty-util/src/main/config/modules/logging-slf4j.mod index 5dde76f6e37..a9174b86ddc 100644 --- a/jetty-util/src/main/config/modules/logging-slf4j.mod +++ b/jetty-util/src/main/config/modules/logging-slf4j.mod @@ -14,6 +14,3 @@ logging [exec] -Dorg.eclipse.jetty.util.log.class?=org.eclipse.jetty.util.log.Slf4jLog - -[ini] -jetty.webapp.addServerClasses+=,${jetty.base.uri}/lib/slf4j/ diff --git a/jetty-util/src/main/config/modules/slf4j-api.mod b/jetty-util/src/main/config/modules/slf4j-api.mod index 6fb36bd9407..12054fc5e14 100644 --- a/jetty-util/src/main/config/modules/slf4j-api.mod +++ b/jetty-util/src/main/config/modules/slf4j-api.mod @@ -15,6 +15,7 @@ lib/slf4j/slf4j-api-${slf4j.version}.jar [ini] slf4j.version?=1.7.21 +jetty.webapp.addServerClasses+=,${jetty.base.uri}/lib/slf4j/ [license] SLF4J is distributed under the MIT License. diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/TypeUtil.java b/jetty-util/src/main/java/org/eclipse/jetty/util/TypeUtil.java index f04f7a92c8f..cbaeef9085c 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/TypeUtil.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/TypeUtil.java @@ -732,17 +732,4 @@ public class TypeUtil } return null; } - - /* ------------------------------------------------------------ */ - public static File getLocationOfClassAsFile(Class clazz) - { - URI uri = getLocationOfClass(clazz); - - if (uri != null && "file".equalsIgnoreCase(uri.getScheme())) - { - return new File(uri); - } - return null; - } - } diff --git a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/ClasspathPattern.java b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/ClasspathPattern.java index cb4bec47e30..9c224ef9ff0 100644 --- a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/ClasspathPattern.java +++ b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/ClasspathPattern.java @@ -23,6 +23,7 @@ import java.io.File; import java.net.URI; import java.net.URL; import java.nio.file.Path; +import java.nio.file.Paths; import java.util.AbstractSet; import java.util.ArrayList; import java.util.Arrays; @@ -47,12 +48,14 @@ import org.eclipse.jetty.util.resource.Resource; * A class pattern is a string of one of the forms:

    *
  • 'org.package.SomeClass' will match a specific class *
  • 'org.package.' will match a specific package hierarchy - *
  • '-org.package.Classname' excludes a specific class - *
  • '-org.package.' excludes a specific package hierarchy - *
  • Nested classes must be specified with the '$' separator if they - * are to be explicitly included or excluded (eg. org.example.MyClass$NestedClass). - *
  • Nested classes are matched by their containing class. (eg. -org.example.MyClass - * would exclude org.example.MyClass$AnyNestedClass) + *
  • 'org.package.SomeClass$NestedClass ' will match a nested class exactly otherwise. + * Nested classes are matched by their containing class. (eg. org.example.MyClass + * matches org.example.MyClass$AnyNestedClass) + *
  • 'file:///some/location/' - A file system directory from which + * the class was loaded + *
  • 'file:///some/location.jar' - The URI of a jar file from which + * the class was loaded + *
  • Any of the above patterns preceeded by '-' will exclude rather than include the match. *
* When class is initialized from a classpath pattern string, entries * in this string should be separated by ':' (semicolon) or ',' (comma). @@ -76,7 +79,7 @@ public class ClasspathPattern extends AbstractSet _pattern=pattern; _inclusive = !pattern.startsWith("-"); _name = _inclusive ? pattern : pattern.substring(1).trim(); - _type = (_name.startsWith("file:"))?Type.LOCATION:(_name.endsWith(".")?Type.PACKAGE:Type.CLASSNAME); + _type = _name.startsWith("file:")?Type.LOCATION:(_name.endsWith(".")?Type.PACKAGE:Type.CLASSNAME); } Entry(String name, boolean include) @@ -84,7 +87,7 @@ public class ClasspathPattern extends AbstractSet _pattern=include?name:("-"+name); _inclusive = include; _name = name; - _type = (_name.startsWith("file:"))?Type.LOCATION:(_name.endsWith(".")?Type.PACKAGE:Type.CLASSNAME); + _type = _name.startsWith("file:")?Type.LOCATION:(_name.endsWith(".")?Type.PACKAGE:Type.CLASSNAME); } @@ -315,12 +318,16 @@ public class ClasspathPattern extends AbstractSet if (file.isDirectory()) { if (path.startsWith(file.toPath())) + { return true; - } + } + } else { if (path.equals(file.toPath())) + { return true; + } } } @@ -328,7 +335,6 @@ public class ClasspathPattern extends AbstractSet } } - Map _entries = new HashMap<>(); IncludeExcludeSet _patterns = new IncludeExcludeSet<>(ByPackageOrName.class); IncludeExcludeSet _locations = new IncludeExcludeSet<>(ByLocation.class); @@ -518,10 +524,13 @@ public class ClasspathPattern extends AbstractSet Boolean byName = _patterns.isIncludedAndNotExcluded(clazz.getName()); if (Boolean.FALSE.equals(byName)) return byName; // Already excluded so no need to check location. - File locationFile = TypeUtil.getLocationOfClassAsFile(clazz); - Boolean byLocation = locationFile == null ? null - : _locations.isIncludedAndNotExcluded(locationFile.toPath()); - + URI location = TypeUtil.getLocationOfClass(clazz); + Boolean byLocation = location == null ? null + : _locations.isIncludedAndNotExcluded(Paths.get(location)); + + if (LOG.isDebugEnabled()) + LOG.debug("match {} from {} byName={} byLocation={} in {}",clazz,location,byName,byLocation,this); + // Combine the tri-state match of both IncludeExclude Sets boolean included = byName==Boolean.TRUE || byLocation==Boolean.TRUE || (byName==null && !_patterns.hasIncludes() && byLocation==null && !_locations.hasIncludes()); diff --git a/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/ClasspathPatternTest.java b/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/ClasspathPatternTest.java index fa4718e930c..1298a3578d0 100644 --- a/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/ClasspathPatternTest.java +++ b/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/ClasspathPatternTest.java @@ -18,7 +18,8 @@ package org.eclipse.jetty.webapp; -import java.io.File; +import java.net.URI; +import java.nio.file.Paths; import java.util.Arrays; import org.eclipse.jetty.toolchain.test.JDK; @@ -119,23 +120,15 @@ public class ClasspathPatternTest Assume.assumeFalse(JDK.IS_9); // jar from JVM classloader - File loc_string = TypeUtil.getLocationOfClassAsFile(String.class); + URI loc_string = TypeUtil.getLocationOfClass(String.class); // System.err.println(loc_string); - // another jar from JVM classloader - File loc_jsse = TypeUtil.getLocationOfClassAsFile(Sun.class); - // System.err.println(loc_jsse); - // a jar from maven repo jar - File loc_junit = TypeUtil.getLocationOfClassAsFile(Test.class); + URI loc_junit = TypeUtil.getLocationOfClass(Test.class); // System.err.println(loc_junit); - // a jar from another maven repo jar - File loc_tool = TypeUtil.getLocationOfClassAsFile(JDK.class); - // System.err.println(loc_tool); - // class file - File loc_test = TypeUtil.getLocationOfClassAsFile(ClasspathPatternTest.class); + URI loc_test = TypeUtil.getLocationOfClass(ClasspathPatternTest.class); // System.err.println(loc_test); ClasspathPattern pattern = new ClasspathPattern(); @@ -147,7 +140,7 @@ public class ClasspathPatternTest Assert.assertThat(pattern.match(ClasspathPatternTest.class), Matchers.is(false)); // Add directory for both JVM classes - pattern.include(loc_string.getParentFile().toURI().toString()); + pattern.include(Paths.get(loc_string).getParent().toUri().toString()); // Add jar for individual class and classes directory pattern.include(loc_junit.toString(), loc_test.toString()); @@ -174,23 +167,15 @@ public class ClasspathPatternTest Assume.assumeFalse(JDK.IS_9); // jar from JVM classloader - File loc_string = TypeUtil.getLocationOfClassAsFile(String.class); + URI loc_string = TypeUtil.getLocationOfClass(String.class); // System.err.println(loc_string); - // another jar from JVM classloader - File loc_jsse = TypeUtil.getLocationOfClassAsFile(Sun.class); - // System.err.println(loc_jsse); - // a jar from maven repo jar - File loc_junit = TypeUtil.getLocationOfClassAsFile(Test.class); + URI loc_junit = TypeUtil.getLocationOfClass(Test.class); // System.err.println(loc_junit); - // a jar from another maven repo jar - File loc_tool = TypeUtil.getLocationOfClassAsFile(JDK.class); - // System.err.println(loc_tool); - // class file - File loc_test = TypeUtil.getLocationOfClassAsFile(ClasspathPatternTest.class); + URI loc_test = TypeUtil.getLocationOfClass(ClasspathPatternTest.class); // System.err.println(loc_test); ClasspathPattern pattern = new ClasspathPattern(); @@ -205,7 +190,7 @@ public class ClasspathPatternTest Assert.assertThat(pattern.match(ClasspathPatternTest.class), Matchers.is(true)); // Add directory for both JVM classes - pattern.exclude(loc_string.getParentFile().toURI().toString()); + pattern.exclude(Paths.get(loc_string).getParent().toUri().toString()); // Add jar for individual class and classes directory pattern.exclude(loc_junit.toString(), loc_test.toString()); From fe173454e1a12c1188eda107549042641f7b0147 Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Wed, 26 Apr 2017 15:38:18 +0200 Subject: [PATCH 65/80] Fixed #1500 --- .../src/main/java/org/eclipse/jetty/server/Response.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/Response.java b/jetty-server/src/main/java/org/eclipse/jetty/server/Response.java index 1448b990e99..46823260f24 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/Response.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/Response.java @@ -653,9 +653,8 @@ public class Response implements HttpServletResponse ErrorHandler error_handler = ErrorHandler.getErrorHandler(_channel.getServer(), contextHandler); if (error_handler!=null) error_handler.handle(null, request, request, this); - else - closeOutput(); } + closeOutput(); } /** @@ -1040,10 +1039,12 @@ public class Response implements HttpServletResponse _out.close(); break; case STREAM: - getOutputStream().close(); + if (!_out.isClosed()) + getOutputStream().close(); break; default: - _out.close(); + if (!_out.isClosed()) + _out.close(); } } From 5e5d650b05ec2b0683dc1c9ce72487b373d77de7 Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Wed, 26 Apr 2017 16:02:18 +0200 Subject: [PATCH 66/80] Issue #1500 --- .../java/org/eclipse/jetty/server/HttpChannel.java | 11 +++++++++-- .../main/java/org/eclipse/jetty/server/Response.java | 3 ++- .../org/eclipse/jetty/servlet/AsyncServletTest.java | 2 -- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java index 6bac7730f51..5a929d57cef 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java @@ -367,8 +367,15 @@ public class HttpChannel implements Runnable, HttpOutput.Interceptor if (LOG.isDebugEnabled()) LOG.debug("Could not perform ERROR dispatch, aborting", x); Throwable failure = (Throwable)_request.getAttribute(RequestDispatcher.ERROR_EXCEPTION); - failure.addSuppressed(x); - minimalErrorResponse(failure); + if (failure==null) + { + minimalErrorResponse(x); + } + else + { + failure.addSuppressed(x); + minimalErrorResponse(failure); + } } break; } diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/Response.java b/jetty-server/src/main/java/org/eclipse/jetty/server/Response.java index 46823260f24..3f9940c8e89 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/Response.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/Response.java @@ -654,7 +654,8 @@ public class Response implements HttpServletResponse if (error_handler!=null) error_handler.handle(null, request, request, this); } - closeOutput(); + if (!request.isAsyncStarted()) + closeOutput(); } /** diff --git a/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/AsyncServletTest.java b/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/AsyncServletTest.java index 42825f5ce6e..c4127173a6a 100644 --- a/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/AsyncServletTest.java +++ b/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/AsyncServletTest.java @@ -52,7 +52,6 @@ import javax.servlet.http.HttpServletResponseWrapper; import org.eclipse.jetty.server.Connector; import org.eclipse.jetty.server.DebugListener; -import org.eclipse.jetty.server.Dispatcher; import org.eclipse.jetty.server.HttpChannel; import org.eclipse.jetty.server.QuietServletException; import org.eclipse.jetty.server.Request; @@ -753,7 +752,6 @@ public class AsyncServletTest // ignored } - // System.err.println(request.getDispatcherType()+" "+request.getRequestURI()); historyAdd(request.getDispatcherType()+" "+request.getRequestURI()); if (request instanceof ServletRequestWrapper || response instanceof ServletResponseWrapper) historyAdd("wrapped"+((request instanceof ServletRequestWrapper)?" REQ":"")+((response instanceof ServletResponseWrapper)?" RSP":"")); From 240b82be708adf5d0fc356008d9bde45d053ac6c Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Wed, 26 Apr 2017 08:45:59 -0700 Subject: [PATCH 67/80] Disabling currently flaky tests that are fixed in issue-207 branch --- .../jetty/websocket/jsr356/server/LargeAnnotatedTest.java | 2 ++ .../java/org/eclipse/jetty/websocket/server/DecoratorsTest.java | 2 ++ .../java/org/eclipse/jetty/websocket/server/ab/TestABCase3.java | 2 ++ 3 files changed, 6 insertions(+) diff --git a/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/LargeAnnotatedTest.java b/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/LargeAnnotatedTest.java index 1d6c2a8dd6f..345ae7cebdf 100644 --- a/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/LargeAnnotatedTest.java +++ b/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/LargeAnnotatedTest.java @@ -32,12 +32,14 @@ import org.eclipse.jetty.websocket.client.WebSocketClient; import org.eclipse.jetty.websocket.common.test.LeakTrackingBufferPoolRule; import org.eclipse.jetty.websocket.jsr356.server.samples.echo.LargeEchoConfiguredSocket; import org.junit.Assert; +import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; /** * Test Echo of Large messages, targeting the {@link javax.websocket.Session#setMaxTextMessageBufferSize(int)} functionality */ +@Ignore public class LargeAnnotatedTest { @Rule diff --git a/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/DecoratorsTest.java b/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/DecoratorsTest.java index 3a353d787b7..9fdf61b97dd 100644 --- a/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/DecoratorsTest.java +++ b/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/DecoratorsTest.java @@ -43,8 +43,10 @@ import org.eclipse.jetty.websocket.servlet.WebSocketServlet; import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory; import org.junit.AfterClass; import org.junit.BeforeClass; +import org.junit.Ignore; import org.junit.Test; +@Ignore public class DecoratorsTest { private static class DecoratorsSocket extends WebSocketAdapter diff --git a/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/ab/TestABCase3.java b/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/ab/TestABCase3.java index 00f93eb942f..891088018c1 100644 --- a/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/ab/TestABCase3.java +++ b/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/ab/TestABCase3.java @@ -32,12 +32,14 @@ import org.eclipse.jetty.websocket.common.frames.BinaryFrame; import org.eclipse.jetty.websocket.common.frames.PingFrame; import org.eclipse.jetty.websocket.common.frames.TextFrame; import org.eclipse.jetty.websocket.common.test.Fuzzer; +import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; /** * Test various RSV violations */ +@Ignore @RunWith(AdvancedRunner.class) public class TestABCase3 extends AbstractABCase { From f2dce2944af246770dbe91b6e5014551dc782973 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Wed, 26 Apr 2017 08:51:54 -0700 Subject: [PATCH 68/80] Fixing build: [WARNING] Unable to locate Source XRef to link to --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index b924a0ba8e6..4a4862f9a4c 100644 --- a/pom.xml +++ b/pom.xml @@ -215,6 +215,7 @@ + false 1.8 jetty/pmd_logging_ruleset.xml From 10bab0f1c20ab8377eba9e794b9a6f12ea3532ee Mon Sep 17 00:00:00 2001 From: WalkerWatch Date: Wed, 26 Apr 2017 13:09:53 -0400 Subject: [PATCH 69/80] Small documentation update --- .../src/main/asciidoc/administration/logging/chapter.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jetty-documentation/src/main/asciidoc/administration/logging/chapter.adoc b/jetty-documentation/src/main/asciidoc/administration/logging/chapter.adoc index f8a6f664428..b0f80f1a0ca 100644 --- a/jetty-documentation/src/main/asciidoc/administration/logging/chapter.adoc +++ b/jetty-documentation/src/main/asciidoc/administration/logging/chapter.adoc @@ -19,7 +19,7 @@ This chapter discusses various options for configuring logging. -//include::configuring-jetty-logging.adoc[] +include::configuring-jetty-logging.adoc[] include::default-logging-with-stderrlog.adoc[] include::configuring-jetty-request-logs.adoc[] include::configuring-logging-modules.adoc[] From 0195812f1846666d2f2af8630404f974b885f567 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Wed, 26 Apr 2017 11:34:57 -0700 Subject: [PATCH 70/80] Disabling more flaky tests that are fixed in issue-207 branch --- .../jetty/websocket/jsr356/server/LargeContainerTest.java | 2 ++ .../org/eclipse/jetty/websocket/server/WebSocketCloseTest.java | 2 ++ 2 files changed, 4 insertions(+) diff --git a/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/LargeContainerTest.java b/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/LargeContainerTest.java index b25fdc59771..cc79c5a2a6d 100644 --- a/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/LargeContainerTest.java +++ b/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/LargeContainerTest.java @@ -32,12 +32,14 @@ import org.eclipse.jetty.websocket.client.WebSocketClient; import org.eclipse.jetty.websocket.common.test.LeakTrackingBufferPoolRule; import org.eclipse.jetty.websocket.jsr356.server.samples.echo.LargeEchoDefaultSocket; import org.junit.Assert; +import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; /** * Test Echo of Large messages, targeting the {@link javax.websocket.WebSocketContainer#setDefaultMaxTextMessageBufferSize(int)} functionality */ +@Ignore public class LargeContainerTest { @Rule diff --git a/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/WebSocketCloseTest.java b/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/WebSocketCloseTest.java index d1995aecb69..809e665228e 100644 --- a/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/WebSocketCloseTest.java +++ b/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/WebSocketCloseTest.java @@ -50,11 +50,13 @@ import org.eclipse.jetty.websocket.servlet.WebSocketServlet; import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory; import org.junit.AfterClass; import org.junit.BeforeClass; +import org.junit.Ignore; import org.junit.Test; /** * Tests various close scenarios */ +@Ignore public class WebSocketCloseTest { static class AbstractCloseSocket extends WebSocketAdapter From 17caad898b67941ac1638bdb9f97e9b6a5352966 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Wed, 26 Apr 2017 21:10:14 +0200 Subject: [PATCH 71/80] Fixes #1506 - Make HttpChannels recycling configurable for HTTP/2. --- .../http2/server/HTTP2ServerConnection.java | 37 +++++++++++++++---- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HTTP2ServerConnection.java b/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HTTP2ServerConnection.java index f1b1636b742..18e6d47c22a 100644 --- a/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HTTP2ServerConnection.java +++ b/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HTTP2ServerConnection.java @@ -89,6 +89,7 @@ public class HTTP2ServerConnection extends HTTP2Connection implements Connection private final AtomicLong totalResponses = new AtomicLong(); private final ServerSessionListener listener; private final HttpConfiguration httpConfig; + private boolean recycleHttpChannels; public HTTP2ServerConnection(ByteBufferPool byteBufferPool, Executor executor, EndPoint endPoint, HttpConfiguration httpConfig, ServerParser parser, ISession session, int inputBufferSize, ServerSessionListener listener) { @@ -115,6 +116,16 @@ public class HTTP2ServerConnection extends HTTP2Connection implements Connection return (ServerParser)super.getParser(); } + public boolean isRecycleHttpChannels() + { + return recycleHttpChannels; + } + + public void setRecycleHttpChannels(boolean recycleHttpChannels) + { + this.recycleHttpChannels = recycleHttpChannels; + } + @Override public void onUpgradeTo(ByteBuffer buffer) { @@ -234,7 +245,7 @@ public class HTTP2ServerConnection extends HTTP2Connection implements Connection private HttpChannelOverHTTP2 provideHttpChannel(Connector connector, IStream stream) { - HttpChannelOverHTTP2 channel = pollChannel(); + HttpChannelOverHTTP2 channel = pollHttpChannel(); if (channel != null) { channel.getHttpTransport().setStream(stream); @@ -258,19 +269,29 @@ public class HTTP2ServerConnection extends HTTP2Connection implements Connection return new ServerHttpChannelOverHTTP2(connector, httpConfig, getEndPoint(), transport); } - private void offerChannel(HttpChannelOverHTTP2 channel) + private void offerHttpChannel(HttpChannelOverHTTP2 channel) { - synchronized (this) + if (isRecycleHttpChannels()) { - channels.offer(channel); + synchronized (this) + { + channels.offer(channel); + } } } - private HttpChannelOverHTTP2 pollChannel() + private HttpChannelOverHTTP2 pollHttpChannel() { - synchronized (this) + if (isRecycleHttpChannels()) { - return channels.poll(); + synchronized (this) + { + return channels.poll(); + } + } + else + { + return null; } } @@ -336,7 +357,7 @@ public class HTTP2ServerConnection extends HTTP2Connection implements Connection { getStream().removeAttribute(IStream.CHANNEL_ATTRIBUTE); super.recycle(); - offerChannel(this); + offerHttpChannel(this); } @Override From cbc3e7cc18f8d98b75461efc25871e5f88c0f1b9 Mon Sep 17 00:00:00 2001 From: Jan Bartel Date: Thu, 27 Apr 2017 10:12:39 +0200 Subject: [PATCH 72/80] Issue #1508 --- jetty-gcloud/pom.xml | 2 +- .../jetty/gcloud/session/GCloudSessionTestSupport.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/jetty-gcloud/pom.xml b/jetty-gcloud/pom.xml index 5861a509fe9..86ef8d7279c 100644 --- a/jetty-gcloud/pom.xml +++ b/jetty-gcloud/pom.xml @@ -13,7 +13,7 @@ Jetty :: GCloud - 0.10.0-beta + 1.0.0 diff --git a/tests/test-sessions/test-gcloud-sessions/src/test/java/org/eclipse/jetty/gcloud/session/GCloudSessionTestSupport.java b/tests/test-sessions/test-gcloud-sessions/src/test/java/org/eclipse/jetty/gcloud/session/GCloudSessionTestSupport.java index 306826e6ddc..710e2f21ed4 100644 --- a/tests/test-sessions/test-gcloud-sessions/src/test/java/org/eclipse/jetty/gcloud/session/GCloudSessionTestSupport.java +++ b/tests/test-sessions/test-gcloud-sessions/src/test/java/org/eclipse/jetty/gcloud/session/GCloudSessionTestSupport.java @@ -29,7 +29,7 @@ import java.util.Set; import org.eclipse.jetty.server.session.SessionDataStore; import org.eclipse.jetty.server.session.SessionHandler; -import org.joda.time.Duration; +import org.threeten.bp.Duration; import com.google.cloud.datastore.Datastore; import com.google.cloud.datastore.DatastoreOptions; @@ -102,7 +102,7 @@ public class GCloudSessionTestSupport public void tearDown() throws Exception { - _helper.stop(Duration.standardMinutes(1)); //wait up to 1min for shutdown + _helper.stop(Duration.ofMinutes(1)); //wait up to 1min for shutdown } From 118652e985b4486b5427654a02b70dcbea9255bb Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Thu, 27 Apr 2017 10:57:37 +0200 Subject: [PATCH 73/80] Issue #1507 --- .../jetty/util/RolloverFileOutputStream.java | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/RolloverFileOutputStream.java b/jetty-util/src/main/java/org/eclipse/jetty/util/RolloverFileOutputStream.java index 401ccd0aff0..f4db2930bed 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/RolloverFileOutputStream.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/RolloverFileOutputStream.java @@ -175,9 +175,12 @@ public class RolloverFileOutputStream extends FilterOutputStream if (__rollover==null) __rollover=new Timer(RolloverFileOutputStream.class.getName(),true); - midnight = toMidnight(ZonedDateTime.now(), zone.toZoneId()); + ZonedDateTime now = ZonedDateTime.now(zone.toZoneId()); + midnight = toMidnight(now, zone.toZoneId()); + while (midnight.isBefore(now)) + midnight = nextMidnight(midnight); - scheduleNextRollover(); + scheduleNextRollover(now); } } @@ -205,11 +208,11 @@ public class RolloverFileOutputStream extends FilterOutputStream return dateTime.toLocalDate().plus(1, ChronoUnit.DAYS).atStartOfDay(dateTime.getZone()); } - private void scheduleNextRollover() + private void scheduleNextRollover(ZonedDateTime now) { _rollTask = new RollTask(); midnight = nextMidnight(midnight); - __rollover.schedule(_rollTask,midnight.toInstant().toEpochMilli() - System.currentTimeMillis()); + __rollover.schedule(_rollTask,midnight.toInstant().toEpochMilli() - now.toInstant().toEpochMilli()); } /* ------------------------------------------------------------ */ @@ -276,11 +279,10 @@ public class RolloverFileOutputStream extends FilterOutputStream } /* ------------------------------------------------------------ */ - private void removeOldFiles() + private void removeOldFiles(ZonedDateTime now) { if (_retainDays>0) { - ZonedDateTime now = ZonedDateTime.now(this.midnight.getZone()); now.minus(_retainDays, ChronoUnit.DAYS); long expired = now.toInstant().toEpochMilli(); @@ -354,9 +356,10 @@ public class RolloverFileOutputStream extends FilterOutputStream { try { + ZonedDateTime now = ZonedDateTime.now(midnight.getZone()); RolloverFileOutputStream.this.setFile(); - RolloverFileOutputStream.this.scheduleNextRollover(); - RolloverFileOutputStream.this.removeOldFiles(); + RolloverFileOutputStream.this.scheduleNextRollover(now); + RolloverFileOutputStream.this.removeOldFiles(now); } catch(Throwable t) { From f9e9fd645d9cb1bc639a09c63095c94042732c3d Mon Sep 17 00:00:00 2001 From: Jan Bartel Date: Thu, 27 Apr 2017 12:47:30 +0200 Subject: [PATCH 74/80] Issue #1510 --- .../server/session/DefaultSessionIdManager.java | 12 ++++-------- .../eclipse/jetty/server/session/SessionHandler.java | 2 +- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/session/DefaultSessionIdManager.java b/jetty-server/src/main/java/org/eclipse/jetty/server/session/DefaultSessionIdManager.java index 550288ec5d7..54717426271 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/session/DefaultSessionIdManager.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/session/DefaultSessionIdManager.java @@ -519,15 +519,11 @@ public class DefaultSessionIdManager extends ContainerLifeCycle implements Sessi public Set getSessionHandlers() { Set handlers = new HashSet<>(); - - Handler[] contexts = _server.getChildHandlersByClass(ContextHandler.class); - for (int i=0; contexts!=null && i Date: Thu, 27 Apr 2017 07:25:13 -0700 Subject: [PATCH 75/80] Issue #1507 - ROFS: Simplifying, Documenting, Testing --- .../jetty/util/RolloverFileOutputStream.java | 31 ++++++++++--------- .../util/RolloverFileOutputStreamTest.java | 27 ++++++++++++++-- 2 files changed, 42 insertions(+), 16 deletions(-) diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/RolloverFileOutputStream.java b/jetty-util/src/main/java/org/eclipse/jetty/util/RolloverFileOutputStream.java index f4db2930bed..63e20d17cda 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/RolloverFileOutputStream.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/RolloverFileOutputStream.java @@ -174,13 +174,12 @@ public class RolloverFileOutputStream extends FilterOutputStream { if (__rollover==null) __rollover=new Timer(RolloverFileOutputStream.class.getName(),true); + + // Calculate Today's Midnight, based on Configured TimeZone (will be in past, even if by a few milliseconds) + midnight = toMidnight(ZonedDateTime.now(zone.toZoneId()), zone.toZoneId()); - ZonedDateTime now = ZonedDateTime.now(zone.toZoneId()); - midnight = toMidnight(now, zone.toZoneId()); - while (midnight.isBefore(now)) - midnight = nextMidnight(midnight); - - scheduleNextRollover(now); + // This will schedule the rollover event to the next midnight + scheduleNextRollover(); } } @@ -204,15 +203,19 @@ public class RolloverFileOutputStream extends FilterOutputStream */ public static ZonedDateTime nextMidnight(ZonedDateTime dateTime) { - // Increment to next day. + // Increment to next day, based on Configured TimeZone, then find start of that day. + // Will always be in the future, even if the Daylights Savings Time kicks in during + // the calculation. return dateTime.toLocalDate().plus(1, ChronoUnit.DAYS).atStartOfDay(dateTime.getZone()); } - private void scheduleNextRollover(ZonedDateTime now) + private void scheduleNextRollover() { _rollTask = new RollTask(); + // Get tomorrow's midnight based on Configured TimeZone midnight = nextMidnight(midnight); - __rollover.schedule(_rollTask,midnight.toInstant().toEpochMilli() - now.toInstant().toEpochMilli()); + // Schedule next rollover event to occur, based on local machine's Unix Epoch milliseconds + __rollover.schedule(_rollTask,midnight.toInstant().toEpochMilli() - System.currentTimeMillis()); } /* ------------------------------------------------------------ */ @@ -279,11 +282,12 @@ public class RolloverFileOutputStream extends FilterOutputStream } /* ------------------------------------------------------------ */ - private void removeOldFiles(ZonedDateTime now) + private void removeOldFiles() { if (_retainDays>0) { - now.minus(_retainDays, ChronoUnit.DAYS); + // Establish expiration time, based on configured TimeZone + ZonedDateTime now = ZonedDateTime.now(this.midnight.getZone()); long expired = now.toInstant().toEpochMilli(); File file= new File(_filename); @@ -356,10 +360,9 @@ public class RolloverFileOutputStream extends FilterOutputStream { try { - ZonedDateTime now = ZonedDateTime.now(midnight.getZone()); RolloverFileOutputStream.this.setFile(); - RolloverFileOutputStream.this.scheduleNextRollover(now); - RolloverFileOutputStream.this.removeOldFiles(now); + RolloverFileOutputStream.this.scheduleNextRollover(); + RolloverFileOutputStream.this.removeOldFiles(); } catch(Throwable t) { diff --git a/jetty-util/src/test/java/org/eclipse/jetty/util/RolloverFileOutputStreamTest.java b/jetty-util/src/test/java/org/eclipse/jetty/util/RolloverFileOutputStreamTest.java index 829f255b527..834a27ec5af 100644 --- a/jetty-util/src/test/java/org/eclipse/jetty/util/RolloverFileOutputStreamTest.java +++ b/jetty-util/src/test/java/org/eclipse/jetty/util/RolloverFileOutputStreamTest.java @@ -57,14 +57,37 @@ public class RolloverFileOutputStreamTest for (int i = 0; i < expected.length; i++) { - long lastMs = nextEvent.toInstant().toEpochMilli(); + long currentMillis = nextEvent.toInstant().toEpochMilli(); nextEvent = RolloverFileOutputStream.nextMidnight(nextEvent); assertThat("Next Event", toString(nextEvent), is(expected[i][0])); - long duration = (nextEvent.toInstant().toEpochMilli() - lastMs); + long duration = (nextEvent.toInstant().toEpochMilli() - currentMillis); assertThat("Duration to next event", duration, is((long) expected[i][1])); } } + /** + *
https://github.com/eclipse/jetty.project/issues/1507 + */ + @Test + public void testMidnightRolloverCalc_PDT_Issue1507() + { + ZoneId zone = toZoneId("PST"); + ZonedDateTime initialDate = toDateTime("2017.04.27-08:00:00.0 PM PDT", zone); + + ZonedDateTime midnight = RolloverFileOutputStream.toMidnight(initialDate, zone); + assertThat("Midnight", toString(midnight), is("2017.04.27-12:00:00.0 AM PDT")); + + Object expected[][] = { + {"2017.04.28-12:00:00.0 AM PDT", 14_400_000L}, // Ensure not negative + {"2017.04.29-12:00:00.0 AM PDT", 86_400_000L}, + {"2017.04.30-12:00:00.0 AM PDT", 86_400_000L}, + {"2017.05.01-12:00:00.0 AM PDT", 86_400_000L}, + {"2017.05.02-12:00:00.0 AM PDT", 86_400_000L}, + }; + + assertSequence(initialDate, expected); + } + @Test public void testMidnightRolloverCalc_PST_DST_Start() { From 94ea83b49a134df94f992fbb33915d2f1c954651 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Thu, 27 Apr 2017 08:58:24 -0700 Subject: [PATCH 76/80] Issue #1507 - adding state information to ISE if it occurs --- .../jetty/util/RolloverFileOutputStream.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/RolloverFileOutputStream.java b/jetty-util/src/main/java/org/eclipse/jetty/util/RolloverFileOutputStream.java index 63e20d17cda..0f030cbe274 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/RolloverFileOutputStream.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/RolloverFileOutputStream.java @@ -214,8 +214,20 @@ public class RolloverFileOutputStream extends FilterOutputStream _rollTask = new RollTask(); // Get tomorrow's midnight based on Configured TimeZone midnight = nextMidnight(midnight); - // Schedule next rollover event to occur, based on local machine's Unix Epoch milliseconds - __rollover.schedule(_rollTask,midnight.toInstant().toEpochMilli() - System.currentTimeMillis()); + + long now = System.currentTimeMillis(); + long delay = midnight.toInstant().toEpochMilli() - System.currentTimeMillis(); + try + { + // Schedule next rollover event to occur, based on local machine's Unix Epoch milliseconds + __rollover.schedule(_rollTask, delay); + } + catch (IllegalArgumentException e) + { + System.err.printf("[ERROR] midnight=%s, midnight-epoch=%d, now=%d, delay=%d - ", + midnight, midnight.toInstant().toEpochMilli(), now, delay); + e.printStackTrace(System.err); + } } /* ------------------------------------------------------------ */ From 860d8658ca469a52e2042bdadd4d77cbfeffb757 Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Fri, 28 Apr 2017 10:25:29 +0200 Subject: [PATCH 77/80] Fixed #1513 sync shared timer --- .../org/eclipse/jetty/util/RolloverFileOutputStream.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/RolloverFileOutputStream.java b/jetty-util/src/main/java/org/eclipse/jetty/util/RolloverFileOutputStream.java index f4db2930bed..ef4d16fab3f 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/RolloverFileOutputStream.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/RolloverFileOutputStream.java @@ -212,7 +212,10 @@ public class RolloverFileOutputStream extends FilterOutputStream { _rollTask = new RollTask(); midnight = nextMidnight(midnight); - __rollover.schedule(_rollTask,midnight.toInstant().toEpochMilli() - now.toInstant().toEpochMilli()); + synchronized(RolloverFileOutputStream.class) + { + __rollover.schedule(_rollTask,midnight.toInstant().toEpochMilli() - now.toInstant().toEpochMilli()); + } } /* ------------------------------------------------------------ */ From c87903f39d3d0063c460fe9b66b9e406d0e02bdb Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Fri, 28 Apr 2017 11:01:42 +0200 Subject: [PATCH 78/80] Fixed #1513 back ported some 9.4 changes --- .../jetty/util/RolloverFileOutputStream.java | 51 +++++++++++-------- 1 file changed, 30 insertions(+), 21 deletions(-) diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/RolloverFileOutputStream.java b/jetty-util/src/main/java/org/eclipse/jetty/util/RolloverFileOutputStream.java index ef4d16fab3f..c7ea1cd9b16 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/RolloverFileOutputStream.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/RolloverFileOutputStream.java @@ -55,7 +55,7 @@ public class RolloverFileOutputStream extends FilterOutputStream final static int ROLLOVER_FILE_RETAIN_DAYS = 31; private RollTask _rollTask; - private ZonedDateTime midnight; + private ZonedDateTime _midnight; private SimpleDateFormat _fileBackupFormat; private SimpleDateFormat _fileDateFormat; @@ -174,16 +174,16 @@ public class RolloverFileOutputStream extends FilterOutputStream { if (__rollover==null) __rollover=new Timer(RolloverFileOutputStream.class.getName(),true); - - ZonedDateTime now = ZonedDateTime.now(zone.toZoneId()); - midnight = toMidnight(now, zone.toZoneId()); - while (midnight.isBefore(now)) - midnight = nextMidnight(midnight); - + + // Calculate Today's Midnight, based on Configured TimeZone (will be in past, even if by a few milliseconds) + ZonedDateTime now = ZonedDateTime.now(zone.toZoneId()); + _midnight = toMidnight(now, zone.toZoneId()); + // This will schedule the rollover event to the next midnight scheduleNextRollover(now); } } - + + /* ------------------------------------------------------------ */ /** * Get the "start of day" for the provided DateTime at the zone specified. * @@ -195,7 +195,8 @@ public class RolloverFileOutputStream extends FilterOutputStream { return dateTime.toLocalDate().atStartOfDay(zone); } - + + /* ------------------------------------------------------------ */ /** * Get the next "start of day" for the provided date. * @@ -204,18 +205,23 @@ public class RolloverFileOutputStream extends FilterOutputStream */ public static ZonedDateTime nextMidnight(ZonedDateTime dateTime) { - // Increment to next day. + // Increment to next day, based on Configured TimeZone, then find start of that day. + // Will always be in the future, even if the Daylights Savings Time kicks in during + // the calculation. return dateTime.toLocalDate().plus(1, ChronoUnit.DAYS).atStartOfDay(dateTime.getZone()); } - + + /* ------------------------------------------------------------ */ private void scheduleNextRollover(ZonedDateTime now) { _rollTask = new RollTask(); - midnight = nextMidnight(midnight); - synchronized(RolloverFileOutputStream.class) - { - __rollover.schedule(_rollTask,midnight.toInstant().toEpochMilli() - now.toInstant().toEpochMilli()); - } + // Get tomorrow's midnight based on Configured TimeZone + while (_midnight.isBefore(now)) + _midnight = nextMidnight(_midnight); + + long delay = _midnight.toInstant().toEpochMilli() - now.toInstant().toEpochMilli(); + // Schedule next rollover event to occur, based on local machine's Unix Epoch milliseconds + __rollover.schedule(_rollTask,delay); } /* ------------------------------------------------------------ */ @@ -286,7 +292,7 @@ public class RolloverFileOutputStream extends FilterOutputStream { if (_retainDays>0) { - now.minus(_retainDays, ChronoUnit.DAYS); + // Establish expiration time, based on configured TimeZone long expired = now.toInstant().toEpochMilli(); File file= new File(_filename); @@ -359,10 +365,13 @@ public class RolloverFileOutputStream extends FilterOutputStream { try { - ZonedDateTime now = ZonedDateTime.now(midnight.getZone()); - RolloverFileOutputStream.this.setFile(); - RolloverFileOutputStream.this.scheduleNextRollover(now); - RolloverFileOutputStream.this.removeOldFiles(now); + synchronized(RolloverFileOutputStream.class) + { + ZonedDateTime now = ZonedDateTime.now(_midnight.getZone()); + RolloverFileOutputStream.this.setFile(); + RolloverFileOutputStream.this.scheduleNextRollover(now); + RolloverFileOutputStream.this.removeOldFiles(now); + } } catch(Throwable t) { From a4cfd8a7a59de15d9aea43c5fd73c64a934a93c2 Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Fri, 28 Apr 2017 11:38:48 +0200 Subject: [PATCH 79/80] Fixed #1513 paranoid cleanup --- .../jetty/util/RolloverFileOutputStream.java | 64 ++++++------------- .../util/RolloverFileOutputStreamTest.java | 11 ++-- 2 files changed, 26 insertions(+), 49 deletions(-) diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/RolloverFileOutputStream.java b/jetty-util/src/main/java/org/eclipse/jetty/util/RolloverFileOutputStream.java index c7ea1cd9b16..d83385de389 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/RolloverFileOutputStream.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/RolloverFileOutputStream.java @@ -24,9 +24,7 @@ import java.io.FilterOutputStream; import java.io.IOException; import java.io.OutputStream; import java.text.SimpleDateFormat; -import java.time.ZoneId; import java.time.ZonedDateTime; -import java.time.temporal.ChronoUnit; import java.util.Date; import java.util.Locale; import java.util.TimeZone; @@ -55,7 +53,6 @@ public class RolloverFileOutputStream extends FilterOutputStream final static int ROLLOVER_FILE_RETAIN_DAYS = 31; private RollTask _rollTask; - private ZonedDateTime _midnight; private SimpleDateFormat _fileBackupFormat; private SimpleDateFormat _fileDateFormat; @@ -120,7 +117,6 @@ public class RolloverFileOutputStream extends FilterOutputStream TimeZone zone) throws IOException { - this(filename,append,retainDays,zone,null,null); } @@ -168,7 +164,6 @@ public class RolloverFileOutputStream extends FilterOutputStream _filename=filename; _append=append; _retainDays=retainDays; - setFile(); synchronized(RolloverFileOutputStream.class) { @@ -176,8 +171,8 @@ public class RolloverFileOutputStream extends FilterOutputStream __rollover=new Timer(RolloverFileOutputStream.class.getName(),true); // Calculate Today's Midnight, based on Configured TimeZone (will be in past, even if by a few milliseconds) - ZonedDateTime now = ZonedDateTime.now(zone.toZoneId()); - _midnight = toMidnight(now, zone.toZoneId()); + ZonedDateTime now = ZonedDateTime.now(zone.toZoneId()); + setFile(now); // This will schedule the rollover event to the next midnight scheduleNextRollover(now); } @@ -187,28 +182,12 @@ public class RolloverFileOutputStream extends FilterOutputStream /** * Get the "start of day" for the provided DateTime at the zone specified. * - * @param dateTime the date time to calculate from - * @param zone the zone to return the date in + * @param now the date time to calculate from * @return start of the day of the date provided */ - public static ZonedDateTime toMidnight(ZonedDateTime dateTime, ZoneId zone) + public static ZonedDateTime toMidnight(ZonedDateTime now) { - return dateTime.toLocalDate().atStartOfDay(zone); - } - - /* ------------------------------------------------------------ */ - /** - * Get the next "start of day" for the provided date. - * - * @param dateTime the date to calculate from - * @return the start of the next day - */ - public static ZonedDateTime nextMidnight(ZonedDateTime dateTime) - { - // Increment to next day, based on Configured TimeZone, then find start of that day. - // Will always be in the future, even if the Daylights Savings Time kicks in during - // the calculation. - return dateTime.toLocalDate().plus(1, ChronoUnit.DAYS).atStartOfDay(dateTime.getZone()); + return now.toLocalDate().atStartOfDay(now.getZone()); } /* ------------------------------------------------------------ */ @@ -216,11 +195,10 @@ public class RolloverFileOutputStream extends FilterOutputStream { _rollTask = new RollTask(); // Get tomorrow's midnight based on Configured TimeZone - while (_midnight.isBefore(now)) - _midnight = nextMidnight(_midnight); + ZonedDateTime midnight = toMidnight(now); - long delay = _midnight.toInstant().toEpochMilli() - now.toInstant().toEpochMilli(); // Schedule next rollover event to occur, based on local machine's Unix Epoch milliseconds + long delay = midnight.toInstant().toEpochMilli() - now.toInstant().toEpochMilli(); __rollover.schedule(_rollTask,delay); } @@ -245,7 +223,7 @@ public class RolloverFileOutputStream extends FilterOutputStream } /* ------------------------------------------------------------ */ - private synchronized void setFile() + private synchronized void setFile(ZonedDateTime now) throws IOException { // Check directory @@ -256,8 +234,6 @@ public class RolloverFileOutputStream extends FilterOutputStream if (!dir.isDirectory() || !dir.canWrite()) throw new IOException("Cannot write log directory "+dir); - Date now=new Date(); - // Is this a rollover file? String filename=file.getName(); int i=filename.toLowerCase(Locale.ENGLISH).indexOf(YYYY_MM_DD); @@ -265,7 +241,7 @@ public class RolloverFileOutputStream extends FilterOutputStream { file=new File(dir, filename.substring(0,i)+ - _fileDateFormat.format(now)+ + _fileDateFormat.format(new Date(now.toInstant().toEpochMilli()))+ filename.substring(i+YYYY_MM_DD.length())); } @@ -323,19 +299,19 @@ public class RolloverFileOutputStream extends FilterOutputStream /* ------------------------------------------------------------ */ @Override public void write (byte[] buf) - throws IOException - { - out.write (buf); - } + throws IOException + { + out.write (buf); + } /* ------------------------------------------------------------ */ @Override public void write (byte[] buf, int off, int len) - throws IOException - { - out.write (buf, off, len); - } - + throws IOException + { + out.write (buf, off, len); + } + /* ------------------------------------------------------------ */ @Override public void close() @@ -367,8 +343,8 @@ public class RolloverFileOutputStream extends FilterOutputStream { synchronized(RolloverFileOutputStream.class) { - ZonedDateTime now = ZonedDateTime.now(_midnight.getZone()); - RolloverFileOutputStream.this.setFile(); + ZonedDateTime now = ZonedDateTime.now(_fileDateFormat.getTimeZone().toZoneId()); + RolloverFileOutputStream.this.setFile(now); RolloverFileOutputStream.this.scheduleNextRollover(now); RolloverFileOutputStream.this.removeOldFiles(now); } diff --git a/jetty-util/src/test/java/org/eclipse/jetty/util/RolloverFileOutputStreamTest.java b/jetty-util/src/test/java/org/eclipse/jetty/util/RolloverFileOutputStreamTest.java index 829f255b527..b68851a43c1 100644 --- a/jetty-util/src/test/java/org/eclipse/jetty/util/RolloverFileOutputStreamTest.java +++ b/jetty-util/src/test/java/org/eclipse/jetty/util/RolloverFileOutputStreamTest.java @@ -24,6 +24,7 @@ import static org.junit.Assert.assertThat; import java.time.ZoneId; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; +import java.time.temporal.ChronoUnit; import java.time.temporal.TemporalAccessor; import java.util.TimeZone; @@ -58,7 +59,7 @@ public class RolloverFileOutputStreamTest for (int i = 0; i < expected.length; i++) { long lastMs = nextEvent.toInstant().toEpochMilli(); - nextEvent = RolloverFileOutputStream.nextMidnight(nextEvent); + nextEvent = nextEvent.toLocalDate().plus(1, ChronoUnit.DAYS).atStartOfDay(nextEvent.getZone()); assertThat("Next Event", toString(nextEvent), is(expected[i][0])); long duration = (nextEvent.toInstant().toEpochMilli() - lastMs); assertThat("Duration to next event", duration, is((long) expected[i][1])); @@ -71,7 +72,7 @@ public class RolloverFileOutputStreamTest ZoneId zone = toZoneId("PST"); ZonedDateTime initialDate = toDateTime("2016.03.11-01:23:45.0 PM PST", zone); - ZonedDateTime midnight = RolloverFileOutputStream.toMidnight(initialDate, zone); + ZonedDateTime midnight = RolloverFileOutputStream.toMidnight(initialDate); assertThat("Midnight", toString(midnight), is("2016.03.11-12:00:00.0 AM PST")); Object expected[][] = { @@ -91,7 +92,7 @@ public class RolloverFileOutputStreamTest ZoneId zone = toZoneId("PST"); ZonedDateTime initialDate = toDateTime("2016.11.04-11:22:33.0 AM PDT", zone); - ZonedDateTime midnight = RolloverFileOutputStream.toMidnight(initialDate, zone); + ZonedDateTime midnight = RolloverFileOutputStream.toMidnight(initialDate); assertThat("Midnight", toString(midnight), is("2016.11.04-12:00:00.0 AM PDT")); Object expected[][] = { @@ -111,7 +112,7 @@ public class RolloverFileOutputStreamTest ZoneId zone = toZoneId("Australia/Sydney"); ZonedDateTime initialDate = toDateTime("2016.10.01-01:23:45.0 PM AEST", zone); - ZonedDateTime midnight = RolloverFileOutputStream.toMidnight(initialDate, zone); + ZonedDateTime midnight = RolloverFileOutputStream.toMidnight(initialDate); assertThat("Midnight", toString(midnight), is("2016.10.01-12:00:00.0 AM AEST")); Object expected[][] = { @@ -131,7 +132,7 @@ public class RolloverFileOutputStreamTest ZoneId zone = toZoneId("Australia/Sydney"); ZonedDateTime initialDate = toDateTime("2016.04.02-11:22:33.0 AM AEDT", zone); - ZonedDateTime midnight = RolloverFileOutputStream.toMidnight(initialDate, zone); + ZonedDateTime midnight = RolloverFileOutputStream.toMidnight(initialDate); assertThat("Midnight", toString(midnight), is("2016.04.02-12:00:00.0 AM AEDT")); Object expected[][] = { From 90a90d6c76dca2588486213a6a0914d22d4711a4 Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Fri, 28 Apr 2017 13:30:49 +0200 Subject: [PATCH 80/80] Issue #304 Deprecated sid methods --- jetty-util/src/main/java/org/eclipse/jetty/util/StringUtil.java | 2 ++ .../src/test/java/org/eclipse/jetty/util/StringUtilTest.java | 1 + 2 files changed, 3 insertions(+) diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/StringUtil.java b/jetty-util/src/main/java/org/eclipse/jetty/util/StringUtil.java index e0ffafaafbf..6c183a5d36d 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/StringUtil.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/StringUtil.java @@ -585,6 +585,7 @@ public class StringUtil * @param sidBytes the SID bytes to build from * @return the string SID */ + @Deprecated public static String sidBytesToString(byte[] sidBytes) { StringBuilder sidString = new StringBuilder(); @@ -634,6 +635,7 @@ public class StringUtil * @param sidString the string SID * @return the binary SID */ + @Deprecated public static byte[] sidStringToBytes( String sidString ) { String[] sidTokens = sidString.split("-"); diff --git a/jetty-util/src/test/java/org/eclipse/jetty/util/StringUtilTest.java b/jetty-util/src/test/java/org/eclipse/jetty/util/StringUtilTest.java index 23cd7896cbd..2eb897d01b5 100644 --- a/jetty-util/src/test/java/org/eclipse/jetty/util/StringUtilTest.java +++ b/jetty-util/src/test/java/org/eclipse/jetty/util/StringUtilTest.java @@ -143,6 +143,7 @@ public class StringUtilTest } @Test + @Deprecated public void testSidConversion() throws Exception { String sid4 = "S-1-4-21-3623811015-3361044348-30300820";