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"}]}
Like this:
Like Loading...