You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by je...@apache.org on 2022/03/01 17:27:08 UTC

[camel] branch camel-3.14.x updated: CAMEL-17558: Fix salesforce lazy login

This is an automated email from the ASF dual-hosted git repository.

jeremyross pushed a commit to branch camel-3.14.x
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/camel-3.14.x by this push:
     new b66db9e  CAMEL-17558: Fix salesforce lazy login
b66db9e is described below

commit b66db9e813f0f952524674f725736f98c06f5fe4
Author: Jeremy Ross <je...@gmail.com>
AuthorDate: Tue Mar 1 09:54:06 2022 -0600

    CAMEL-17558: Fix salesforce lazy login
---
 .../salesforce/SalesforceLoginConfig.java          |  7 ++++
 .../salesforce/internal/SalesforceSession.java     |  4 --
 .../salesforce/AbstractSalesforceTestBase.java     |  3 +-
 ...tSalesforceTestBase.java => LazyLoginTest.java} | 49 +++++++++-------------
 4 files changed, 29 insertions(+), 34 deletions(-)

diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceLoginConfig.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceLoginConfig.java
index c97a9cc..b969aaa 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceLoginConfig.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceLoginConfig.java
@@ -93,6 +93,10 @@ public class SalesforceLoginConfig {
      */
     public void setLoginUrl(String loginUrl) {
         this.loginUrl = loginUrl;
+        if (loginUrl != null) {
+            // strip trailing slash
+            this.loginUrl = loginUrl.endsWith("/") ? loginUrl.substring(0, loginUrl.length() - 1) : loginUrl;
+        }
     }
 
     public String getClientId() {
@@ -227,6 +231,9 @@ public class SalesforceLoginConfig {
     }
 
     public void validate() {
+        if (lazyLogin) {
+            return;
+        }
         ObjectHelper.notNull(loginUrl, "loginUrl");
         ObjectHelper.notNull(clientId, "clientId");
 
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 a0a0c84..4072862 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
@@ -97,10 +97,6 @@ public class SalesforceSession extends ServiceSupport {
         this.timeout = timeout;
         this.config = config;
 
-        // strip trailing '/'
-        String loginUrl = config.getLoginUrl();
-        config.setLoginUrl(loginUrl.endsWith("/") ? loginUrl.substring(0, loginUrl.length() - 1) : loginUrl);
-
         this.objectMapper = JsonUtils.createObjectMapper();
         this.listeners = new CopyOnWriteArraySet<>();
     }
diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/AbstractSalesforceTestBase.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/AbstractSalesforceTestBase.java
index dd6b88f..1772fd4 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/AbstractSalesforceTestBase.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/AbstractSalesforceTestBase.java
@@ -27,6 +27,7 @@ import org.slf4j.LoggerFactory;
 public abstract class AbstractSalesforceTestBase extends CamelTestSupport {
 
     protected final Logger log = LoggerFactory.getLogger(getClass());
+    protected SalesforceComponent component;
 
     @Override
     protected RouteBuilder createRouteBuilder() throws Exception {
@@ -46,7 +47,7 @@ public abstract class AbstractSalesforceTestBase extends CamelTestSupport {
 
     protected void createComponent() throws Exception {
         // create the component
-        SalesforceComponent component = new SalesforceComponent();
+        component = new SalesforceComponent();
         final SalesforceEndpointConfig config = new SalesforceEndpointConfig();
         config.setApiVersion(System.getProperty("apiVersion", salesforceApiVersionToUse()));
         component.setConfig(config);
diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/AbstractSalesforceTestBase.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/LazyLoginTest.java
similarity index 61%
copy from components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/AbstractSalesforceTestBase.java
copy to components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/LazyLoginTest.java
index dd6b88f..9dee1e3 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/AbstractSalesforceTestBase.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/LazyLoginTest.java
@@ -18,39 +18,35 @@ package org.apache.camel.component.salesforce;
 
 import java.util.HashMap;
 
-import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.salesforce.dto.generated.Merchandise__c;
-import org.apache.camel.test.junit5.CamelTestSupport;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.junit.jupiter.api.Test;
 
-public abstract class AbstractSalesforceTestBase extends CamelTestSupport {
+public class LazyLoginTest extends AbstractSalesforceTestBase {
 
-    protected final Logger log = LoggerFactory.getLogger(getClass());
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        // create the test component
-        createComponent();
-
-        return doCreateRouteBuilder();
-    }
-
-    protected RouteBuilder doCreateRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-            }
-        };
+    @Test
+    public void lazyLoginDoesNotThrowExceptions() throws Exception {
+        // If we got this far, then createComponent() succeeded without an exception related to lazy login
+        // Now we just need to make sure credentials provided after startup work
+        final SalesforceLoginConfig config = LoginConfigHelper.getLoginConfig();
+        component.getLoginConfig().setLoginUrl(config.getLoginUrl());
+        component.getLoginConfig().setClientId(config.getClientId());
+        component.getLoginConfig().setClientSecret(config.getClientSecret());
+        component.getLoginConfig().setUserName(config.getUserName());
+        component.getLoginConfig().setPassword(config.getPassword());
+        component.getLoginConfig().setKeystore(config.getKeystore());
+        component.getLoginConfig().setRefreshToken(config.getRefreshToken());
+        component.getSession().login(null);
     }
 
+    @Override
     protected void createComponent() throws Exception {
-        // create the component
-        SalesforceComponent component = new SalesforceComponent();
+        // create the component, but do not set any credentials or login info
+        component = new SalesforceComponent();
+        component.setLazyLogin(true);
+
         final SalesforceEndpointConfig config = new SalesforceEndpointConfig();
         config.setApiVersion(System.getProperty("apiVersion", salesforceApiVersionToUse()));
         component.setConfig(config);
-        component.setLoginConfig(LoginConfigHelper.getLoginConfig());
 
         HashMap<String, Object> clientProperties = new HashMap<>();
         clientProperties.put("timeout", "60000");
@@ -65,9 +61,4 @@ public abstract class AbstractSalesforceTestBase extends CamelTestSupport {
         // add it to context
         context().addComponent("salesforce", component);
     }
-
-    protected String salesforceApiVersionToUse() {
-        return SalesforceEndpointConfig.DEFAULT_VERSION;
-    }
-
 }