From fab9764aad0e7e0eaf5cf8ba118462e6dccb2c2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Skalick=C3=BD?= Date: Wed, 25 Apr 2018 13:33:02 +0200 Subject: [PATCH] Remove org.eclipse.jetty.alpn dependency for jp_minimal --- 0004-Remove-jetty-ALPN.patch | 217 +++++++++++++++++++++++++++++++++++ netty.spec | 12 +- 2 files changed, 226 insertions(+), 3 deletions(-) create mode 100644 0004-Remove-jetty-ALPN.patch diff --git a/0004-Remove-jetty-ALPN.patch b/0004-Remove-jetty-ALPN.patch new file mode 100644 index 0000000..42b5415 --- /dev/null +++ b/0004-Remove-jetty-ALPN.patch @@ -0,0 +1,217 @@ +diff --git a/handler/pom.xml b/handler/pom.xml +index 69af32a..b9e5596 100644 +--- a/handler/pom.xml ++++ b/handler/pom.xml +@@ -54,11 +54,6 @@ + bcpkix-jdk15on + true + +- +- org.eclipse.jetty.alpn +- alpn-api +- true +- + + org.mockito + mockito-core +diff --git a/handler/src/main/java/io/netty/handler/ssl/JdkAlpnApplicationProtocolNegotiator.java b/handler/src/main/java/io/netty/handler/ssl/JdkAlpnApplicationProtocolNegotiator.java +index 9c4ab9e..5cc1ab7 100644 +--- a/handler/src/main/java/io/netty/handler/ssl/JdkAlpnApplicationProtocolNegotiator.java ++++ b/handler/src/main/java/io/netty/handler/ssl/JdkAlpnApplicationProtocolNegotiator.java +@@ -21,7 +21,7 @@ import javax.net.ssl.SSLEngine; + * The {@link JdkApplicationProtocolNegotiator} to use if you need ALPN and are using {@link SslProvider#JDK}. + */ + public final class JdkAlpnApplicationProtocolNegotiator extends JdkBaseApplicationProtocolNegotiator { +- private static final boolean AVAILABLE = JettyAlpnSslEngine.isAvailable(); ++ private static final boolean AVAILABLE = false; + private static final SslEngineWrapperFactory ALPN_WRAPPER = AVAILABLE ? new AlpnWrapper() : new FailureWrapper(); + + /** +@@ -121,10 +121,6 @@ public final class JdkAlpnApplicationProtocolNegotiator extends JdkBaseApplicati + @Override + public SSLEngine wrapSslEngine(SSLEngine engine, JdkApplicationProtocolNegotiator applicationNegotiator, + boolean isServer) { +- if (JettyAlpnSslEngine.isAvailable()) { +- return isServer ? JettyAlpnSslEngine.newServerEngine(engine, applicationNegotiator) +- : JettyAlpnSslEngine.newClientEngine(engine, applicationNegotiator); +- } + throw new RuntimeException("Unable to wrap SSLEngine of type " + engine.getClass().getName()); + } + } +diff --git a/handler/src/main/java/io/netty/handler/ssl/JettyAlpnSslEngine.java b/handler/src/main/java/io/netty/handler/ssl/JettyAlpnSslEngine.java +deleted file mode 100644 +index 624719a..0000000 +--- a/handler/src/main/java/io/netty/handler/ssl/JettyAlpnSslEngine.java ++++ /dev/null +@@ -1,158 +0,0 @@ +-/* +- * Copyright 2014 The Netty Project +- * +- * The Netty Project licenses this file to you under the Apache License, +- * version 2.0 (the "License"); you may not use this file except in compliance +- * with the License. You may obtain a copy of the License at: +- * +- * http://www.apache.org/licenses/LICENSE-2.0 +- * +- * Unless required by applicable law or agreed to in writing, software +- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +- * License for the specific language governing permissions and limitations +- * under the License. +- */ +-package io.netty.handler.ssl; +- +-import static io.netty.handler.ssl.SslUtils.toSSLHandshakeException; +-import static io.netty.util.internal.ObjectUtil.checkNotNull; +- +-import io.netty.handler.ssl.JdkApplicationProtocolNegotiator.ProtocolSelectionListener; +-import io.netty.handler.ssl.JdkApplicationProtocolNegotiator.ProtocolSelector; +- +-import java.util.LinkedHashSet; +-import java.util.List; +- +-import javax.net.ssl.SSLEngine; +-import javax.net.ssl.SSLException; +- +-import io.netty.util.internal.PlatformDependent; +-import org.eclipse.jetty.alpn.ALPN; +- +-abstract class JettyAlpnSslEngine extends JdkSslEngine { +- private static final boolean available = initAvailable(); +- +- static boolean isAvailable() { +- return available; +- } +- +- private static boolean initAvailable() { +- // TODO: Add support for ALPN when using Java9 and still be able to configure it the Netty way. +- if (PlatformDependent.javaVersion() <= 8) { +- try { +- // Always use bootstrap class loader. +- Class.forName("sun.security.ssl.ALPNExtension", true, null); +- return true; +- } catch (Throwable ignore) { +- // alpn-boot was not loaded. +- } +- } +- return false; +- } +- +- static JettyAlpnSslEngine newClientEngine(SSLEngine engine, +- JdkApplicationProtocolNegotiator applicationNegotiator) { +- return new ClientEngine(engine, applicationNegotiator); +- } +- +- static JettyAlpnSslEngine newServerEngine(SSLEngine engine, +- JdkApplicationProtocolNegotiator applicationNegotiator) { +- return new ServerEngine(engine, applicationNegotiator); +- } +- +- private JettyAlpnSslEngine(SSLEngine engine) { +- super(engine); +- } +- +- private static final class ClientEngine extends JettyAlpnSslEngine { +- ClientEngine(SSLEngine engine, final JdkApplicationProtocolNegotiator applicationNegotiator) { +- super(engine); +- checkNotNull(applicationNegotiator, "applicationNegotiator"); +- final ProtocolSelectionListener protocolListener = checkNotNull(applicationNegotiator +- .protocolListenerFactory().newListener(this, applicationNegotiator.protocols()), +- "protocolListener"); +- ALPN.put(engine, new ALPN.ClientProvider() { +- @Override +- public List protocols() { +- return applicationNegotiator.protocols(); +- } +- +- @Override +- public void selected(String protocol) throws SSLException { +- try { +- protocolListener.selected(protocol); +- } catch (Throwable t) { +- throw toSSLHandshakeException(t); +- } +- } +- +- @Override +- public void unsupported() { +- protocolListener.unsupported(); +- } +- }); +- } +- +- @Override +- public void closeInbound() throws SSLException { +- try { +- ALPN.remove(getWrappedEngine()); +- } finally { +- super.closeInbound(); +- } +- } +- +- @Override +- public void closeOutbound() { +- try { +- ALPN.remove(getWrappedEngine()); +- } finally { +- super.closeOutbound(); +- } +- } +- } +- +- private static final class ServerEngine extends JettyAlpnSslEngine { +- ServerEngine(SSLEngine engine, final JdkApplicationProtocolNegotiator applicationNegotiator) { +- super(engine); +- checkNotNull(applicationNegotiator, "applicationNegotiator"); +- final ProtocolSelector protocolSelector = checkNotNull(applicationNegotiator.protocolSelectorFactory() +- .newSelector(this, new LinkedHashSet(applicationNegotiator.protocols())), +- "protocolSelector"); +- ALPN.put(engine, new ALPN.ServerProvider() { +- @Override +- public String select(List protocols) throws SSLException { +- try { +- return protocolSelector.select(protocols); +- } catch (Throwable t) { +- throw toSSLHandshakeException(t); +- } +- } +- +- @Override +- public void unsupported() { +- protocolSelector.unsupported(); +- } +- }); +- } +- +- @Override +- public void closeInbound() throws SSLException { +- try { +- ALPN.remove(getWrappedEngine()); +- } finally { +- super.closeInbound(); +- } +- } +- +- @Override +- public void closeOutbound() { +- try { +- ALPN.remove(getWrappedEngine()); +- } finally { +- super.closeOutbound(); +- } +- } +- } +-} +diff --git a/handler/src/test/java/io/netty/handler/ssl/JdkSslEngineTest.java b/handler/src/test/java/io/netty/handler/ssl/JdkSslEngineTest.java +index e32fa0d..a8014e5 100644 +--- a/handler/src/test/java/io/netty/handler/ssl/JdkSslEngineTest.java ++++ b/handler/src/test/java/io/netty/handler/ssl/JdkSslEngineTest.java +@@ -62,7 +62,7 @@ public class JdkSslEngineTest extends SSLEngineTest { + ALPN_DEFAULT { + @Override + boolean isAvailable() { +- return JettyAlpnSslEngine.isAvailable(); ++ return false; + } + + @Override diff --git a/netty.spec b/netty.spec index 68bf17f..d5e4838 100644 --- a/netty.spec +++ b/netty.spec @@ -7,7 +7,7 @@ Name: netty Version: 4.1.13 -Release: 3%{?dist} +Release: 4%{?dist} Summary: An asynchronous event-driven network application framework and tools for Java License: ASL 2.0 URL: https://netty.io/ @@ -19,6 +19,7 @@ Source1: codegen.bash Patch0: 0001-Remove-OpenSSL-parts-depending-on-tcnative.patch Patch1: 0002-Remove-NPN.patch Patch2: 0003-Remove-conscrypt-ALPN.patch +Patch3: 0004-Remove-jetty-ALPN.patch BuildRequires: maven-local BuildRequires: mvn(ant-contrib:ant-contrib) @@ -33,7 +34,6 @@ BuildRequires: mvn(org.apache.maven.plugins:maven-dependency-plugin) BuildRequires: mvn(org.apache.maven.plugins:maven-remote-resources-plugin) BuildRequires: mvn(org.codehaus.mojo:build-helper-maven-plugin) BuildRequires: mvn(org.codehaus.mojo:exec-maven-plugin) -BuildRequires: mvn(org.eclipse.jetty.alpn:alpn-api) BuildRequires: mvn(org.fusesource.hawtjni:maven-hawtjni-plugin) BuildRequires: mvn(org.javassist:javassist) BuildRequires: mvn(org.jctools:jctools-core) @@ -48,6 +48,7 @@ BuildRequires: mvn(com.ning:compress-lzf) BuildRequires: mvn(net.jpountz.lz4:lz4) BuildRequires: mvn(org.bouncycastle:bcpkix-jdk15on) BuildRequires: mvn(org.jboss.marshalling:jboss-marshalling) +BuildRequires: mvn(org.eclipse.jetty.alpn:alpn-api) %endif %description @@ -76,6 +77,9 @@ Summary: API documentation for %{name} %patch0 -p1 %patch1 -p1 %patch2 -p1 +%if %{with jp_minimal} +%patch3 -p1 +%endif # Missing Mavenized rxtx %pom_disable_module "transport-rxtx" @@ -103,7 +107,6 @@ Summary: API documentation for %{name} ' %pom_remove_plugin :maven-antrun-plugin -# get-jetty-alpn-agent %pom_remove_plugin :maven-dependency-plugin # style checker %pom_remove_plugin :xml-maven-plugin @@ -188,6 +191,9 @@ export CFLAGS="$RPM_OPT_FLAGS" LDFLAGS="$RPM_LD_FLAGS" %doc LICENSE.txt NOTICE.txt %changelog +* Tue Apr 24 2018 mskalick@redhat.com - 4.1.13-4 +- Remove org.eclipse.jetty.alpn dependency for jp_minimal + * Tue Apr 24 2018 Michael Simacek - 4.1.13-3 - Don't package test artifacts