From commits-return-64567-archive-asf-public=cust-asf.ponee.io@camel.apache.org Tue Aug 21 15:49:27 2018 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx-eu-01.ponee.io (Postfix) with SMTP id 08292180679 for ; Tue, 21 Aug 2018 15:49:26 +0200 (CEST) Received: (qmail 58945 invoked by uid 500); 21 Aug 2018 13:49:26 -0000 Mailing-List: contact commits-help@camel.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@camel.apache.org Delivered-To: mailing list commits@camel.apache.org Received: (qmail 58924 invoked by uid 99); 21 Aug 2018 13:49:26 -0000 Received: from ec2-52-202-80-70.compute-1.amazonaws.com (HELO gitbox.apache.org) (52.202.80.70) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 21 Aug 2018 13:49:26 +0000 Received: by gitbox.apache.org (ASF Mail Server at gitbox.apache.org, from userid 33) id 6F74588BB7; Tue, 21 Aug 2018 13:49:25 +0000 (UTC) Date: Tue, 21 Aug 2018 13:49:26 +0000 To: "commits@camel.apache.org" Subject: [camel] 01/02: CAMEL-12744: use SSL configuration in Restlet c... MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit From: zregvart@apache.org In-Reply-To: <153485936499.14952.11375721648778882768@gitbox.apache.org> References: <153485936499.14952.11375721648778882768@gitbox.apache.org> X-Git-Host: gitbox.apache.org X-Git-Repo: camel X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Rev: 6a35c60bbf1b24060faf9a689efe1e09e26191d5 X-Git-NotificationType: diff X-Git-Multimail-Version: 1.5.dev Auto-Submitted: auto-generated Message-Id: <20180821134925.6F74588BB7@gitbox.apache.org> This is an automated email from the ASF dual-hosted git repository. zregvart pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git commit 6a35c60bbf1b24060faf9a689efe1e09e26191d5 Author: Zoran Regvart AuthorDate: Tue Aug 21 15:10:32 2018 +0200 CAMEL-12744: use SSL configuration in Restlet c... ...lient We need to pass the `SSLContext` created from the `SSLContextParameters` via `sslContextFactory` attribute in Restlet client context. --- .../camel/component/restlet/RestletProducer.java | 45 +++++++++++++++++++--- 1 file changed, 40 insertions(+), 5 deletions(-) diff --git a/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletProducer.java b/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletProducer.java index 0b2a864..f4749db 100644 --- a/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletProducer.java +++ b/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletProducer.java @@ -23,14 +23,19 @@ import java.net.URI; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.ConcurrentMap; import java.util.regex.Matcher; import java.util.regex.Pattern; +import javax.net.ssl.SSLContext; + import org.apache.camel.AsyncCallback; +import org.apache.camel.CamelContext; import org.apache.camel.CamelExchangeException; import org.apache.camel.Exchange; import org.apache.camel.impl.DefaultAsyncProducer; import org.apache.camel.util.URISupport; +import org.apache.camel.util.jsse.SSLContextParameters; import org.restlet.Client; import org.restlet.Context; import org.restlet.Request; @@ -38,6 +43,8 @@ import org.restlet.Response; import org.restlet.Uniform; import org.restlet.data.Cookie; import org.restlet.data.CookieSetting; +import org.restlet.data.Parameter; +import org.restlet.engine.ssl.SslContextFactory; import org.restlet.util.Series; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -48,6 +55,24 @@ import org.slf4j.LoggerFactory; * @version */ public class RestletProducer extends DefaultAsyncProducer { + private static final class PredefinedSslContextFactory extends SslContextFactory { + private final SSLContext sslContext; + + private PredefinedSslContextFactory(SSLContext sslContext) { + this.sslContext = sslContext; + } + + @Override + public void init(Series parameters) { + // nop + } + + @Override + public SSLContext createSslContext() throws Exception { + return sslContext; + } + } + private static final Logger LOG = LoggerFactory.getLogger(RestletProducer.class); private static final Pattern PATTERN = Pattern.compile("\\{([\\w\\.]*)\\}"); private Client client; @@ -57,17 +82,27 @@ public class RestletProducer extends DefaultAsyncProducer { super(endpoint); this.throwException = endpoint.isThrowExceptionOnFailure(); client = new Client(endpoint.getProtocol()); - client.setContext(new Context()); - client.getContext().getParameters().add("socketTimeout", String.valueOf(endpoint.getSocketTimeout())); - client.getContext().getParameters().add("socketConnectTimeoutMs", String.valueOf(endpoint.getSocketTimeout())); + final Context context = new Context(); + final Series parameters = context.getParameters(); + parameters.add("socketTimeout", String.valueOf(endpoint.getSocketTimeout())); + parameters.add("socketConnectTimeoutMs", String.valueOf(endpoint.getSocketTimeout())); RestletComponent component = (RestletComponent) endpoint.getComponent(); if (component.getMaxConnectionsPerHost() != null && component.getMaxConnectionsPerHost() > 0) { - client.getContext().getParameters().add("maxConnectionsPerHost", String.valueOf(component.getMaxConnectionsPerHost())); + parameters.add("maxConnectionsPerHost", String.valueOf(component.getMaxConnectionsPerHost())); } if (component.getMaxTotalConnections() != null && component.getMaxTotalConnections() > 0) { - client.getContext().getParameters().add("maxTotalConnections", String.valueOf(component.getMaxTotalConnections())); + parameters.add("maxTotalConnections", String.valueOf(component.getMaxTotalConnections())); } + final ConcurrentMap attributes = context.getAttributes(); + final CamelContext camelContext = endpoint.getCamelContext(); + final SSLContextParameters sslContextParameters = endpoint.getSslContextParameters(); + if (sslContextParameters != null) { + final SSLContext sslContext = sslContextParameters.createSSLContext(camelContext); + attributes.put("sslContextFactory", new PredefinedSslContextFactory(sslContext)); + } + + client.setContext(context); } @Override