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 <[email protected]>
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
[email protected].