1. Setup SalesforceLoginConfig
2. Setup SalesforceCamelEndpointConfig
3. Setup SalesforceCamelComponent
4. Setup SalesforceCamelRouteConfig
5. Run SalesforceCamelIntegrationTest
1. Setup SalesforceLoginConfig
package com.sforce.core.camel; import org.apache.camel.CamelContext; import org.apache.camel.component.salesforce.SalesforceComponent; import org.apache.camel.component.salesforce.SalesforceEndpointConfig; import org.apache.camel.component.salesforce.SalesforceLoginConfig; import org.apache.camel.impl.DefaultCamelContext; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * Created by tmichels on 4/8/15. */ @Configuration public class SalesforceCamelConfig { @Value("${SF_USERNAME}") private String username; @Value("${SF_PASSWORD}") private String password; @Value("${SF_TOKEN}") private String token; @Value("${SF_BASE_URL}") private String url; @Value("${SF_VERSION}") private String version; @Value("${SF_CLIENT_ID}") private String clientId; @Value("${SF_CLIENT_SECRET}") private String clientSecret; @Bean public SalesforceLoginConfig salesforceLoginConfig(){ SalesforceLoginConfig salesforceLoginConfig = new SalesforceLoginConfig(); salesforceLoginConfig.setUserName(username); salesforceLoginConfig.setPassword(password+token); salesforceLoginConfig.setLoginUrl(url); salesforceLoginConfig.setClientId(clientId); salesforceLoginConfig.setClientSecret(clientSecret); salesforceLoginConfig.setLazyLogin(false); return salesforceLoginConfig; } }
2. Setup SalesforceCamelEndpointConfig
package com.sforce.core.camel; import org.apache.camel.Endpoint; 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.internal.OperationName; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * Created by tmichels on 4/13/15. */ @Configuration public class SalesforceCamelEndpointConfig { @Bean public SalesforceEndpointConfig salesforceEndpointConfig(){ SalesforceEndpointConfig salesforceEndpointConfig = new SalesforceEndpointConfig(); salesforceEndpointConfig.setApiVersion("33.0"); return salesforceEndpointConfig; } }
3. Setup SalesforceCamelComponent
package com.sforce.core.camel; import org.apache.camel.component.salesforce.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; /** * Created by tmichels on 4/13/15. */ @Configuration @Import({SalesforceCamelEndpointConfig.class, SalesforceCamelConfig.class}) public class SalesforceCamelComponent { @Autowired SalesforceEndpointConfig salesforceEndpointConfig; @Autowired SalesforceLoginConfig salesforceLoginConfig; @Bean public SalesforceComponent salesforceComponent(){ SalesforceComponent salesforceComponent = new SalesforceComponent(); salesforceComponent.setConfig(salesforceEndpointConfig); salesforceComponent.setLoginConfig(salesforceLoginConfig); salesforceComponent.setPackages("com.sfore.core.camel"); return salesforceComponent; } }
4. Setup SalesforceCamelRouteConfig
package com.sforce.core.camel; import com.sforce.core.config.LcGroovyPropertiesConfig; import org.apache.camel.CamelContext; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.salesforce.SalesforceComponent; import org.apache.camel.spring.SpringCamelContext; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.*; import org.apache.camel.spring.javaconfig.SingleRouteCamelConfiguration; import org.apache.camel.spring.javaconfig.Main; /** * Created by tmichels on 4/10/15. */ @Configuration @ComponentScan({"com.sforce.core.camel"}) public class SalesforceCamelRouteConfig extends SingleRouteCamelConfiguration implements InitializingBean { @Autowired SalesforceComponent salesforceCamelComponent; public static void main(String[] args) throws Exception { Main main = new Main(); main.run(args); } @Override protected CamelContext createCamelContext() throws Exception { SpringCamelContext camelContext = new SpringCamelContext(); camelContext.setApplicationContext(getApplicationContext()); camelContext.addComponent("salesforce", salesforceCamelComponent); camelContext.addRoutes(route()); camelContext.start(); return camelContext; } @Override public void afterPropertiesSet() throws Exception {} @Bean @Override public RouteBuilder route() { return new RouteBuilder() { public void configure() { from("direct:getBasicInfo").to("salesforce:getBasicInfo").bean(BasicInfoBean.class); } }; } public static class BasicInfoBean { public void someMethod(String body) { System.out.println(">>>>>>> Salesforce Basics Info: " + body); } } }
5. Run SalesforceCamelIntegrationTest
package com.sforce.core.camel; import org.apache.camel.CamelContext; import org.apache.camel.EndpointInject; import org.apache.camel.Produce; import org.apache.camel.ProducerTemplate; import org.apache.camel.component.mock.MockEndpoint; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; /** * Created by tmichels on 7/27/15. */ @ContextConfiguration(classes = {SalesforceCamelRouteConfig.class}) @RunWith(SpringJUnit4ClassRunner.class) public class SalesforceCamelIntegrationTest { @Autowired CamelContext camelContext; @EndpointInject(uri = "direct:getBasicInfo") ProducerTemplate producer; @Test public void testCamelContext() throws Exception { String body = "Account"; producer.sendBody(body); } }
OUTPUT:
>>>>>>> Salesforce Basics Info: {"objectDescribe":{"name":"Account","label":"Account","updateable":true,"keyPrefix":"001","custom":false,"urls":{"sobject":"/services/data/v33.0/sobjects/Account","describe":"/services/data/v33.0/sobjects/Account/describe","rowTemplate":"/services/data/v33.0/sobjects/Account/{ID}","approvalLayouts":"/services/data/v33.0/sobjects/Account/describe/approvalLayouts","quickActions":"/services/data/v33.0/sobjects/Account/quickActions","listviews":"/services/data/v33.0/sobjects/Account/listviews","layouts":"/services/data/v33.0/sobjects/Account/describe/layouts","compactLayouts":"/services/data/v33.0/sobjects/Account/describe/compactLayouts"},"searchable":true,"labelPlural":"Accounts","layoutable":true,"activateable":false,"createable":true,"deprecatedAndHidden":false,"deletable":true,"customSetting":false,"feedEnabled":true,"mergeable":true,"queryable":true,"replicateable":true,"retrieveable":true,"undeletable":true,"triggerable":true},"recentItems":[{"attributes":{"type":"Account","url":"/services/data/v33.0/sobjects/Account/001W000000JhUzlIAF"},"Name":"Pope John XXIII Regional High School","Id":"001W000000JhUzlIAF"},{"attributes":{"type":"Account","url":"/services/data/v33.0/sobjects/Account/001W000000JhZFQIA3"},"Name":"A PLAZA DRIVING SCHOOL","Id":"001W000000JhZFQIA3"},{"attributes":{"type":"Account","url":"/services/data/v33.0/sobjects/Account/001W000000JgxxXIAR"},"Name":"Advanced Reproductive Care, Inc. (ARC)","Id":"001W000000JgxxXIAR"},{"attributes":{"type":"Account","url":"/services/data/v33.0/sobjects/Account/001W000000JrwqvIAB"},"Name":"name","Id":"001W000000JrwqvIAB"},{"attributes":{"type":"Account","url":"/services/data/v33.0/sobjects/Account/001W000000JhXSnIAN"},"Name":"Stella Niagara Education Park","Id":"001W000000JhXSnIAN"},{"attributes":{"type":"Account","url":"/services/data/v33.0/sobjects/Account/001W000000Jr1WOIAZ"},"Name":"A J DIANA SONS INC","Id":"001W000000Jr1WOIAZ"},{"attributes":{"type":"Account","url":"/services/data/v33.0/sobjects/Account/001W000000Jr1TIIAZ"},"Name":"A J DIANA SONS COMPANY","Id":"001W000000Jr1TIIAZ"},{"attributes":{"type":"Account","url":"/services/data/v33.0/sobjects/Account/001W000000Jr1WNIAZ"},"Name":"A J DIANA SONS INC","Id":"001W000000Jr1WNIAZ"},{"attributes":{"type":"Account","url":"/services/data/v33.0/sobjects/Account/001W000000JqzmSIAR"},"Name":"A J DIANA SONS INC","Id":"001W000000JqzmSIAR"},{"attributes":{"type":"Account","url":"/services/data/v33.0/sobjects/Account/001W000000Jq8TeIAJ"},"Name":"A J DIANA SONS COMPANY","Id":"001W000000Jq8TeIAJ"},{"attributes":{"type":"Account","url":"/services/data/v33.0/sobjects/Account/001W000000JhZLTIA3"},"Name":"name","Id":"001W000000JhZLTIA3"},{"attributes":{"type":"Account","url":"/services/data/v33.0/sobjects/Account/001W000000Jq8LVIAZ"},"Name":"A PLAZA DRIVING SCHOOL","Id":"001W000000Jq8LVIAZ"},{"attributes":{"type":"Account","url":"/services/data/v33.0/sobjects/Account/001W000000JhZBTIA3"},"Name":"A J DIANA SONS INC","Id":"001W000000JhZBTIA3"},{"attributes":{"type":"Account","url":"/services/data/v33.0/sobjects/Account/001W000000JgxwjIAB"},"Name":"[First]Name [Last]Name","Id":"001W000000JgxwjIAB"},{"attributes":{"type":"Account","url":"/services/data/v33.0/sobjects/Account/001W000000JhUlVIAV"},"Name":"Central Texas Christian School","Id":"001W000000JhUlVIAV"},{"attributes":{"type":"Account","url":"/services/data/v33.0/sobjects/Account/001W000000JhKbtIAF"},"Name":"Sylvan Learning Center - 112","Id":"001W000000JhKbtIAF"}]}
Hi team,
I have one requirement,
i want to test connection with salesforce for multiple users,
in that case how to specify the username password clientid etc… dynamically
Any hint will be appreciated