From cb6b51eed1faef580120e19aa1b5404c19a9398b Mon Sep 17 00:00:00 2001 From: Mat Booth Date: Mon, 7 Sep 2020 13:26:20 +0100 Subject: [PATCH 3/5] Remove optional deps jetty alpn and npn --- handler/pom.xml | 10 -- .../JdkAlpnApplicationProtocolNegotiator.java | 7 +- .../JdkNpnApplicationProtocolNegotiator.java | 10 +- .../netty/handler/ssl/JettyAlpnSslEngine.java | 157 ------------------ .../netty/handler/ssl/JettyNpnSslEngine.java | 122 -------------- pom.xml | 14 -- 6 files changed, 3 insertions(+), 317 deletions(-) delete mode 100644 handler/src/main/java/io/netty/handler/ssl/JettyAlpnSslEngine.java delete mode 100644 handler/src/main/java/io/netty/handler/ssl/JettyNpnSslEngine.java diff --git a/handler/pom.xml b/handler/pom.xml index 378aeda2fe..be8206dc89 100644 --- a/handler/pom.xml +++ b/handler/pom.xml @@ -71,16 +71,6 @@ bcpkix-jdk15on true - - org.eclipse.jetty.npn - npn-api - 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 2ed83a313b..dbd5ed9f07 100644 --- a/handler/src/main/java/io/netty/handler/ssl/JdkAlpnApplicationProtocolNegotiator.java +++ b/handler/src/main/java/io/netty/handler/ssl/JdkAlpnApplicationProtocolNegotiator.java @@ -26,8 +26,7 @@ import javax.net.ssl.SSLEngine; */ @Deprecated public final class JdkAlpnApplicationProtocolNegotiator extends JdkBaseApplicationProtocolNegotiator { - private static final boolean AVAILABLE = JdkAlpnSslUtils.supportsAlpn() || - JettyAlpnSslEngine.isAvailable(); + private static final boolean AVAILABLE = JdkAlpnSslUtils.supportsAlpn(); private static final SslEngineWrapperFactory ALPN_WRAPPER = AVAILABLE ? new AlpnWrapper() : new FailureWrapper(); @@ -134,10 +133,6 @@ public final class JdkAlpnApplicationProtocolNegotiator extends JdkBaseApplicati if (JdkAlpnSslUtils.supportsAlpn()) { return new JdkAlpnSslEngine(engine, applicationNegotiator, isServer); } - if (JettyAlpnSslEngine.isAvailable()) { - return isServer ? JettyAlpnSslEngine.newServerEngine(engine, applicationNegotiator) - : JettyAlpnSslEngine.newClientEngine(engine, applicationNegotiator); - } throw new UnsupportedOperationException("ALPN not supported. Unable to wrap SSLEngine of type '" + engine.getClass().getName() + "')"); } diff --git a/handler/src/main/java/io/netty/handler/ssl/JdkNpnApplicationProtocolNegotiator.java b/handler/src/main/java/io/netty/handler/ssl/JdkNpnApplicationProtocolNegotiator.java index 3c2863b66c..2703336e8b 100644 --- a/handler/src/main/java/io/netty/handler/ssl/JdkNpnApplicationProtocolNegotiator.java +++ b/handler/src/main/java/io/netty/handler/ssl/JdkNpnApplicationProtocolNegotiator.java @@ -25,17 +25,11 @@ import javax.net.ssl.SSLEngine; @Deprecated public final class JdkNpnApplicationProtocolNegotiator extends JdkBaseApplicationProtocolNegotiator { private static final SslEngineWrapperFactory NPN_WRAPPER = new SslEngineWrapperFactory() { - { - if (!JettyNpnSslEngine.isAvailable()) { - throw new RuntimeException("NPN unsupported. Is your classpath configured correctly?" - + " See https://wiki.eclipse.org/Jetty/Feature/NPN"); - } - } - @Override public SSLEngine wrapSslEngine(SSLEngine engine, JdkApplicationProtocolNegotiator applicationNegotiator, boolean isServer) { - return new JettyNpnSslEngine(engine, applicationNegotiator, isServer); + throw new UnsupportedOperationException("NPN not supported. 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 ce9f14a57e..0000000000 --- a/handler/src/main/java/io/netty/handler/ssl/JettyAlpnSslEngine.java +++ /dev/null @@ -1,157 +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() { - 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/main/java/io/netty/handler/ssl/JettyNpnSslEngine.java b/handler/src/main/java/io/netty/handler/ssl/JettyNpnSslEngine.java deleted file mode 100644 index 77e7366e53..0000000000 --- a/handler/src/main/java/io/netty/handler/ssl/JettyNpnSslEngine.java +++ /dev/null @@ -1,122 +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.util.internal.ObjectUtil.checkNotNull; -import io.netty.handler.ssl.JdkApplicationProtocolNegotiator.ProtocolSelectionListener; -import io.netty.handler.ssl.JdkApplicationProtocolNegotiator.ProtocolSelector; -import io.netty.util.internal.PlatformDependent; - -import java.util.LinkedHashSet; -import java.util.List; - -import javax.net.ssl.SSLEngine; -import javax.net.ssl.SSLException; - -import org.eclipse.jetty.npn.NextProtoNego; -import org.eclipse.jetty.npn.NextProtoNego.ClientProvider; -import org.eclipse.jetty.npn.NextProtoNego.ServerProvider; - -final class JettyNpnSslEngine extends JdkSslEngine { - private static boolean available; - - static boolean isAvailable() { - updateAvailability(); - return available; - } - - private static void updateAvailability() { - if (available) { - return; - } - try { - // Always use bootstrap class loader. - Class.forName("sun.security.ssl.NextProtoNegoExtension", true, null); - available = true; - } catch (Exception ignore) { - // npn-boot was not loaded. - } - } - - JettyNpnSslEngine(SSLEngine engine, final JdkApplicationProtocolNegotiator applicationNegotiator, boolean server) { - super(engine); - checkNotNull(applicationNegotiator, "applicationNegotiator"); - - if (server) { - final ProtocolSelectionListener protocolListener = checkNotNull(applicationNegotiator - .protocolListenerFactory().newListener(this, applicationNegotiator.protocols()), - "protocolListener"); - NextProtoNego.put(engine, new ServerProvider() { - @Override - public void unsupported() { - protocolListener.unsupported(); - } - - @Override - public List protocols() { - return applicationNegotiator.protocols(); - } - - @Override - public void protocolSelected(String protocol) { - try { - protocolListener.selected(protocol); - } catch (Throwable t) { - PlatformDependent.throwException(t); - } - } - }); - } else { - final ProtocolSelector protocolSelector = checkNotNull(applicationNegotiator.protocolSelectorFactory() - .newSelector(this, new LinkedHashSet(applicationNegotiator.protocols())), - "protocolSelector"); - NextProtoNego.put(engine, new ClientProvider() { - @Override - public boolean supports() { - return true; - } - - @Override - public void unsupported() { - protocolSelector.unsupported(); - } - - @Override - public String selectProtocol(List protocols) { - try { - return protocolSelector.select(protocols); - } catch (Throwable t) { - PlatformDependent.throwException(t); - return null; - } - } - }); - } - } - - @Override - public void closeInbound() throws SSLException { - NextProtoNego.remove(getWrappedEngine()); - super.closeInbound(); - } - - @Override - public void closeOutbound() { - NextProtoNego.remove(getWrappedEngine()); - super.closeOutbound(); - } -} diff --git a/pom.xml b/pom.xml index db3d7b0d38..bedd6d6903 100644 --- a/pom.xml +++ b/pom.xml @@ -453,20 +453,6 @@ true - - - org.eclipse.jetty.npn - npn-api - 1.1.1.v20141010 - provided - - - org.eclipse.jetty.alpn - alpn-api - 1.1.2.v20150522 - provided - - com.google.protobuf -- 2.26.2