This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 9f189ef  CAMEL-16677: Move vertx SSL setup to vertx-common
9f189ef is described below

commit 9f189ef34067097b40c2f5ba16192485b9ab96dd
Author: James Netherton <jamesnether...@gmail.com>
AuthorDate: Wed Jun 2 07:44:08 2021 +0100

    CAMEL-16677: Move vertx SSL setup to vertx-common
---
 .../http/vertx/VertxPlatformHttpServer.java        |   4 +-
 .../http/vertx/VertxPlatformHttpServerSupport.java | 138 +-------------------
 .../vertx/common/KeyManagerFactoryOptions.java     |  53 ++++++++
 .../vertx/common/TrustManagerFactoryOptions.java   |  52 ++++++++
 .../camel/component/vertx/common/VertxHelper.java  | 129 +++++++++++++++++++
 .../component/vertx/http/VertxHttpEndpoint.java    |   3 +-
 .../component/vertx/http/VertxHttpHelper.java      |  90 -------------
 .../camel-vertx/camel-vertx-websocket/pom.xml      |   4 +
 .../vertx/websocket/VertxWebsocketComponent.java   |   4 +-
 .../vertx/websocket/VertxWebsocketEndpoint.java    |   5 +-
 .../vertx/websocket/VertxWebsocketHelper.java      | 141 ---------------------
 .../vertx/websocket/VertxWebsocketHost.java        |   9 +-
 .../vertx/websocket/VertxWebSocketTestSupport.java |   2 +-
 .../VertxWebsocketExternalServerTest.java          |   2 +-
 .../vertx/websocket/VertxWebsocketTest.java        |   2 +-
 15 files changed, 259 insertions(+), 379 deletions(-)

diff --git 
a/components/camel-platform-http-vertx/src/main/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpServer.java
 
b/components/camel-platform-http-vertx/src/main/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpServer.java
index 8462ba5..73caa30 100644
--- 
a/components/camel-platform-http-vertx/src/main/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpServer.java
+++ 
b/components/camel-platform-http-vertx/src/main/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpServer.java
@@ -16,8 +16,6 @@
  */
 package org.apache.camel.component.platform.http.vertx;
 
-import java.io.IOException;
-import java.security.GeneralSecurityException;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ExecutorService;
@@ -161,7 +159,7 @@ public class VertxPlatformHttpServer extends ServiceSupport 
implements CamelCont
                 });
     }
 
-    protected void startServer() throws GeneralSecurityException, IOException {
+    protected void startServer() throws Exception {
         HttpServerOptions options = new HttpServerOptions();
 
         configureSSL(options, configuration, context);
diff --git 
a/components/camel-platform-http-vertx/src/main/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpServerSupport.java
 
b/components/camel-platform-http-vertx/src/main/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpServerSupport.java
index c7336f1..5f8fb5b 100644
--- 
a/components/camel-platform-http-vertx/src/main/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpServerSupport.java
+++ 
b/components/camel-platform-http-vertx/src/main/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpServerSupport.java
@@ -16,36 +16,23 @@
  */
 package org.apache.camel.component.platform.http.vertx;
 
-import java.io.IOException;
-import java.security.GeneralSecurityException;
-import java.security.KeyStore;
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.Set;
-import java.util.function.Function;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
-import javax.net.ssl.KeyManagerFactory;
-import javax.net.ssl.TrustManager;
-import javax.net.ssl.TrustManagerFactory;
-import javax.net.ssl.X509KeyManager;
-
 import io.vertx.core.Handler;
-import io.vertx.core.Vertx;
 import io.vertx.core.http.HttpHeaders;
 import io.vertx.core.http.HttpMethod;
 import io.vertx.core.http.HttpServerOptions;
 import io.vertx.core.http.HttpServerRequest;
 import io.vertx.core.http.HttpServerResponse;
-import io.vertx.core.net.KeyCertOptions;
-import io.vertx.core.net.TrustOptions;
 import io.vertx.ext.web.RoutingContext;
 import io.vertx.ext.web.handler.BodyHandler;
 import org.apache.camel.CamelContext;
-import org.apache.camel.support.jsse.KeyManagersParameters;
+import org.apache.camel.component.vertx.common.VertxHelper;
 import org.apache.camel.support.jsse.SSLContextParameters;
-import org.apache.camel.support.jsse.TrustManagersParameters;
 import org.apache.camel.util.ObjectHelper;
 
 public final class VertxPlatformHttpServerSupport {
@@ -169,134 +156,15 @@ public final class VertxPlatformHttpServerSupport {
 
     static HttpServerOptions configureSSL(
             HttpServerOptions options, VertxPlatformHttpServerConfiguration 
configuration, CamelContext camelContext)
-            throws GeneralSecurityException, IOException {
+            throws Exception {
         final SSLContextParameters sslParameters = 
configuration.getSslContextParameters() != null
                 ? configuration.getSslContextParameters()
                 : configuration.isUseGlobalSslContextParameters() ? 
camelContext.getSSLContextParameters() : null;
 
         if (sslParameters != null) {
-            options.setSsl(true);
-            options.setKeyCertOptions(new 
KeyManagerFactoryOptions(createKeyManagerFactory(camelContext, sslParameters)));
-            options.setTrustOptions(new 
TrustManagerFactoryOptions(createTrustManagerFactory(camelContext, 
sslParameters)));
+            VertxHelper.setupSSLOptions(camelContext, sslParameters, options);
         }
 
         return options;
     }
-
-    private static class KeyManagerFactoryOptions implements KeyCertOptions {
-        private final KeyManagerFactory keyManagerFactory;
-
-        public KeyManagerFactoryOptions(KeyManagerFactory keyManagerFactory) {
-            this.keyManagerFactory = keyManagerFactory;
-        }
-
-        private KeyManagerFactoryOptions(KeyManagerFactoryOptions other) {
-            this.keyManagerFactory = other.keyManagerFactory;
-        }
-
-        @Override
-        public KeyCertOptions copy() {
-            return new KeyManagerFactoryOptions(this);
-        }
-
-        @Override
-        public KeyManagerFactory getKeyManagerFactory(Vertx vertx) {
-            return keyManagerFactory;
-        }
-
-        @Override
-        public Function<String, X509KeyManager> keyManagerMapper(Vertx vertx) {
-            return keyManagerFactory.getKeyManagers()[0] instanceof 
X509KeyManager
-                    ? serverName -> (X509KeyManager) 
keyManagerFactory.getKeyManagers()[0] : null;
-        }
-    }
-
-    private static class TrustManagerFactoryOptions implements TrustOptions {
-        private final TrustManagerFactory trustManagerFactory;
-
-        public TrustManagerFactoryOptions(TrustManagerFactory 
trustManagerFactory) {
-            this.trustManagerFactory = trustManagerFactory;
-        }
-
-        private TrustManagerFactoryOptions(TrustManagerFactoryOptions other) {
-            trustManagerFactory = other.trustManagerFactory;
-        }
-
-        @Override
-        public TrustOptions copy() {
-            return new TrustManagerFactoryOptions(this);
-        }
-
-        @Override
-        public TrustManagerFactory getTrustManagerFactory(Vertx vertx) {
-            return trustManagerFactory;
-        }
-
-        @Override
-        public Function<String, TrustManager[]> trustManagerMapper(Vertx 
vertx) {
-            return serverName -> trustManagerFactory.getTrustManagers();
-        }
-    }
-
-    private static KeyManagerFactory createKeyManagerFactory(
-            CamelContext camelContext, SSLContextParameters 
sslContextParameters)
-            throws GeneralSecurityException, IOException {
-        final KeyManagersParameters keyManagers = 
sslContextParameters.getKeyManagers();
-        if (keyManagers == null) {
-            return null;
-        }
-
-        String kmfAlgorithm = 
camelContext.resolvePropertyPlaceholders(keyManagers.getAlgorithm());
-        if (kmfAlgorithm == null) {
-            kmfAlgorithm = KeyManagerFactory.getDefaultAlgorithm();
-        }
-
-        KeyManagerFactory kmf;
-        if (keyManagers.getProvider() == null) {
-            kmf = KeyManagerFactory.getInstance(kmfAlgorithm);
-        } else {
-            kmf = KeyManagerFactory.getInstance(kmfAlgorithm,
-                    
camelContext.resolvePropertyPlaceholders(keyManagers.getProvider()));
-        }
-
-        char[] kmfPassword = null;
-        if (keyManagers.getKeyPassword() != null) {
-            kmfPassword = 
camelContext.resolvePropertyPlaceholders(keyManagers.getKeyPassword()).toCharArray();
-        }
-
-        KeyStore ks = keyManagers.getKeyStore() == null ? null : 
keyManagers.getKeyStore().createKeyStore();
-
-        kmf.init(ks, kmfPassword);
-        return kmf;
-    }
-
-    private static TrustManagerFactory createTrustManagerFactory(
-            CamelContext camelContext, SSLContextParameters 
sslContextParameters)
-            throws GeneralSecurityException, IOException {
-        final TrustManagersParameters trustManagers = 
sslContextParameters.getTrustManagers();
-        if (trustManagers == null) {
-            return null;
-        }
-
-        TrustManagerFactory tmf = null;
-
-        if (trustManagers.getKeyStore() != null) {
-            String tmfAlgorithm = 
camelContext.resolvePropertyPlaceholders(trustManagers.getAlgorithm());
-            if (tmfAlgorithm == null) {
-                tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
-            }
-
-            if (trustManagers.getProvider() == null) {
-                tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
-            } else {
-                tmf = TrustManagerFactory.getInstance(tmfAlgorithm,
-                        
camelContext.resolvePropertyPlaceholders(trustManagers.getProvider()));
-            }
-
-            KeyStore ks = trustManagers.getKeyStore() == null ? null : 
trustManagers.getKeyStore().createKeyStore();
-            tmf.init(ks);
-        }
-
-        return tmf;
-    }
 }
diff --git 
a/components/camel-vertx/camel-vertx-common/src/main/java/org/apache/camel/component/vertx/common/KeyManagerFactoryOptions.java
 
b/components/camel-vertx/camel-vertx-common/src/main/java/org/apache/camel/component/vertx/common/KeyManagerFactoryOptions.java
new file mode 100644
index 0000000..170bced
--- /dev/null
+++ 
b/components/camel-vertx/camel-vertx-common/src/main/java/org/apache/camel/component/vertx/common/KeyManagerFactoryOptions.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF 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 org.apache.camel.component.vertx.common;
+
+import java.util.function.Function;
+
+import javax.net.ssl.KeyManagerFactory;
+import javax.net.ssl.X509KeyManager;
+
+import io.vertx.core.Vertx;
+import io.vertx.core.net.KeyCertOptions;
+
+public class KeyManagerFactoryOptions implements KeyCertOptions {
+    private final KeyManagerFactory keyManagerFactory;
+
+    public KeyManagerFactoryOptions(KeyManagerFactory keyManagerFactory) {
+        this.keyManagerFactory = keyManagerFactory;
+    }
+
+    private KeyManagerFactoryOptions(KeyManagerFactoryOptions other) {
+        this.keyManagerFactory = other.keyManagerFactory;
+    }
+
+    @Override
+    public KeyCertOptions copy() {
+        return new KeyManagerFactoryOptions(this);
+    }
+
+    @Override
+    public KeyManagerFactory getKeyManagerFactory(Vertx vertx) {
+        return keyManagerFactory;
+    }
+
+    @Override
+    public Function<String, X509KeyManager> keyManagerMapper(Vertx vertx) {
+        return keyManagerFactory.getKeyManagers()[0] instanceof X509KeyManager
+                ? serverName -> (X509KeyManager) 
keyManagerFactory.getKeyManagers()[0] : null;
+    }
+}
diff --git 
a/components/camel-vertx/camel-vertx-common/src/main/java/org/apache/camel/component/vertx/common/TrustManagerFactoryOptions.java
 
b/components/camel-vertx/camel-vertx-common/src/main/java/org/apache/camel/component/vertx/common/TrustManagerFactoryOptions.java
new file mode 100644
index 0000000..cedd626
--- /dev/null
+++ 
b/components/camel-vertx/camel-vertx-common/src/main/java/org/apache/camel/component/vertx/common/TrustManagerFactoryOptions.java
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF 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 org.apache.camel.component.vertx.common;
+
+import java.util.function.Function;
+
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.TrustManagerFactory;
+
+import io.vertx.core.Vertx;
+import io.vertx.core.net.TrustOptions;
+
+public class TrustManagerFactoryOptions implements TrustOptions {
+    private final TrustManagerFactory trustManagerFactory;
+
+    public TrustManagerFactoryOptions(TrustManagerFactory trustManagerFactory) 
{
+        this.trustManagerFactory = trustManagerFactory;
+    }
+
+    private TrustManagerFactoryOptions(TrustManagerFactoryOptions other) {
+        trustManagerFactory = other.trustManagerFactory;
+    }
+
+    @Override
+    public TrustOptions copy() {
+        return new TrustManagerFactoryOptions(this);
+    }
+
+    @Override
+    public TrustManagerFactory getTrustManagerFactory(Vertx vertx) {
+        return trustManagerFactory;
+    }
+
+    @Override
+    public Function<String, TrustManager[]> trustManagerMapper(Vertx vertx) {
+        return serverName -> trustManagerFactory.getTrustManagers();
+    }
+}
diff --git 
a/components/camel-vertx/camel-vertx-common/src/main/java/org/apache/camel/component/vertx/common/VertxHelper.java
 
b/components/camel-vertx/camel-vertx-common/src/main/java/org/apache/camel/component/vertx/common/VertxHelper.java
new file mode 100644
index 0000000..edf4e1c
--- /dev/null
+++ 
b/components/camel-vertx/camel-vertx-common/src/main/java/org/apache/camel/component/vertx/common/VertxHelper.java
@@ -0,0 +1,129 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF 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 org.apache.camel.component.vertx.common;
+
+import java.security.KeyStore;
+
+import javax.net.ssl.KeyManagerFactory;
+import javax.net.ssl.TrustManagerFactory;
+
+import io.vertx.core.net.TCPSSLOptions;
+import org.apache.camel.CamelContext;
+import org.apache.camel.support.jsse.KeyManagersParameters;
+import org.apache.camel.support.jsse.SSLContextParameters;
+import org.apache.camel.support.jsse.TrustManagersParameters;
+
+public final class VertxHelper {
+
+    private VertxHelper() {
+        // Utility class
+    }
+
+    /**
+     * Configures key store and trust store options for the given 
TCPSSLOptions from the configuration specified on
+     * SSLContextParameters
+     *
+     * @param camelContext         the CamelContext
+     * @param sslContextParameters the SSL configuration to use for the 
KeyManagerFactory & TrustManagerFactory
+     * @param tcpsslOptions        the TCPSSLOptions instance to configure
+     */
+    public static void setupSSLOptions(
+            CamelContext camelContext, SSLContextParameters 
sslContextParameters, TCPSSLOptions tcpsslOptions)
+            throws Exception {
+
+        if (camelContext == null) {
+            throw new IllegalArgumentException("camelContext cannot be null");
+        }
+
+        if (sslContextParameters == null) {
+            throw new IllegalArgumentException("sslContextParameters cannot be 
null");
+        }
+
+        if (tcpsslOptions == null) {
+            throw new IllegalArgumentException("tcpsslOptions cannot be null");
+        }
+
+        tcpsslOptions.setSsl(true);
+
+        KeyManagerFactory keyManagerFactory = 
createKeyManagerFactory(camelContext, sslContextParameters);
+        tcpsslOptions.setKeyCertOptions(new 
KeyManagerFactoryOptions(keyManagerFactory));
+
+        TrustManagerFactory trustManagerFactory = 
createTrustManagerFactory(camelContext, sslContextParameters);
+        tcpsslOptions.setTrustOptions(new 
TrustManagerFactoryOptions(trustManagerFactory));
+    }
+
+    private static KeyManagerFactory createKeyManagerFactory(
+            CamelContext camelContext, SSLContextParameters 
sslContextParameters)
+            throws Exception {
+        final KeyManagersParameters keyManagers = 
sslContextParameters.getKeyManagers();
+        if (keyManagers == null) {
+            return null;
+        }
+
+        String kmfAlgorithm = 
camelContext.resolvePropertyPlaceholders(keyManagers.getAlgorithm());
+        if (kmfAlgorithm == null) {
+            kmfAlgorithm = KeyManagerFactory.getDefaultAlgorithm();
+        }
+
+        KeyManagerFactory kmf;
+        if (keyManagers.getProvider() == null) {
+            kmf = KeyManagerFactory.getInstance(kmfAlgorithm);
+        } else {
+            kmf = KeyManagerFactory.getInstance(kmfAlgorithm,
+                    
camelContext.resolvePropertyPlaceholders(keyManagers.getProvider()));
+        }
+
+        char[] kmfPassword = null;
+        if (keyManagers.getKeyPassword() != null) {
+            kmfPassword = 
camelContext.resolvePropertyPlaceholders(keyManagers.getKeyPassword()).toCharArray();
+        }
+
+        KeyStore ks = keyManagers.getKeyStore() == null ? null : 
keyManagers.getKeyStore().createKeyStore();
+
+        kmf.init(ks, kmfPassword);
+        return kmf;
+    }
+
+    private static TrustManagerFactory createTrustManagerFactory(
+            CamelContext camelContext, SSLContextParameters 
sslContextParameters)
+            throws Exception {
+        final TrustManagersParameters trustManagers = 
sslContextParameters.getTrustManagers();
+        if (trustManagers == null) {
+            return null;
+        }
+
+        TrustManagerFactory tmf = null;
+
+        if (trustManagers.getKeyStore() != null) {
+            String tmfAlgorithm = 
camelContext.resolvePropertyPlaceholders(trustManagers.getAlgorithm());
+            if (tmfAlgorithm == null) {
+                tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
+            }
+
+            if (trustManagers.getProvider() == null) {
+                tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
+            } else {
+                tmf = TrustManagerFactory.getInstance(tmfAlgorithm,
+                        
camelContext.resolvePropertyPlaceholders(trustManagers.getProvider()));
+            }
+
+            KeyStore ks = trustManagers.getKeyStore() == null ? null : 
trustManagers.getKeyStore().createKeyStore();
+            tmf.init(ks);
+        }
+        return tmf;
+    }
+}
diff --git 
a/components/camel-vertx/camel-vertx-http/src/main/java/org/apache/camel/component/vertx/http/VertxHttpEndpoint.java
 
b/components/camel-vertx/camel-vertx-http/src/main/java/org/apache/camel/component/vertx/http/VertxHttpEndpoint.java
index 5c49105..76b98da 100644
--- 
a/components/camel-vertx/camel-vertx-http/src/main/java/org/apache/camel/component/vertx/http/VertxHttpEndpoint.java
+++ 
b/components/camel-vertx/camel-vertx-http/src/main/java/org/apache/camel/component/vertx/http/VertxHttpEndpoint.java
@@ -26,6 +26,7 @@ import org.apache.camel.Category;
 import org.apache.camel.Consumer;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
+import org.apache.camel.component.vertx.common.VertxHelper;
 import org.apache.camel.http.base.HttpHelper;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
@@ -88,7 +89,7 @@ public class VertxHttpEndpoint extends DefaultEndpoint {
 
             SSLContextParameters sslContextParameters = 
configuration.getSslContextParameters();
             if (sslContextParameters != null) {
-                VertxHttpHelper.setupSSLOptions(sslContextParameters, options);
+                VertxHelper.setupSSLOptions(getCamelContext(), 
sslContextParameters, options);
             }
 
             webClient = WebClient.create(getVertx(), options);
diff --git 
a/components/camel-vertx/camel-vertx-http/src/main/java/org/apache/camel/component/vertx/http/VertxHttpHelper.java
 
b/components/camel-vertx/camel-vertx-http/src/main/java/org/apache/camel/component/vertx/http/VertxHttpHelper.java
index 63aedb7..a691f64 100644
--- 
a/components/camel-vertx/camel-vertx-http/src/main/java/org/apache/camel/component/vertx/http/VertxHttpHelper.java
+++ 
b/components/camel-vertx/camel-vertx-http/src/main/java/org/apache/camel/component/vertx/http/VertxHttpHelper.java
@@ -23,21 +23,11 @@ import java.io.ObjectOutputStream;
 import java.io.OutputStream;
 import java.net.URI;
 import java.net.URISyntaxException;
-import java.security.KeyStore;
 
-import javax.net.ssl.KeyManagerFactory;
-import javax.net.ssl.TrustManagerFactory;
-
-import io.vertx.core.Vertx;
-import io.vertx.core.net.KeyStoreOptions;
-import io.vertx.core.net.TCPSSLOptions;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePropertyKey;
 import org.apache.camel.Message;
 import org.apache.camel.http.base.HttpHelper;
-import org.apache.camel.support.jsse.KeyManagersParameters;
-import org.apache.camel.support.jsse.SSLContextParameters;
-import org.apache.camel.support.jsse.TrustManagersParameters;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.UnsafeUriCharactersEncoder;
@@ -49,25 +39,6 @@ public final class VertxHttpHelper {
     }
 
     /**
-     * Configures key store and trust store options for the Vert.x client and 
server
-     */
-    public static void setupSSLOptions(SSLContextParameters 
sslContextParameters, TCPSSLOptions options) {
-        options.setSsl(true);
-        options.setKeyCertOptions(new KeyStoreOptions() {
-            @Override
-            public KeyManagerFactory getKeyManagerFactory(Vertx vertx) throws 
Exception {
-                return createKeyManagerFactory(sslContextParameters);
-            }
-        });
-        options.setTrustOptions(new KeyStoreOptions() {
-            @Override
-            public TrustManagerFactory getTrustManagerFactory(Vertx vertx) 
throws Exception {
-                return createTrustManagerFactory(sslContextParameters);
-            }
-        });
-    }
-
-    /**
      * Resolves a HTTP URI query string from the given exchange message headers
      */
     public static String resolveQueryString(Exchange exchange) throws 
URISyntaxException {
@@ -175,65 +146,4 @@ public final class VertxHttpHelper {
         }
         return charset;
     }
-
-    /**
-     * Creates a KeyManagerFactory from a given SSLContextParameters
-     */
-    private static KeyManagerFactory 
createKeyManagerFactory(SSLContextParameters sslContextParameters) throws 
Exception {
-        final KeyManagersParameters keyManagers = 
sslContextParameters.getKeyManagers();
-        if (keyManagers == null) {
-            return null;
-        }
-
-        String kmfAlgorithm = keyManagers.getAlgorithm();
-        if (kmfAlgorithm == null) {
-            kmfAlgorithm = KeyManagerFactory.getDefaultAlgorithm();
-        }
-
-        KeyManagerFactory kmf;
-        if (keyManagers.getProvider() == null) {
-            kmf = KeyManagerFactory.getInstance(kmfAlgorithm);
-        } else {
-            kmf = KeyManagerFactory.getInstance(kmfAlgorithm, 
keyManagers.getProvider());
-        }
-
-        char[] kmfPassword = null;
-        if (keyManagers.getKeyPassword() != null) {
-            kmfPassword = keyManagers.getKeyPassword().toCharArray();
-        }
-
-        KeyStore ks = keyManagers.getKeyStore() == null ? null : 
keyManagers.getKeyStore().createKeyStore();
-
-        kmf.init(ks, kmfPassword);
-        return kmf;
-    }
-
-    /**
-     * Creates a TrustManagerFactory from a given SSLContextParameters
-     */
-    private static TrustManagerFactory 
createTrustManagerFactory(SSLContextParameters sslContextParameters) throws 
Exception {
-        final TrustManagersParameters trustManagers = 
sslContextParameters.getTrustManagers();
-        if (trustManagers == null) {
-            return null;
-        }
-
-        TrustManagerFactory tmf = null;
-
-        if (trustManagers.getKeyStore() != null) {
-            String tmfAlgorithm = trustManagers.getAlgorithm();
-            if (tmfAlgorithm == null) {
-                tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
-            }
-
-            if (trustManagers.getProvider() == null) {
-                tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
-            } else {
-                tmf = TrustManagerFactory.getInstance(tmfAlgorithm, 
trustManagers.getProvider());
-            }
-
-            KeyStore ks = trustManagers.getKeyStore() == null ? null : 
trustManagers.getKeyStore().createKeyStore();
-            tmf.init(ks);
-        }
-        return tmf;
-    }
 }
diff --git a/components/camel-vertx/camel-vertx-websocket/pom.xml 
b/components/camel-vertx/camel-vertx-websocket/pom.xml
index a3d7e1b..e5bcf5f 100644
--- a/components/camel-vertx/camel-vertx-websocket/pom.xml
+++ b/components/camel-vertx/camel-vertx-websocket/pom.xml
@@ -40,6 +40,10 @@
             <artifactId>camel-support</artifactId>
         </dependency>
         <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-vertx-common</artifactId>
+        </dependency>
+        <dependency>
             <groupId>io.vertx</groupId>
             <artifactId>vertx-web</artifactId>
             <version>${vertx-version}</version>
diff --git 
a/components/camel-vertx/camel-vertx-websocket/src/main/java/org/apache/camel/component/vertx/websocket/VertxWebsocketComponent.java
 
b/components/camel-vertx/camel-vertx-websocket/src/main/java/org/apache/camel/component/vertx/websocket/VertxWebsocketComponent.java
index 0561d8e..a25e819 100644
--- 
a/components/camel-vertx/camel-vertx-websocket/src/main/java/org/apache/camel/component/vertx/websocket/VertxWebsocketComponent.java
+++ 
b/components/camel-vertx/camel-vertx-websocket/src/main/java/org/apache/camel/component/vertx/websocket/VertxWebsocketComponent.java
@@ -195,12 +195,12 @@ public class VertxWebsocketComponent extends 
DefaultComponent implements SSLCont
         this.useGlobalSslContextParameters = useGlobalSslContextParameters;
     }
 
-    protected Map<VertxWebsocketHostKey, VertxWebsocketHost> 
getVerxHostRegistry() {
+    protected Map<VertxWebsocketHostKey, VertxWebsocketHost> 
getVertxHostRegistry() {
         return this.vertxHostRegistry;
     }
 
     protected VertxWebsocketHost createVertxWebsocketHost(
             VertxWebsocketHostConfiguration hostConfiguration, 
VertxWebsocketHostKey hostKey) {
-        return new VertxWebsocketHost(hostConfiguration, hostKey);
+        return new VertxWebsocketHost(getCamelContext(), hostConfiguration, 
hostKey);
     }
 }
diff --git 
a/components/camel-vertx/camel-vertx-websocket/src/main/java/org/apache/camel/component/vertx/websocket/VertxWebsocketEndpoint.java
 
b/components/camel-vertx/camel-vertx-websocket/src/main/java/org/apache/camel/component/vertx/websocket/VertxWebsocketEndpoint.java
index 9d59a1d..c414395 100644
--- 
a/components/camel-vertx/camel-vertx-websocket/src/main/java/org/apache/camel/component/vertx/websocket/VertxWebsocketEndpoint.java
+++ 
b/components/camel-vertx/camel-vertx-websocket/src/main/java/org/apache/camel/component/vertx/websocket/VertxWebsocketEndpoint.java
@@ -32,6 +32,7 @@ import org.apache.camel.Consumer;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
+import org.apache.camel.component.vertx.common.VertxHelper;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.support.DefaultEndpoint;
@@ -101,7 +102,7 @@ public class VertxWebsocketEndpoint extends DefaultEndpoint 
{
 
             SSLContextParameters sslContextParameters = 
configuration.getSslContextParameters();
             if (sslContextParameters != null) {
-                VertxWebsocketHelper.setupSSLOptions(sslContextParameters, 
options);
+                VertxHelper.setupSSLOptions(getCamelContext(), 
sslContextParameters, options);
             }
 
             client = getVertx().createHttpClient(options);
@@ -134,7 +135,7 @@ public class VertxWebsocketEndpoint extends DefaultEndpoint 
{
     }
 
     protected Map<VertxWebsocketHostKey, VertxWebsocketHost> 
getVertxHostRegistry() {
-        return getComponent().getVerxHostRegistry();
+        return getComponent().getVertxHostRegistry();
     }
 
     /**
diff --git 
a/components/camel-vertx/camel-vertx-websocket/src/main/java/org/apache/camel/component/vertx/websocket/VertxWebsocketHelper.java
 
b/components/camel-vertx/camel-vertx-websocket/src/main/java/org/apache/camel/component/vertx/websocket/VertxWebsocketHelper.java
index 4592b9d..b0998ae 100644
--- 
a/components/camel-vertx/camel-vertx-websocket/src/main/java/org/apache/camel/component/vertx/websocket/VertxWebsocketHelper.java
+++ 
b/components/camel-vertx/camel-vertx-websocket/src/main/java/org/apache/camel/component/vertx/websocket/VertxWebsocketHelper.java
@@ -16,22 +16,6 @@
  */
 package org.apache.camel.component.vertx.websocket;
 
-import java.security.KeyStore;
-import java.util.function.Function;
-
-import javax.net.ssl.KeyManagerFactory;
-import javax.net.ssl.TrustManager;
-import javax.net.ssl.TrustManagerFactory;
-import javax.net.ssl.X509KeyManager;
-
-import io.vertx.core.Vertx;
-import io.vertx.core.net.KeyCertOptions;
-import io.vertx.core.net.TCPSSLOptions;
-import io.vertx.core.net.TrustOptions;
-import org.apache.camel.support.jsse.KeyManagersParameters;
-import org.apache.camel.support.jsse.SSLContextParameters;
-import org.apache.camel.support.jsse.TrustManagersParameters;
-
 public final class VertxWebsocketHelper {
 
     private VertxWebsocketHelper() {
@@ -39,70 +23,6 @@ public final class VertxWebsocketHelper {
     }
 
     /**
-     * Configures key store and trust store options for the Vert.x client and 
server
-     */
-    public static void setupSSLOptions(SSLContextParameters 
sslContextParameters, TCPSSLOptions options) throws Exception {
-        options.setSsl(true);
-        options.setKeyCertOptions(new 
KeyManagerFactoryOptions(createKeyManagerFactory(sslContextParameters)));
-        options.setTrustOptions(new 
TrustManagerFactoryOptions(createTrustManagerFactory(sslContextParameters)));
-    }
-
-    private static class KeyManagerFactoryOptions implements KeyCertOptions {
-        private final KeyManagerFactory keyManagerFactory;
-
-        public KeyManagerFactoryOptions(KeyManagerFactory keyManagerFactory) {
-            this.keyManagerFactory = keyManagerFactory;
-        }
-
-        private KeyManagerFactoryOptions(KeyManagerFactoryOptions other) {
-            this.keyManagerFactory = other.keyManagerFactory;
-        }
-
-        @Override
-        public KeyCertOptions copy() {
-            return new KeyManagerFactoryOptions(this);
-        }
-
-        @Override
-        public KeyManagerFactory getKeyManagerFactory(Vertx vertx) {
-            return keyManagerFactory;
-        }
-
-        @Override
-        public Function<String, X509KeyManager> keyManagerMapper(Vertx vertx) {
-            return keyManagerFactory.getKeyManagers()[0] instanceof 
X509KeyManager
-                    ? serverName -> (X509KeyManager) 
keyManagerFactory.getKeyManagers()[0] : null;
-        }
-    }
-
-    private static class TrustManagerFactoryOptions implements TrustOptions {
-        private final TrustManagerFactory trustManagerFactory;
-
-        public TrustManagerFactoryOptions(TrustManagerFactory 
trustManagerFactory) {
-            this.trustManagerFactory = trustManagerFactory;
-        }
-
-        private TrustManagerFactoryOptions(TrustManagerFactoryOptions other) {
-            trustManagerFactory = other.trustManagerFactory;
-        }
-
-        @Override
-        public TrustOptions copy() {
-            return new TrustManagerFactoryOptions(this);
-        }
-
-        @Override
-        public TrustManagerFactory getTrustManagerFactory(Vertx vertx) {
-            return trustManagerFactory;
-        }
-
-        @Override
-        public Function<String, TrustManager[]> trustManagerMapper(Vertx 
vertx) {
-            return serverName -> trustManagerFactory.getTrustManagers();
-        }
-    }
-
-    /**
      * Extracts the port number from the endpoint URI path or returns the 
Vert.x default HTTP server port (0) if one was
      * not provided
      */
@@ -157,65 +77,4 @@ public final class VertxWebsocketHelper {
     public static VertxWebsocketHostKey 
createHostKey(VertxWebsocketConfiguration configuration) {
         return new VertxWebsocketHostKey(configuration.getHost(), 
configuration.getPort());
     }
-
-    /**
-     * Creates a KeyManagerFactory from a given SSLContextParameters
-     */
-    private static KeyManagerFactory 
createKeyManagerFactory(SSLContextParameters sslContextParameters) throws 
Exception {
-        final KeyManagersParameters keyManagers = 
sslContextParameters.getKeyManagers();
-        if (keyManagers == null) {
-            return null;
-        }
-
-        String kmfAlgorithm = keyManagers.getAlgorithm();
-        if (kmfAlgorithm == null) {
-            kmfAlgorithm = KeyManagerFactory.getDefaultAlgorithm();
-        }
-
-        KeyManagerFactory kmf;
-        if (keyManagers.getProvider() == null) {
-            kmf = KeyManagerFactory.getInstance(kmfAlgorithm);
-        } else {
-            kmf = KeyManagerFactory.getInstance(kmfAlgorithm, 
keyManagers.getProvider());
-        }
-
-        char[] kmfPassword = null;
-        if (keyManagers.getKeyPassword() != null) {
-            kmfPassword = keyManagers.getKeyPassword().toCharArray();
-        }
-
-        KeyStore ks = keyManagers.getKeyStore() == null ? null : 
keyManagers.getKeyStore().createKeyStore();
-
-        kmf.init(ks, kmfPassword);
-        return kmf;
-    }
-
-    /**
-     * Creates a TrustManagerFactory from a given SSLContextParameters
-     */
-    private static TrustManagerFactory 
createTrustManagerFactory(SSLContextParameters sslContextParameters) throws 
Exception {
-        final TrustManagersParameters trustManagers = 
sslContextParameters.getTrustManagers();
-        if (trustManagers == null) {
-            return null;
-        }
-
-        TrustManagerFactory tmf = null;
-
-        if (trustManagers.getKeyStore() != null) {
-            String tmfAlgorithm = trustManagers.getAlgorithm();
-            if (tmfAlgorithm == null) {
-                tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
-            }
-
-            if (trustManagers.getProvider() == null) {
-                tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
-            } else {
-                tmf = TrustManagerFactory.getInstance(tmfAlgorithm, 
trustManagers.getProvider());
-            }
-
-            KeyStore ks = trustManagers.getKeyStore() == null ? null : 
trustManagers.getKeyStore().createKeyStore();
-            tmf.init(ks);
-        }
-        return tmf;
-    }
 }
diff --git 
a/components/camel-vertx/camel-vertx-websocket/src/main/java/org/apache/camel/component/vertx/websocket/VertxWebsocketHost.java
 
b/components/camel-vertx/camel-vertx-websocket/src/main/java/org/apache/camel/component/vertx/websocket/VertxWebsocketHost.java
index 9fb9490..16dc263 100644
--- 
a/components/camel-vertx/camel-vertx-websocket/src/main/java/org/apache/camel/component/vertx/websocket/VertxWebsocketHost.java
+++ 
b/components/camel-vertx/camel-vertx-websocket/src/main/java/org/apache/camel/component/vertx/websocket/VertxWebsocketHost.java
@@ -33,6 +33,8 @@ import io.vertx.core.net.SocketAddress;
 import io.vertx.ext.web.Route;
 import io.vertx.ext.web.Router;
 import io.vertx.ext.web.handler.CorsHandler;
+import org.apache.camel.CamelContext;
+import org.apache.camel.component.vertx.common.VertxHelper;
 import org.apache.camel.support.jsse.SSLContextParameters;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
@@ -48,10 +50,13 @@ public class VertxWebsocketHost {
     private final VertxWebsocketHostKey hostKey;
     private final Map<String, Route> routeRegistry = new HashMap<>();
     private final Map<String, ServerWebSocket> connectedPeers = new 
ConcurrentHashMap<>();
+    private final CamelContext camelContext;
     private HttpServer server;
     private int port = VertxWebsocketConstants.DEFAULT_VERTX_SERVER_PORT;
 
-    public VertxWebsocketHost(VertxWebsocketHostConfiguration 
websocketHostConfiguration, VertxWebsocketHostKey key) {
+    public VertxWebsocketHost(CamelContext camelContext, 
VertxWebsocketHostConfiguration websocketHostConfiguration,
+                              VertxWebsocketHostKey key) {
+        this.camelContext = camelContext;
         this.hostConfiguration = websocketHostConfiguration;
         this.hostKey = key;
     }
@@ -161,7 +166,7 @@ public class VertxWebsocketHost {
                     options = new HttpServerOptions();
                 }
 
-                VertxWebsocketHelper.setupSSLOptions(sslContextParameters, 
options);
+                VertxHelper.setupSSLOptions(camelContext, 
sslContextParameters, options);
             }
 
             if (options != null) {
diff --git 
a/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebSocketTestSupport.java
 
b/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebSocketTestSupport.java
index b9ba631..32b159f 100644
--- 
a/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebSocketTestSupport.java
+++ 
b/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebSocketTestSupport.java
@@ -41,7 +41,7 @@ public class VertxWebSocketTestSupport extends 
CamelTestSupport {
      */
     public int getVertxServerRandomPort() {
         VertxWebsocketComponent component = 
context.getComponent("vertx-websocket", VertxWebsocketComponent.class);
-        Map<VertxWebsocketHostKey, VertxWebsocketHost> registry = 
component.getVerxHostRegistry();
+        Map<VertxWebsocketHostKey, VertxWebsocketHost> registry = 
component.getVertxHostRegistry();
         return registry.values()
                 .stream()
                 .filter(wsHost -> wsHost.getPort() != port)
diff --git 
a/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebsocketExternalServerTest.java
 
b/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebsocketExternalServerTest.java
index b286ea5..54589a0 100644
--- 
a/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebsocketExternalServerTest.java
+++ 
b/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebsocketExternalServerTest.java
@@ -98,7 +98,7 @@ public class VertxWebsocketExternalServerTest extends 
VertxWebSocketTestSupport
 
         VertxWebsocketHostConfiguration configuration = new 
VertxWebsocketHostConfiguration(vertx, router, options, null);
         VertxWebsocketHostKey key = new VertxWebsocketHostKey("localhost", 0);
-        VertxWebsocketHost host = new VertxWebsocketHost(configuration, key);
+        VertxWebsocketHost host = new VertxWebsocketHost(context, 
configuration, key);
         host.start();
 
         CamelContext context = new DefaultCamelContext();
diff --git 
a/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebsocketTest.java
 
b/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebsocketTest.java
index 11f456e..3fcd5e9 100644
--- 
a/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebsocketTest.java
+++ 
b/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebsocketTest.java
@@ -218,7 +218,7 @@ public class VertxWebsocketTest extends 
VertxWebSocketTestSupport {
         List<String> results = new ArrayList<>();
 
         VertxWebsocketComponent component = 
context.getComponent("vertx-websocket", VertxWebsocketComponent.class);
-        Map<VertxWebsocketHostKey, VertxWebsocketHost> registry = 
component.getVerxHostRegistry();
+        Map<VertxWebsocketHostKey, VertxWebsocketHost> registry = 
component.getVertxHostRegistry();
         VertxWebsocketHost host = registry.values()
                 .stream()
                 .filter(wsHost -> wsHost.getPort() != port)

Reply via email to