This is an automated email from the ASF dual-hosted git repository.
davsclaus 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 3d99ff8 CAMEL-14744: fix camel-salesforce lazy-login (#3726)
3d99ff8 is described below
commit 3d99ff815a64eb201f9956901d043f8147c34f4f
Author: MaartenTutak <[email protected]>
AuthorDate: Thu Apr 16 20:52:32 2020 +0200
CAMEL-14744: fix camel-salesforce lazy-login (#3726)
* CAMEL-14744: fix camel-salesforce lazy-login
* CAMEL-14744: fix camel-salesforce lazy-login
---
.../component/salesforce/SalesforceComponent.java | 4 +-
.../component/salesforce/SalesforceProducer.java | 14 +++++-
.../internal/client/AbstractClientBase.java | 14 +++---
.../internal/client/DefaultAnalyticsApiClient.java | 5 +-
.../internal/client/DefaultBulkApiClient.java | 5 +-
.../internal/client/DefaultCompositeApiClient.java | 5 +-
.../internal/client/DefaultRestClient.java | 5 +-
.../processor/AbstractSalesforceProcessor.java | 3 ++
.../internal/processor/AnalyticsApiProcessor.java | 2 +-
.../internal/processor/BulkApiProcessor.java | 2 +-
.../internal/processor/CompositeApiProcessor.java | 2 +-
.../internal/streaming/SubscriptionHelper.java | 16 +++++--
.../internal/client/AbstractClientBaseTest.java | 33 +++++++++++--
.../internal/streaming/SubscriptionHelperTest.java | 54 ++++++++++++++++++++++
.../apache/camel/maven/AbstractSalesforceMojo.java | 2 +-
15 files changed, 137 insertions(+), 29 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 8a71318..09048cd 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
@@ -686,7 +686,7 @@ public class SalesforceComponent extends DefaultComponent
implements SSLContextP
final String version = endpointConfig.getApiVersion();
final PayloadFormat format = endpointConfig.getFormat();
- return new DefaultRestClient(httpClient, version, format, session);
+ return new DefaultRestClient(httpClient, version, format, session,
loginConfig);
}
RestClient createRestClient(final Map<String, Object> properties) throws
Exception {
@@ -721,7 +721,7 @@ public class SalesforceComponent extends DefaultComponent
implements SSLContextP
final SalesforceSession session = new SalesforceSession(camelContext,
httpClient, httpClient.getTimeout(), loginConfig);
httpClient.setSession(session);
- return new DefaultRestClient(httpClient, config.getApiVersion(),
config.getFormat(), session);
+ return new DefaultRestClient(httpClient, config.getApiVersion(),
config.getFormat(), session, loginConfig);
}
static SalesforceHttpClient createHttpClient(final SslContextFactory
sslContextFactory) throws Exception {
diff --git
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceProducer.java
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceProducer.java
index 0eb5c6f..81283c7 100644
---
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceProducer.java
+++
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceProducer.java
@@ -18,9 +18,11 @@ package org.apache.camel.component.salesforce;
import org.apache.camel.AsyncCallback;
import org.apache.camel.Exchange;
+import org.apache.camel.RuntimeCamelException;
import org.apache.camel.component.salesforce.api.SalesforceException;
import org.apache.camel.component.salesforce.internal.OperationName;
import org.apache.camel.component.salesforce.internal.PayloadFormat;
+import org.apache.camel.component.salesforce.internal.SalesforceSession;
import
org.apache.camel.component.salesforce.internal.processor.AnalyticsApiProcessor;
import
org.apache.camel.component.salesforce.internal.processor.BulkApiProcessor;
import
org.apache.camel.component.salesforce.internal.processor.CompositeApiProcessor;
@@ -113,7 +115,17 @@ public class SalesforceProducer extends
DefaultAsyncProducer {
@Override
public boolean process(Exchange exchange, AsyncCallback callback) {
- LOG.debug("Processing {}",
((SalesforceEndpoint)getEndpoint()).getOperationName());
+ SalesforceEndpoint endpoint = (SalesforceEndpoint) getEndpoint();
+ SalesforceSession session = endpoint.getComponent().getSession();
+ if (session != null && session.getAccessToken() == null) {
+ try {
+ session.login(null);
+ } catch (SalesforceException e) {
+ throw RuntimeCamelException.wrapRuntimeCamelException(e);
+ }
+ }
+
+ LOG.debug("Processing {}", endpoint.getOperationName());
return processor.process(exchange, callback);
}
diff --git
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/AbstractClientBase.java
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/AbstractClientBase.java
index afdca2d..c3bb17a 100644
---
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/AbstractClientBase.java
+++
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/AbstractClientBase.java
@@ -42,6 +42,7 @@ import org.apache.camel.Exchange;
import org.apache.camel.Message;
import org.apache.camel.Service;
import org.apache.camel.component.salesforce.SalesforceHttpClient;
+import org.apache.camel.component.salesforce.SalesforceLoginConfig;
import org.apache.camel.component.salesforce.api.SalesforceException;
import org.apache.camel.component.salesforce.api.TypeReferences;
import org.apache.camel.component.salesforce.api.dto.RestError;
@@ -76,6 +77,7 @@ public abstract class AbstractClientBase implements
SalesforceSession.Salesforce
protected final SalesforceHttpClient httpClient;
protected final SalesforceSession session;
+ protected final SalesforceLoginConfig loginConfig;
protected final String version;
protected String accessToken;
@@ -85,15 +87,16 @@ public abstract class AbstractClientBase implements
SalesforceSession.Salesforce
private long terminationTimeout;
- public AbstractClientBase(String version, SalesforceSession session,
SalesforceHttpClient httpClient) throws SalesforceException {
- this(version, session, httpClient, DEFAULT_TERMINATION_TIMEOUT);
+ public AbstractClientBase(String version, SalesforceSession session,
SalesforceHttpClient httpClient, SalesforceLoginConfig loginConfig) throws
SalesforceException {
+ this(version, session, httpClient, loginConfig,
DEFAULT_TERMINATION_TIMEOUT);
}
- AbstractClientBase(String version, SalesforceSession session,
SalesforceHttpClient httpClient, int terminationTimeout) throws
SalesforceException {
+ AbstractClientBase(String version, SalesforceSession session,
SalesforceHttpClient httpClient, SalesforceLoginConfig loginConfig, int
terminationTimeout) throws SalesforceException {
this.version = version;
this.session = session;
this.httpClient = httpClient;
+ this.loginConfig = loginConfig;
this.terminationTimeout = terminationTimeout;
}
@@ -101,10 +104,9 @@ public abstract class AbstractClientBase implements
SalesforceSession.Salesforce
public void start() {
// local cache
accessToken = session.getAccessToken();
- if (accessToken == null) {
- // lazy login here!
+ if (accessToken == null && !loginConfig.isLazyLogin()) {
try {
- accessToken = session.login(accessToken);
+ accessToken = session.login(null);
} catch (SalesforceException e) {
throw new RuntimeException(e);
}
diff --git
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultAnalyticsApiClient.java
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultAnalyticsApiClient.java
index 9faf366..ad45e01 100644
---
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultAnalyticsApiClient.java
+++
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultAnalyticsApiClient.java
@@ -27,6 +27,7 @@ import java.util.Map;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.camel.component.salesforce.SalesforceHttpClient;
+import org.apache.camel.component.salesforce.SalesforceLoginConfig;
import org.apache.camel.component.salesforce.api.NoSuchSObjectException;
import org.apache.camel.component.salesforce.api.SalesforceException;
import org.apache.camel.component.salesforce.api.TypeReferences;
@@ -58,8 +59,8 @@ public class DefaultAnalyticsApiClient extends
AbstractClientBase implements Ana
private static final String INCLUDE_DETAILS_QUERY_PARAM =
"?includeDetails=";
private ObjectMapper objectMapper;
- public DefaultAnalyticsApiClient(String version, SalesforceSession
session, SalesforceHttpClient httpClient) throws SalesforceException {
- super(version, session, httpClient);
+ public DefaultAnalyticsApiClient(String version, SalesforceSession
session, SalesforceHttpClient httpClient, SalesforceLoginConfig loginConfig)
throws SalesforceException {
+ super(version, session, httpClient, loginConfig);
objectMapper = JsonUtils.createObjectMapper();
}
diff --git
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultBulkApiClient.java
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultBulkApiClient.java
index fa0a2f6..813a56e 100644
---
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultBulkApiClient.java
+++
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultBulkApiClient.java
@@ -38,6 +38,7 @@ import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.apache.camel.component.salesforce.SalesforceHttpClient;
+import org.apache.camel.component.salesforce.SalesforceLoginConfig;
import org.apache.camel.component.salesforce.api.SalesforceException;
import org.apache.camel.component.salesforce.api.dto.RestError;
import org.apache.camel.component.salesforce.api.dto.bulk.BatchInfo;
@@ -65,8 +66,8 @@ public class DefaultBulkApiClient extends AbstractClientBase
implements BulkApiC
private JAXBContext context;
private ObjectFactory objectFactory;
- public DefaultBulkApiClient(String version, SalesforceSession session,
SalesforceHttpClient httpClient) throws SalesforceException {
- super(version, session, httpClient);
+ public DefaultBulkApiClient(String version, SalesforceSession session,
SalesforceHttpClient httpClient, SalesforceLoginConfig loginConfig) throws
SalesforceException {
+ super(version, session, httpClient, loginConfig);
try {
context =
JAXBContext.newInstance(JobInfo.class.getPackage().getName(),
getClass().getClassLoader());
diff --git
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultCompositeApiClient.java
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultCompositeApiClient.java
index 470dea2..c0b0106 100644
---
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultCompositeApiClient.java
+++
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultCompositeApiClient.java
@@ -32,6 +32,7 @@ import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.XStreamException;
import org.apache.camel.component.salesforce.SalesforceEndpointConfig;
import org.apache.camel.component.salesforce.SalesforceHttpClient;
+import org.apache.camel.component.salesforce.SalesforceLoginConfig;
import org.apache.camel.component.salesforce.api.NoSuchSObjectException;
import org.apache.camel.component.salesforce.api.SalesforceException;
import org.apache.camel.component.salesforce.api.dto.RestError;
@@ -71,9 +72,9 @@ public class DefaultCompositeApiClient extends
AbstractClientBase implements Com
private final XStream xStreamCompositeTree;
public DefaultCompositeApiClient(final SalesforceEndpointConfig
configuration, final PayloadFormat format, final String version, final
SalesforceSession session,
- final SalesforceHttpClient httpClient)
+ final SalesforceHttpClient httpClient,
final SalesforceLoginConfig loginConfig)
throws SalesforceException {
- super(version, session, httpClient);
+ super(version, session, httpClient, loginConfig);
this.format = format;
if (configuration.getObjectMapper() != null) {
diff --git
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultRestClient.java
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultRestClient.java
index eae4b1e..33a73dc 100644
---
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultRestClient.java
+++
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultRestClient.java
@@ -29,6 +29,7 @@ import java.util.Optional;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.thoughtworks.xstream.XStream;
import org.apache.camel.component.salesforce.SalesforceHttpClient;
+import org.apache.camel.component.salesforce.SalesforceLoginConfig;
import org.apache.camel.component.salesforce.api.NoSuchSObjectException;
import org.apache.camel.component.salesforce.api.SalesforceException;
import
org.apache.camel.component.salesforce.api.SalesforceMultipleChoicesException;
@@ -60,8 +61,8 @@ public class DefaultRestClient extends AbstractClientBase
implements RestClient
private ObjectMapper objectMapper;
private XStream xStream;
- public DefaultRestClient(final SalesforceHttpClient httpClient, final
String version, final PayloadFormat format, final SalesforceSession session)
throws SalesforceException {
- super(version, session, httpClient);
+ public DefaultRestClient(final SalesforceHttpClient httpClient, final
String version, final PayloadFormat format, final SalesforceSession session,
final SalesforceLoginConfig loginConfig) throws SalesforceException {
+ super(version, session, httpClient, loginConfig);
this.format = format;
diff --git
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/AbstractSalesforceProcessor.java
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/AbstractSalesforceProcessor.java
index cdf5052..9cafd84 100644
---
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/AbstractSalesforceProcessor.java
+++
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/AbstractSalesforceProcessor.java
@@ -25,6 +25,7 @@ import org.apache.camel.NoTypeConversionAvailableException;
import org.apache.camel.component.salesforce.SalesforceComponent;
import org.apache.camel.component.salesforce.SalesforceEndpoint;
import org.apache.camel.component.salesforce.SalesforceHttpClient;
+import org.apache.camel.component.salesforce.SalesforceLoginConfig;
import org.apache.camel.component.salesforce.api.SalesforceException;
import org.apache.camel.component.salesforce.internal.OperationName;
import org.apache.camel.component.salesforce.internal.SalesforceSession;
@@ -46,6 +47,7 @@ public abstract class AbstractSalesforceProcessor implements
SalesforceProcessor
protected final OperationName operationName;
protected final SalesforceSession session;
protected final SalesforceHttpClient httpClient;
+ protected final SalesforceLoginConfig loginConfig;
protected final boolean rawPayload;
public AbstractSalesforceProcessor(final SalesforceEndpoint endpoint) {
@@ -55,6 +57,7 @@ public abstract class AbstractSalesforceProcessor implements
SalesforceProcessor
final SalesforceComponent component = endpoint.getComponent();
session = component.getSession();
+ loginConfig = component.getLoginConfig();
httpClient = endpoint.getConfiguration().getHttpClient();
rawPayload = endpoint.getConfiguration().isRawPayload();
}
diff --git
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/AnalyticsApiProcessor.java
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/AnalyticsApiProcessor.java
index 66177e2..3ecfde1 100644
---
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/AnalyticsApiProcessor.java
+++
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/AnalyticsApiProcessor.java
@@ -49,7 +49,7 @@ public class AnalyticsApiProcessor extends
AbstractSalesforceProcessor {
public AnalyticsApiProcessor(SalesforceEndpoint endpoint) throws
SalesforceException {
super(endpoint);
- this.analyticsClient = new
DefaultAnalyticsApiClient((String)endpointConfigMap.get(SalesforceEndpointConfig.API_VERSION),
session, httpClient);
+ this.analyticsClient = new
DefaultAnalyticsApiClient((String)endpointConfigMap.get(SalesforceEndpointConfig.API_VERSION),
session, httpClient, loginConfig);
}
@Override
diff --git
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/BulkApiProcessor.java
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/BulkApiProcessor.java
index ca413db..ff7b1f9 100644
---
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/BulkApiProcessor.java
+++
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/BulkApiProcessor.java
@@ -51,7 +51,7 @@ public class BulkApiProcessor extends
AbstractSalesforceProcessor {
public BulkApiProcessor(SalesforceEndpoint endpoint) throws
SalesforceException {
super(endpoint);
- this.bulkClient = new
DefaultBulkApiClient((String)endpointConfigMap.get(SalesforceEndpointConfig.API_VERSION),
session, httpClient);
+ this.bulkClient = new
DefaultBulkApiClient((String)endpointConfigMap.get(SalesforceEndpointConfig.API_VERSION),
session, httpClient, loginConfig);
}
@Override
diff --git
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/CompositeApiProcessor.java
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/CompositeApiProcessor.java
index 32c6d8f..64c291e 100644
---
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/CompositeApiProcessor.java
+++
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/CompositeApiProcessor.java
@@ -64,7 +64,7 @@ public final class CompositeApiProcessor extends
AbstractSalesforceProcessor {
throw new SalesforceException("Unsupported format: " + format, 0);
}
- compositeClient = new DefaultCompositeApiClient(configuration, format,
apiVersion, session, httpClient);
+ compositeClient = new DefaultCompositeApiClient(configuration, format,
apiVersion, session, httpClient, loginConfig);
}
diff --git
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/streaming/SubscriptionHelper.java
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/streaming/SubscriptionHelper.java
index 3960ef1..d6e288e 100644
---
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/streaming/SubscriptionHelper.java
+++
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/streaming/SubscriptionHelper.java
@@ -347,8 +347,7 @@ public class SubscriptionHelper extends ServiceSupport {
final SalesforceSession session = component.getSession();
// check login access token
- if (session.getAccessToken() == null) {
- // lazy login here!
+ if (session.getAccessToken() == null &&
!component.getLoginConfig().isLazyLogin()) {
session.login(null);
}
@@ -357,9 +356,16 @@ public class SubscriptionHelper extends ServiceSupport {
protected void customize(Request request) {
super.customize(request);
- // add current security token obtained from session
- // replace old token
- request.getHeaders().put(HttpHeader.AUTHORIZATION, "OAuth " +
session.getAccessToken());
+ //accessToken might be null due to lazy login
+ String accessToken = session.getAccessToken();
+ if (accessToken == null) {
+ try {
+ accessToken = session.login(null);
+ } catch (SalesforceException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ request.getHeaders().put(HttpHeader.AUTHORIZATION, "OAuth " +
accessToken);
}
};
diff --git
a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/client/AbstractClientBaseTest.java
b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/client/AbstractClientBaseTest.java
index 69baea1..f09764a 100644
---
a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/client/AbstractClientBaseTest.java
+++
b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/client/AbstractClientBaseTest.java
@@ -24,6 +24,7 @@ import org.apache.camel.CamelContext;
import org.apache.camel.Exchange;
import org.apache.camel.Message;
import org.apache.camel.component.salesforce.SalesforceHttpClient;
+import org.apache.camel.component.salesforce.SalesforceLoginConfig;
import org.apache.camel.component.salesforce.api.SalesforceException;
import org.apache.camel.component.salesforce.internal.SalesforceSession;
import org.apache.camel.impl.DefaultCamelContext;
@@ -46,12 +47,14 @@ import static org.assertj.core.api.Assertions.entry;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
public class AbstractClientBaseTest {
static class Client extends AbstractClientBase {
- Client(final SalesforceSession session) throws SalesforceException {
- super(null, session, mock(SalesforceHttpClient.class),
+ Client(final SalesforceSession session, final SalesforceLoginConfig
loginConfig) throws SalesforceException {
+ super(null, session, mock(SalesforceHttpClient.class), loginConfig,
1 /* 1 second termination timeout */);
}
@@ -73,7 +76,7 @@ public class AbstractClientBaseTest {
final Client client;
public AbstractClientBaseTest() throws SalesforceException {
- client = new Client(session);
+ client = new Client(session, new SalesforceLoginConfig());
when(session.getAccessToken()).thenReturn("token");
}
@@ -169,4 +172,28 @@ public class AbstractClientBaseTest {
final long elapsed = System.currentTimeMillis() - stopStartTime;
assertTrue(elapsed > 900 && elapsed < 1100);
}
+
+ @Test
+ public void shouldNotLoginWhenAccessTokenIsNullAndLazyLoginIsTrue() throws
SalesforceException {
+ SalesforceLoginConfig loginConfig = new SalesforceLoginConfig();
+ loginConfig.setLazyLogin(true);
+ Client lazyClient = new Client(session, loginConfig);
+ when(session.getAccessToken()).thenReturn(null);
+
+ lazyClient.start();
+
+ verify(session, never()).login(null);
+ }
+
+ @Test
+ public void shouldLoginWhenAccessTokenIsNullAndLazyLoginIsFalse() throws
SalesforceException {
+ SalesforceLoginConfig loginConfig = new SalesforceLoginConfig();
+ loginConfig.setLazyLogin(false);
+ Client eagerClient = new Client(session, loginConfig);
+ when(session.getAccessToken()).thenReturn(null);
+
+ eagerClient.start();
+
+ verify(session).login(null);
+ }
}
diff --git
a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/streaming/SubscriptionHelperTest.java
b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/streaming/SubscriptionHelperTest.java
index 335317c..cb582d3 100644
---
a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/streaming/SubscriptionHelperTest.java
+++
b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/streaming/SubscriptionHelperTest.java
@@ -24,12 +24,20 @@ import java.util.Optional;
import org.apache.camel.component.salesforce.SalesforceComponent;
import org.apache.camel.component.salesforce.SalesforceEndpoint;
import org.apache.camel.component.salesforce.SalesforceEndpointConfig;
+import org.apache.camel.component.salesforce.SalesforceHttpClient;
+import org.apache.camel.component.salesforce.SalesforceLoginConfig;
+import org.apache.camel.component.salesforce.api.SalesforceException;
+import org.apache.camel.component.salesforce.internal.SalesforceSession;
+import org.cometd.client.BayeuxClient;
import org.junit.Test;
import static
org.apache.camel.component.salesforce.internal.streaming.SubscriptionHelper.determineReplayIdFor;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
public class SubscriptionHelperTest {
@@ -106,4 +114,50 @@ public class SubscriptionHelperTest {
assertThat(SubscriptionHelper.getChannelName("event/Test")).isEqualTo("/event/Test__e");
assertThat(SubscriptionHelper.getChannelName("event/Test__e")).isEqualTo("/event/Test__e");
}
+
+ @Test
+ public void shouldNotLoginWhenAccessTokenIsNullAndLazyLoginIsTrue() throws
SalesforceException {
+ final SalesforceHttpClient httpClient =
mock(SalesforceHttpClient.class);
+ httpClient.setTimeout(0L);
+
+ final SalesforceEndpointConfig endpointConfig = new
SalesforceEndpointConfig();
+ endpointConfig.setHttpClient(httpClient);
+
+ final SalesforceLoginConfig loginConfig = new SalesforceLoginConfig();
+ loginConfig.setLazyLogin(true);
+
+ final SalesforceSession session = mock(SalesforceSession.class);
+ final SalesforceComponent component = mock(SalesforceComponent.class);
+ when(component.getLoginConfig()).thenReturn(loginConfig);
+ when(component.getConfig()).thenReturn(endpointConfig);
+ when(component.getSession()).thenReturn(session);
+
+ BayeuxClient bayeuxClient = SubscriptionHelper.createClient(component);
+
+ assertNotNull(bayeuxClient);
+ verify(session, never()).login(null);
+ }
+
+ @Test
+ public void shouldLoginWhenAccessTokenIsNullAndLazyLoginIsFalse() throws
SalesforceException {
+ final SalesforceHttpClient httpClient =
mock(SalesforceHttpClient.class);
+ httpClient.setTimeout(0L);
+
+ final SalesforceEndpointConfig endpointConfig = new
SalesforceEndpointConfig();
+ endpointConfig.setHttpClient(httpClient);
+
+ final SalesforceLoginConfig loginConfig = new SalesforceLoginConfig();
+ loginConfig.setLazyLogin(false);
+
+ final SalesforceSession session = mock(SalesforceSession.class);
+ final SalesforceComponent component = mock(SalesforceComponent.class);
+ when(component.getLoginConfig()).thenReturn(loginConfig);
+ when(component.getConfig()).thenReturn(endpointConfig);
+ when(component.getSession()).thenReturn(session);
+
+ BayeuxClient bayeuxClient = SubscriptionHelper.createClient(component);
+
+ assertNotNull(bayeuxClient);
+ verify(session).login(null);
+ }
}
diff --git
a/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/java/org/apache/camel/maven/AbstractSalesforceMojo.java
b/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/java/org/apache/camel/maven/AbstractSalesforceMojo.java
index 79b081c..e08d67a 100644
---
a/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/java/org/apache/camel/maven/AbstractSalesforceMojo.java
+++
b/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/java/org/apache/camel/maven/AbstractSalesforceMojo.java
@@ -209,7 +209,7 @@ abstract class AbstractSalesforceMojo extends AbstractMojo {
// create rest client
- restClient = new DefaultRestClient(httpClient, version,
PayloadFormat.JSON, session);
+ restClient = new DefaultRestClient(httpClient, version,
PayloadFormat.JSON, session, new SalesforceLoginConfig());
// remember to start the active client object
((DefaultRestClient)restClient).start();