You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by zr...@apache.org on 2018/02/27 13:38:10 UTC
[camel] branch master updated: CAMEL-12123: camel-salesforce - Http
proxy supp...
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
The following commit(s) were added to refs/heads/master by this push:
new 3639bca CAMEL-12123: camel-salesforce - Http proxy supp...
3639bca is described below
commit 3639bca4b41352983822c552c32db7ea07936081
Author: Zoran Regvart <zr...@apache.org>
AuthorDate: Tue Feb 27 14:37:27 2018 +0100
CAMEL-12123: camel-salesforce - Http proxy supp...
...ort uses two inconsistent methods and is broken
To remain backward compatible both methods of configuring HTTP proxy
support in `camel-salesforce` are taken into account when configuring
the rest client.
---
.../component/salesforce/SalesforceComponent.java | 32 +++++++++++
.../salesforce/HttpProxyIntegrationTest.java | 63 ++++++++++++++++------
2 files changed, 80 insertions(+), 15 deletions(-)
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceComponent.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceComponent.java
index bcd91e5..ebe596e 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceComponent.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceComponent.java
@@ -22,6 +22,7 @@ import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
+import java.util.function.Supplier;
import java.util.regex.Pattern;
import org.apache.camel.CamelContext;
@@ -42,6 +43,7 @@ import org.apache.camel.component.salesforce.internal.streaming.SubscriptionHelp
import org.apache.camel.impl.DefaultComponent;
import org.apache.camel.spi.Metadata;
import org.apache.camel.util.IntrospectionSupport;
+import org.apache.camel.util.ObjectHelper;
import org.apache.camel.util.ServiceHelper;
import org.apache.camel.util.StringHelper;
import org.apache.camel.util.jsse.KeyStoreParameters;
@@ -334,6 +336,11 @@ public class SalesforceComponent extends DefaultComponent implements VerifiableC
httpClient = createHttpClient(sslContextFactory);
}
+ if (httpClientProperties == null) {
+ httpClientProperties = new HashMap<>();
+ }
+
+ defineComponentPropertiesIn(httpClientProperties, this);
setupHttpClient(httpClient, getCamelContext(), httpClientProperties);
// support restarts
@@ -779,4 +786,29 @@ public class SalesforceComponent extends DefaultComponent implements VerifiableC
return httpClient;
}
+
+ private static void defineComponentPropertiesIn(final Map<String, Object> httpClientProperties, final SalesforceComponent salesforce) {
+ putValueIfGivenTo(httpClientProperties, HTTP_PROXY_HOST, salesforce::getHttpProxyHost);
+ putValueIfGivenTo(httpClientProperties, HTTP_PROXY_PORT, salesforce::getHttpProxyPort);
+ putValueIfGivenTo(httpClientProperties, HTTP_PROXY_INCLUDE, salesforce::getHttpProxyIncludedAddresses);
+ putValueIfGivenTo(httpClientProperties, HTTP_PROXY_EXCLUDE, salesforce::getHttpProxyExcludedAddresses);
+ putValueIfGivenTo(httpClientProperties, HTTP_PROXY_USERNAME, salesforce::getHttpProxyUsername);
+ putValueIfGivenTo(httpClientProperties, HTTP_PROXY_PASSWORD, salesforce::getHttpProxyPassword);
+ putValueIfGivenTo(httpClientProperties, HTTP_PROXY_REALM, salesforce::getHttpProxyRealm);
+ putValueIfGivenTo(httpClientProperties, HTTP_PROXY_AUTH_URI, salesforce::getHttpProxyAuthUri);
+
+ if (ObjectHelper.isNotEmpty(salesforce.getHttpProxyHost())) {
+ // let's not put `false` values in client properties if no proxy is used
+ putValueIfGivenTo(httpClientProperties, HTTP_PROXY_IS_SOCKS4, salesforce::isHttpProxySocks4);
+ putValueIfGivenTo(httpClientProperties, HTTP_PROXY_IS_SECURE, salesforce::isHttpProxySecure);
+ putValueIfGivenTo(httpClientProperties, HTTP_PROXY_USE_DIGEST_AUTH, salesforce::isHttpProxyUseDigestAuth);
+ }
+ }
+
+ private static void putValueIfGivenTo(final Map<String, Object> properties, final String key, final Supplier<Object> valueSupplier) {
+ final Object value = valueSupplier.get();
+ if (ObjectHelper.isNotEmpty(value)) {
+ properties.putIfAbsent(key, value);
+ }
+ }
}
diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/HttpProxyIntegrationTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/HttpProxyIntegrationTest.java
index 3281452..b9b80b8 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/HttpProxyIntegrationTest.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/HttpProxyIntegrationTest.java
@@ -16,8 +16,13 @@
*/
package org.apache.camel.component.salesforce;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.function.Consumer;
+
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -33,6 +38,10 @@ import org.eclipse.jetty.util.StringUtil;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameter;
+import org.junit.runners.Parameterized.Parameters;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -42,6 +51,7 @@ import static org.eclipse.jetty.http.HttpHeader.PROXY_AUTHORIZATION;
/**
* Test HTTP proxy configuration for Salesforce component.
*/
+@RunWith(Parameterized.class)
public class HttpProxyIntegrationTest extends AbstractSalesforceTestBase {
private static final Logger LOG = LoggerFactory.getLogger(HttpProxyIntegrationTest.class);
@@ -53,10 +63,23 @@ public class HttpProxyIntegrationTest extends AbstractSalesforceTestBase {
private static Server server;
private static int httpProxyPort;
+ private static final AtomicBoolean WENT_TORUGH_PROXY = new AtomicBoolean();
+
+ @Parameter(0)
+ public Consumer<SalesforceComponent> configurationMethod;
+
+ @Parameters
+ public static Iterable<Consumer<SalesforceComponent>> methods() {
+ return Arrays.asList(HttpProxyIntegrationTest::configureProxyViaComponentProperties,
+ HttpProxyIntegrationTest::configureProxyViaClientPropertiesMap);
+ }
+
@Test
public void testGetVersions() throws Exception {
doTestGetVersions("");
doTestGetVersions("Xml");
+
+ assertTrue("Should have gone through the test proxy", WENT_TORUGH_PROXY.get());
}
@SuppressWarnings("unchecked")
@@ -79,12 +102,6 @@ public class HttpProxyIntegrationTest extends AbstractSalesforceTestBase {
// start a local HTTP proxy using Jetty server
server = new Server();
-/*
- final SSLContextParameters contextParameters = new SSLContextParameters();
- final SslContextFactory sslContextFactory = new SslContextFactory();
- sslContextFactory.setSslContext(contextParameters.createSSLContext());
- ServerConnector connector = new ServerConnector(server, sslContextFactory);
-*/
ServerConnector connector = new ServerConnector(server);
connector.setHost(HTTP_PROXY_HOST);
@@ -105,6 +122,7 @@ public class HttpProxyIntegrationTest extends AbstractSalesforceTestBase {
return false;
}
LOG.info("Request contains required header " + PROXY_AUTHORIZATION);
+ WENT_TORUGH_PROXY.set(true);
return true;
}
};
@@ -123,20 +141,13 @@ public class HttpProxyIntegrationTest extends AbstractSalesforceTestBase {
super.createComponent();
final SalesforceComponent salesforce = (SalesforceComponent) context().getComponent("salesforce");
- // set HTTP proxy settings
- salesforce.setHttpProxyHost(HTTP_PROXY_HOST);
- salesforce.setHttpProxyPort(httpProxyPort);
- salesforce.setIsHttpProxySecure(false);
- salesforce.setHttpProxyUsername(HTTP_PROXY_USER_NAME);
- salesforce.setHttpProxyPassword(HTTP_PROXY_PASSWORD);
- salesforce.setHttpProxyAuthUri(String.format("http://%s:%s", HTTP_PROXY_HOST, httpProxyPort));
- salesforce.setHttpProxyRealm(HTTP_PROXY_REALM);
-
// set HTTP client properties
final HashMap<String, Object> properties = new HashMap<String, Object>();
properties.put("timeout", "60000");
properties.put("removeIdleDestinations", "true");
salesforce.setHttpClientProperties(properties);
+
+ configurationMethod.accept(salesforce);
}
@AfterClass
@@ -165,4 +176,26 @@ public class HttpProxyIntegrationTest extends AbstractSalesforceTestBase {
}
};
}
+
+ private static void configureProxyViaComponentProperties(final SalesforceComponent salesforce) {
+ salesforce.setHttpProxyHost(HTTP_PROXY_HOST);
+ salesforce.setHttpProxyPort(httpProxyPort);
+ salesforce.setIsHttpProxySecure(false);
+ salesforce.setHttpProxyUsername(HTTP_PROXY_USER_NAME);
+ salesforce.setHttpProxyPassword(HTTP_PROXY_PASSWORD);
+ salesforce.setHttpProxyAuthUri(String.format("http://%s:%s", HTTP_PROXY_HOST, httpProxyPort));
+ salesforce.setHttpProxyRealm(HTTP_PROXY_REALM);
+ }
+
+ private static void configureProxyViaClientPropertiesMap(final SalesforceComponent salesforce) {
+ final Map<String, Object> properties = salesforce.getHttpClientProperties();
+ properties.put(SalesforceComponent.HTTP_PROXY_HOST, HTTP_PROXY_HOST);
+ properties.put(SalesforceComponent.HTTP_PROXY_PORT, httpProxyPort);
+ properties.put(SalesforceComponent.HTTP_PROXY_IS_SECURE, false);
+ properties.put(SalesforceComponent.HTTP_PROXY_USERNAME, HTTP_PROXY_USER_NAME);
+ properties.put(SalesforceComponent.HTTP_PROXY_PASSWORD, HTTP_PROXY_PASSWORD);
+ properties.put(SalesforceComponent.HTTP_PROXY_AUTH_URI, String.format("http://%s:%s", HTTP_PROXY_HOST, httpProxyPort));
+ properties.put(SalesforceComponent.HTTP_PROXY_REALM, HTTP_PROXY_REALM);
+ }
+
}
--
To stop receiving notification emails like this one, please contact
zregvart@apache.org.