diff --git a/jetty-alpn/jetty-alpn-server/src/main/config/modules/alpn-impl.mod b/jetty-alpn/jetty-alpn-server/src/main/config/modules/alpn-impl.mod deleted file mode 100644 index 0cc101702ccf..000000000000 --- a/jetty-alpn/jetty-alpn-server/src/main/config/modules/alpn-impl.mod +++ /dev/null @@ -1,7 +0,0 @@ -# DO NOT EDIT - See: https://www.eclipse.org/jetty/documentation/current/startup-modules.html - -[description] -Selects an ALPN (Application Layer Protocol Negotiation) implementation by java version. - -[depend] -alpn-impl/alpn-${java.version.platform} diff --git a/jetty-alpn/jetty-alpn-server/src/main/config/modules/alpn-impl/alpn-10.mod b/jetty-alpn/jetty-alpn-server/src/main/config/modules/alpn-impl/alpn-10.mod deleted file mode 100644 index a3dbcb0e7c9d..000000000000 --- a/jetty-alpn/jetty-alpn-server/src/main/config/modules/alpn-impl/alpn-10.mod +++ /dev/null @@ -1,4 +0,0 @@ -# DO NOT EDIT - See: https://www.eclipse.org/jetty/documentation/current/startup-modules.html - -[depend] -alpn-impl/alpn-9 diff --git a/jetty-alpn/jetty-alpn-server/src/main/config/modules/alpn-impl/alpn-11.mod b/jetty-alpn/jetty-alpn-server/src/main/config/modules/alpn-impl/alpn-11.mod deleted file mode 100644 index a3dbcb0e7c9d..000000000000 --- a/jetty-alpn/jetty-alpn-server/src/main/config/modules/alpn-impl/alpn-11.mod +++ /dev/null @@ -1,4 +0,0 @@ -# DO NOT EDIT - See: https://www.eclipse.org/jetty/documentation/current/startup-modules.html - -[depend] -alpn-impl/alpn-9 diff --git a/jetty-alpn/jetty-alpn-server/src/main/config/modules/alpn-impl/alpn-12.mod b/jetty-alpn/jetty-alpn-server/src/main/config/modules/alpn-impl/alpn-12.mod deleted file mode 100644 index 4dbcf25f5839..000000000000 --- a/jetty-alpn/jetty-alpn-server/src/main/config/modules/alpn-impl/alpn-12.mod +++ /dev/null @@ -1,4 +0,0 @@ -# DO NOT EDIT - See: https://www.eclipse.org/jetty/documentation/current/startup-modules.html - -[depend] -alpn-impl/alpn-11 diff --git a/jetty-alpn/jetty-alpn-server/src/main/config/modules/alpn-impl/alpn-13.mod b/jetty-alpn/jetty-alpn-server/src/main/config/modules/alpn-impl/alpn-13.mod deleted file mode 100644 index 4dbcf25f5839..000000000000 --- a/jetty-alpn/jetty-alpn-server/src/main/config/modules/alpn-impl/alpn-13.mod +++ /dev/null @@ -1,4 +0,0 @@ -# DO NOT EDIT - See: https://www.eclipse.org/jetty/documentation/current/startup-modules.html - -[depend] -alpn-impl/alpn-11 diff --git a/jetty-alpn/jetty-alpn-server/src/main/config/modules/alpn-impl/alpn-14.mod b/jetty-alpn/jetty-alpn-server/src/main/config/modules/alpn-impl/alpn-14.mod deleted file mode 100644 index 4dbcf25f5839..000000000000 --- a/jetty-alpn/jetty-alpn-server/src/main/config/modules/alpn-impl/alpn-14.mod +++ /dev/null @@ -1,4 +0,0 @@ -# DO NOT EDIT - See: https://www.eclipse.org/jetty/documentation/current/startup-modules.html - -[depend] -alpn-impl/alpn-11 diff --git a/jetty-alpn/jetty-alpn-server/src/main/config/modules/alpn-impl/alpn-15.mod b/jetty-alpn/jetty-alpn-server/src/main/config/modules/alpn-impl/alpn-15.mod deleted file mode 100644 index 4dbcf25f5839..000000000000 --- a/jetty-alpn/jetty-alpn-server/src/main/config/modules/alpn-impl/alpn-15.mod +++ /dev/null @@ -1,4 +0,0 @@ -# DO NOT EDIT - See: https://www.eclipse.org/jetty/documentation/current/startup-modules.html - -[depend] -alpn-impl/alpn-11 diff --git a/jetty-alpn/jetty-alpn-server/src/main/config/modules/alpn-impl/alpn-8.mod b/jetty-alpn/jetty-alpn-server/src/main/config/modules/alpn-impl/alpn-available-false.mod similarity index 100% rename from jetty-alpn/jetty-alpn-server/src/main/config/modules/alpn-impl/alpn-8.mod rename to jetty-alpn/jetty-alpn-server/src/main/config/modules/alpn-impl/alpn-available-false.mod diff --git a/jetty-alpn/jetty-alpn-server/src/main/config/modules/alpn-impl/alpn-9.mod b/jetty-alpn/jetty-alpn-server/src/main/config/modules/alpn-impl/alpn-available-true.mod similarity index 100% rename from jetty-alpn/jetty-alpn-server/src/main/config/modules/alpn-impl/alpn-9.mod rename to jetty-alpn/jetty-alpn-server/src/main/config/modules/alpn-impl/alpn-available-true.mod diff --git a/jetty-alpn/jetty-alpn-server/src/main/config/modules/alpn.mod b/jetty-alpn/jetty-alpn-server/src/main/config/modules/alpn.mod index dc765d13b021..bd99ae571c2a 100644 --- a/jetty-alpn/jetty-alpn-server/src/main/config/modules/alpn.mod +++ b/jetty-alpn/jetty-alpn-server/src/main/config/modules/alpn.mod @@ -5,7 +5,7 @@ Enables the ALPN (Application Layer Protocol Negotiation) TLS extension. [depend] ssl -alpn-impl +alpn-impl/alpn-available-${runtime.feature.alpn} [lib] lib/jetty-alpn-client-${jetty.version}.jar 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 ff9436297e12..f1040ec8b462 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 @@ -1505,10 +1505,14 @@ public void setProperty(String key, String value, String source) { JavaVersion ver = JavaVersion.parse(value); properties.setProperty("java.version.platform", Integer.toString(ver.getPlatform()), source); + // @deprecated - below will be removed in Jetty 10.x properties.setProperty("java.version.major", Integer.toString(ver.getMajor()), "Deprecated"); properties.setProperty("java.version.minor", Integer.toString(ver.getMinor()), "Deprecated"); properties.setProperty("java.version.micro", Integer.toString(ver.getMicro()), "Deprecated"); + + // ALPN feature exists + properties.setProperty("runtime.feature.alpn", Boolean.toString(isMethodAvailable(javax.net.ssl.SSLParameters.class, "getApplicationProtocols", null)), source); } catch (Throwable x) { @@ -1525,6 +1529,19 @@ public void setProperty(String key, String value, String source) } } + private boolean isMethodAvailable(Class clazz, String methodName, Class[] params) + { + try + { + clazz.getMethod(methodName, params); + return true; + } + catch (NoSuchMethodException e) + { + return false; + } + } + public void setRun(boolean run) { this.run = run; 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 c552d8385de8..25cad5adeb21 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 @@ -143,6 +143,7 @@ public static void assertConfiguration(BaseHome baseHome, StartArgs args, String "jetty.base.uri".equals(name) || "user.dir".equals(name) || prop.source.equals(Props.ORIGIN_SYSPROP) || + name.startsWith("runtime.feature.") || name.startsWith("java.")) { // strip these out from assertion, to make assertions easier. 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 eb5a51c487cc..a52769b0a793 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 @@ -225,8 +225,11 @@ public void testJettyHomeWithSpaces() throws Exception { Path distPath = MavenTestingUtils.getTestResourceDir("dist-home").toPath().toRealPath(); Path homePath = MavenTestingUtils.getTargetTestingPath().resolve("dist home with spaces"); - IO.copy(distPath.toFile(), homePath.toFile()); - Files.createFile(homePath.resolve("lib/a library.jar")); + if (!Files.exists(homePath)) + { + IO.copy(distPath.toFile(), homePath.toFile()); + Files.createFile(homePath.resolve("lib/a library.jar")); + } List cmdLineArgs = new ArrayList<>(); cmdLineArgs.add("user.dir=" + homePath);