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 <claus.ib...@gmail.com>
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);

Reply via email to