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 48596d6f CAMEL-15047: camel-saleforce - Fix services to do correctly
start|stop logic in their doStart/doStop methods and defer creating the http
clients to this phase so they are created at correct moment. Also for buuld
time optimizations via camel-quarkus/graalvm would benefit from this.
48596d6f is described below
commit 48596d6fcac90ce01067b0d27174d1757621790c
Author: Claus Ibsen <[email protected]>
AuthorDate: Mon May 11 16:07:17 2020 +0200
CAMEL-15047: camel-saleforce - Fix services to do correctly start|stop
logic in their doStart/doStop methods and defer creating the http clients to
this phase so they are created at correct moment. Also for buuld time
optimizations via camel-quarkus/graalvm would benefit from this.
---
.../component/salesforce/SalesforceComponent.java | 2 +-
.../salesforce/internal/SalesforceSession.java | 21 ++++--------
.../internal/client/AbstractClientBase.java | 12 ++++---
.../internal/client/DefaultAnalyticsApiClient.java | 2 --
.../internal/processor/AbstractRestProcessor.java | 37 ++++++++++++----------
.../processor/AbstractSalesforceProcessor.java | 30 ++++++++++++------
.../internal/processor/AnalyticsApiProcessor.java | 29 ++++++++---------
.../internal/processor/BulkApiProcessor.java | 25 ++++++++-------
.../internal/processor/CompositeApiProcessor.java | 28 ++++++++--------
.../internal/processor/XmlRestProcessor.java | 2 --
10 files changed, 94 insertions(+), 94 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 9309ab1..d476fb0 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
@@ -302,7 +302,7 @@ public class SalesforceComponent extends DefaultComponent
implements SSLContextP
return result;
}
- protected SalesforceHttpClient getHttpClient() {
+ public SalesforceHttpClient getHttpClient() {
return httpClient;
}
diff --git
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/SalesforceSession.java
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/SalesforceSession.java
index cf21315..94011e6 100644
---
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/SalesforceSession.java
+++
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/SalesforceSession.java
@@ -37,8 +37,6 @@ import java.util.concurrent.TimeoutException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.camel.CamelContext;
-import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.Service;
import org.apache.camel.component.salesforce.AuthenticationType;
import org.apache.camel.component.salesforce.SalesforceHttpClient;
import org.apache.camel.component.salesforce.SalesforceLoginConfig;
@@ -48,6 +46,7 @@ import
org.apache.camel.component.salesforce.api.utils.JsonUtils;
import org.apache.camel.component.salesforce.internal.dto.LoginError;
import org.apache.camel.component.salesforce.internal.dto.LoginToken;
import org.apache.camel.support.jsse.KeyStoreParameters;
+import org.apache.camel.support.service.ServiceSupport;
import org.apache.camel.util.ObjectHelper;
import org.eclipse.jetty.client.HttpConversation;
import org.eclipse.jetty.client.api.ContentResponse;
@@ -59,7 +58,7 @@ import org.eclipse.jetty.util.Fields;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class SalesforceSession implements Service {
+public class SalesforceSession extends ServiceSupport {
private static final String JWT_SIGNATURE_ALGORITHM = "SHA256withRSA";
@@ -345,23 +344,15 @@ public class SalesforceSession implements Service {
}
@Override
- public void start() {
+ public void doStart() throws Exception {
// auto-login at start if needed
- try {
- login(accessToken);
- } catch (SalesforceException e) {
- throw RuntimeCamelException.wrapRuntimeCamelException(e);
- }
+ login(accessToken);
}
@Override
- public void stop() {
+ public void doStop() throws Exception {
// logout
- try {
- logout();
- } catch (SalesforceException e) {
- throw RuntimeCamelException.wrapRuntimeCamelException(e);
- }
+ logout();
}
public long getTimeout() {
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 c3bb17a..70dba1d 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
@@ -40,7 +40,6 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.thoughtworks.xstream.XStream;
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;
@@ -49,6 +48,7 @@ import
org.apache.camel.component.salesforce.api.dto.RestError;
import org.apache.camel.component.salesforce.internal.PayloadFormat;
import org.apache.camel.component.salesforce.internal.SalesforceSession;
import org.apache.camel.component.salesforce.internal.dto.RestErrors;
+import org.apache.camel.support.service.ServiceSupport;
import org.eclipse.jetty.client.HttpClient;
import org.eclipse.jetty.client.HttpContentResponse;
import org.eclipse.jetty.client.api.ContentProvider;
@@ -66,7 +66,7 @@ import org.eclipse.jetty.http.HttpStatus;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public abstract class AbstractClientBase implements
SalesforceSession.SalesforceSessionListener, Service, HttpClientHolder {
+public abstract class AbstractClientBase extends ServiceSupport implements
SalesforceSession.SalesforceSessionListener, HttpClientHolder {
protected static final String APPLICATION_JSON_UTF8 =
"application/json;charset=utf-8";
protected static final String APPLICATION_XML_UTF8 =
"application/xml;charset=utf-8";
@@ -92,7 +92,6 @@ public abstract class AbstractClientBase implements
SalesforceSession.Salesforce
}
AbstractClientBase(String version, SalesforceSession session,
SalesforceHttpClient httpClient, SalesforceLoginConfig loginConfig, int
terminationTimeout) throws SalesforceException {
-
this.version = version;
this.session = session;
this.httpClient = httpClient;
@@ -101,7 +100,9 @@ public abstract class AbstractClientBase implements
SalesforceSession.Salesforce
}
@Override
- public void start() {
+ protected void doStart() throws Exception {
+ super.doStart();
+
// local cache
accessToken = session.getAccessToken();
if (accessToken == null && !loginConfig.isLazyLogin()) {
@@ -120,7 +121,8 @@ public abstract class AbstractClientBase implements
SalesforceSession.Salesforce
}
@Override
- public void stop() {
+ public void doStop() throws Exception {
+ super.doStop();
if (inflightRequests != null) {
inflightRequests.arrive();
if (!inflightRequests.isTerminated()) {
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 ad45e01..9bfe64f 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
@@ -61,13 +61,11 @@ public class DefaultAnalyticsApiClient extends
AbstractClientBase implements Ana
public DefaultAnalyticsApiClient(String version, SalesforceSession
session, SalesforceHttpClient httpClient, SalesforceLoginConfig loginConfig)
throws SalesforceException {
super(version, session, httpClient, loginConfig);
-
objectMapper = JsonUtils.createObjectMapper();
}
@Override
public void getRecentReports(final Map<String, List<String>> headers,
final RecentReportsResponseCallback callback) {
-
final Request request = getRequest(HttpMethod.GET, reportsUrl(),
headers);
doHttpRequest(request, new ClientResponseCallback() {
diff --git
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/AbstractRestProcessor.java
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/AbstractRestProcessor.java
index 95e5aae..5a2c8ed 100644
---
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/AbstractRestProcessor.java
+++
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/AbstractRestProcessor.java
@@ -67,20 +67,33 @@ public abstract class AbstractRestProcessor extends
AbstractSalesforceProcessor
private RestClient restClient;
private Map<String, Class<?>> classMap;
+ private NotFoundBehaviour notFoundBehaviour;
- private final NotFoundBehaviour notFoundBehaviour;
-
- public AbstractRestProcessor(SalesforceEndpoint endpoint) throws
SalesforceException {
+ public AbstractRestProcessor(SalesforceEndpoint endpoint) {
super(endpoint);
+ }
- final SalesforceEndpointConfig configuration =
endpoint.getConfiguration();
- notFoundBehaviour = configuration.getNotFoundBehaviour();
+ @Override
+ protected void doStart() throws Exception {
+ super.doStart();
+ final SalesforceEndpointConfig configuration =
endpoint.getConfiguration();
+ this.notFoundBehaviour = configuration.getNotFoundBehaviour();
final SalesforceComponent salesforceComponent =
endpoint.getComponent();
+ if (restClient == null) {
+ this.restClient =
salesforceComponent.createRestClientFor(endpoint);
+ }
+ if (classMap == null) {
+ this.classMap = endpoint.getComponent().getClassMap();
+ }
- this.restClient = salesforceComponent.createRestClientFor(endpoint);
+ ServiceHelper.startService(restClient);
+ }
- this.classMap = endpoint.getComponent().getClassMap();
+ @Override
+ protected void doStop() throws Exception {
+ super.doStop();
+ ServiceHelper.stopService(restClient);
}
// used in unit tests
@@ -93,16 +106,6 @@ public abstract class AbstractRestProcessor extends
AbstractSalesforceProcessor
}
@Override
- public void start() {
- ServiceHelper.startService(restClient);
- }
-
- @Override
- public void stop() {
- ServiceHelper.stopService(restClient);
- }
-
- @Override
public final boolean process(final Exchange exchange, final AsyncCallback
callback) {
// pre-process request message
try {
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 9cafd84..7afef35 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
@@ -29,10 +29,11 @@ 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;
+import org.apache.camel.support.service.ServiceSupport;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public abstract class AbstractSalesforceProcessor implements
SalesforceProcessor {
+public abstract class AbstractSalesforceProcessor extends ServiceSupport
implements SalesforceProcessor {
protected static final boolean NOT_OPTIONAL = false;
protected static final boolean IS_OPTIONAL = true;
@@ -43,23 +44,32 @@ public abstract class AbstractSalesforceProcessor
implements SalesforceProcessor
protected final SalesforceEndpoint endpoint;
protected final Map<String, Object> endpointConfigMap;
-
protected final OperationName operationName;
- protected final SalesforceSession session;
- protected final SalesforceHttpClient httpClient;
- protected final SalesforceLoginConfig loginConfig;
- protected final boolean rawPayload;
+
+ protected SalesforceSession session;
+ protected SalesforceHttpClient httpClient;
+ protected SalesforceLoginConfig loginConfig;
+ protected boolean rawPayload;
public AbstractSalesforceProcessor(final SalesforceEndpoint endpoint) {
this.endpoint = endpoint;
- operationName = endpoint.getOperationName();
- endpointConfigMap = endpoint.getConfiguration().toValueMap();
+ this.operationName = endpoint.getOperationName();
+ this.endpointConfigMap = endpoint.getConfiguration().toValueMap();
+ }
+
+ @Override
+ protected void doStart() throws Exception {
+ super.doStart();
- final SalesforceComponent component = endpoint.getComponent();
+ SalesforceComponent component = endpoint.getComponent();
session = component.getSession();
loginConfig = component.getLoginConfig();
- httpClient = endpoint.getConfiguration().getHttpClient();
rawPayload = endpoint.getConfiguration().isRawPayload();
+
+ httpClient = endpoint.getConfiguration().getHttpClient();
+ if (httpClient == null) {
+ httpClient = component.getHttpClient();
+ }
}
@Override
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 3ecfde1..b03cba4 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
@@ -34,10 +34,8 @@ import
org.apache.camel.component.salesforce.internal.client.AnalyticsApiClient;
import
org.apache.camel.component.salesforce.internal.client.DefaultAnalyticsApiClient;
import org.apache.camel.support.service.ServiceHelper;
-import static
org.apache.camel.component.salesforce.SalesforceEndpointConfig.INCLUDE_DETAILS;
-import static
org.apache.camel.component.salesforce.SalesforceEndpointConfig.INSTANCE_ID;
-import static
org.apache.camel.component.salesforce.SalesforceEndpointConfig.REPORT_ID;
-import static
org.apache.camel.component.salesforce.SalesforceEndpointConfig.REPORT_METADATA;
+
+import static org.apache.camel.component.salesforce.SalesforceEndpointConfig.*;
/**
* Exchange processor for Analytics API.
@@ -46,10 +44,21 @@ public class AnalyticsApiProcessor extends
AbstractSalesforceProcessor {
private AnalyticsApiClient analyticsClient;
- public AnalyticsApiProcessor(SalesforceEndpoint endpoint) throws
SalesforceException {
+ public AnalyticsApiProcessor(SalesforceEndpoint endpoint) {
super(endpoint);
+ }
+ @Override
+ protected void doStart() throws Exception {
+ super.doStart();
this.analyticsClient = new
DefaultAnalyticsApiClient((String)endpointConfigMap.get(SalesforceEndpointConfig.API_VERSION),
session, httpClient, loginConfig);
+ ServiceHelper.startService(analyticsClient);
+ }
+
+ @Override
+ protected void doStop() throws Exception {
+ super.doStop();
+ ServiceHelper.stopService(analyticsClient);
}
@Override
@@ -208,14 +217,4 @@ public class AnalyticsApiProcessor extends
AbstractSalesforceProcessor {
callback.done(false);
}
- @Override
- public void start() {
- ServiceHelper.startService(analyticsClient);
- }
-
- @Override
- public void stop() {
- // stop the client
- ServiceHelper.stopService(analyticsClient);
- }
}
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 ff7b1f9..bd88b4a 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
@@ -48,10 +48,22 @@ public class BulkApiProcessor extends
AbstractSalesforceProcessor {
private BulkApiClient bulkClient;
- public BulkApiProcessor(SalesforceEndpoint endpoint) throws
SalesforceException {
+ public BulkApiProcessor(SalesforceEndpoint endpoint) {
super(endpoint);
+ }
+ @Override
+ protected void doStart() throws Exception {
+ super.doStart();
this.bulkClient = new
DefaultBulkApiClient((String)endpointConfigMap.get(SalesforceEndpointConfig.API_VERSION),
session, httpClient, loginConfig);
+ ServiceHelper.startService(bulkClient);
+ }
+
+
+ @Override
+ public void doStop() {
+ // stop the client
+ ServiceHelper.stopService(bulkClient);
}
@Override
@@ -414,15 +426,4 @@ public class BulkApiProcessor extends
AbstractSalesforceProcessor {
// signal exchange completion
callback.done(false);
}
-
- @Override
- public void start() {
- ServiceHelper.startService(bulkClient);
- }
-
- @Override
- public void stop() {
- // stop the client
- ServiceHelper.stopService(bulkClient);
- }
}
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 64c291e..6dee3ac 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
@@ -48,13 +48,16 @@ public final class CompositeApiProcessor extends
AbstractSalesforceProcessor {
}
- private final CompositeApiClient compositeClient;
+ private CompositeApiClient compositeClient;
+ private PayloadFormat format;
- private final PayloadFormat format;
-
- public CompositeApiProcessor(final SalesforceEndpoint endpoint) throws
SalesforceException {
+ public CompositeApiProcessor(final SalesforceEndpoint endpoint) {
super(endpoint);
+ }
+ @Override
+ protected void doStart() throws Exception {
+ super.doStart();
final SalesforceEndpointConfig configuration =
endpoint.getConfiguration();
final String apiVersion = configuration.getApiVersion();
@@ -63,9 +66,14 @@ public final class CompositeApiProcessor extends
AbstractSalesforceProcessor {
if (!EnumSet.of(PayloadFormat.JSON,
PayloadFormat.XML).contains(format)) {
throw new SalesforceException("Unsupported format: " + format, 0);
}
-
compositeClient = new DefaultCompositeApiClient(configuration, format,
apiVersion, session, httpClient, loginConfig);
+ ServiceHelper.startService(compositeClient);
+ }
+ @Override
+ protected void doStop() throws Exception {
+ super.doStop();
+ ServiceHelper.stopService(compositeClient);
}
@Override
@@ -89,16 +97,6 @@ public final class CompositeApiProcessor extends
AbstractSalesforceProcessor {
}
}
- @Override
- public void start() {
- ServiceHelper.startService(compositeClient);
- }
-
- @Override
- public void stop() {
- ServiceHelper.stopService(compositeClient);
- }
-
void processCompositeBatchResponse(final Exchange exchange, final
Optional<SObjectBatchResponse> responseBody, final Map<String, String> headers,
final SalesforceException exception,
final AsyncCallback callback) {
try {
diff --git
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/XmlRestProcessor.java
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/XmlRestProcessor.java
index 7861491..455b084 100644
---
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/XmlRestProcessor.java
+++
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/XmlRestProcessor.java
@@ -66,12 +66,10 @@ public class XmlRestProcessor extends AbstractRestProcessor
{
public XmlRestProcessor(SalesforceEndpoint endpoint) throws
SalesforceException {
super(endpoint);
-
}
@Override
protected void processRequest(Exchange exchange) throws
SalesforceException {
-
switch (operationName) {
case GET_VERSIONS:
exchange.setProperty(RESPONSE_CLASS, Versions.class);