Spring Configuration to test integration to Salesforce using PartnerConnection, EnterpriseConnection and BulkConnection. Create a properties file called salesforcesync.properties with all the login details
salesforcesync.properties
salesforce.sandbox.username=***your username ***
salesforce.sandbox.password=***your password + security token ***
salesforce.sandbox.url=https://test.salesforce.com/services/Soap/u/29.0
salesforce.sandbox.enterprise.url=https://test.salesforce.com/services/Soap/c/29.0/
salesforce.sandbox.version=29.0
salesforce.production.username=***your username ***
salesforce.production.password=***your password + security token ***
salesforce.production.url=https://login.salesforce.com/services/Soap/u/29.0
salesforce.production.enterprise.url=https://login.salesforce.com/services/Soap/c/29.0
salesforce.production.version=29.0
Salesforce Authentication Spring Configuration
package com.sforce.authentication;
import javax.inject.Inject;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import com.sforce.async.AsyncApiException;
import com.sforce.async.BulkConnection;
import com.sforce.soap.partner.Connector;
import com.sforce.soap.partner.PartnerConnection;
import com.sforce.ws.ConnectionException;
import com.sforce.ws.ConnectorConfig;
/**
* @author tmichels
*/
@PropertySource("classpath:/salesforcesync.properties")
@Configuration
public class SalesforceAuthenticationConfigImpl implements SalesforceAuthenticationConfig {
@Inject
private Environment environment;
private PartnerConnection partnerConnection = null;
private BulkConnection bulkConnection = null;
@Bean(name="loginToProductionSalesforce")
public PartnerConnection loginToProductionSalesforce() {
try {
ConnectorConfig config = new ConnectorConfig();
config.setUsername(environment.getProperty("salesforce.production.username"));
config.setPassword(environment.getProperty("salesforce.production.password"));
partnerConnection = Connector.newConnection(config);
} catch (ConnectionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return partnerConnection;
}
@Bean(name="loginToSandboxSalesforce")
public PartnerConnection loginToSandboxSalesforce() {
try {
ConnectorConfig config = new ConnectorConfig();
config.setUsername(environment.getProperty("salesforce.sandbox.username"));
config.setPassword(environment.getProperty("salesforce.sandbox.password"));
config.setAuthEndpoint(environment.getProperty("salesforce.sandbox.url"));
partnerConnection = Connector.newConnection(config);
} catch (ConnectionException ce) {
ce.printStackTrace();
}
return partnerConnection;
}
@Bean(name="bulkLoginToProductionSalesforce")
public BulkConnection bulkLoginToProductionSalesforce() {
try {
ConnectorConfig partnerConfig = new ConnectorConfig();
partnerConfig.setUsername(environment.getProperty("salesforce.production.username"));
partnerConfig.setPassword(environment.getProperty("salesforce.production.password"));
partnerConfig.setAuthEndpoint(environment.getProperty("salesforce.production.url"));
partnerConnection = Connector.newConnection(partnerConfig);
ConnectorConfig config = new ConnectorConfig();
config.setSessionId(partnerConfig.getSessionId());
String soapEndpoint = partnerConfig.getServiceEndpoint();
String restEndpoint = soapEndpoint.substring(0, soapEndpoint.indexOf("Soap/"))
+ "async/" + environment.getProperty("salesforce.sandbox.version");
config.setRestEndpoint(restEndpoint);
// This should only be false when doing debugging.
config.setCompression(true);
// Set this to true to see HTTP requests and responses on stdout
config.setTraceMessage(false);
bulkConnection = new BulkConnection(config);
} catch (AsyncApiException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ConnectionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return bulkConnection;
}
@Bean(name="bulkLoginToSandboxSalesforce")
public BulkConnection bulkLoginToSandboxSalesforce() {
try {
ConnectorConfig partnerConfig = new ConnectorConfig();
partnerConfig.setUsername(environment.getProperty("salesforce.sandbox.username"));
partnerConfig.setPassword(environment.getProperty("salesforce.sandbox.password"));
partnerConfig.setAuthEndpoint(environment.getProperty("salesforce.sandbox.url"));
partnerConnection = Connector.newConnection(partnerConfig);
ConnectorConfig bulkconfig = new ConnectorConfig();
bulkconfig.setSessionId(partnerConfig.getSessionId());
String soapEndpoint = partnerConfig.getServiceEndpoint();
String restEndpoint = soapEndpoint.substring(0, soapEndpoint.indexOf("Soap/"))
+ "async/" + environment.getProperty("salesforce.sandbox.version");
bulkconfig.setRestEndpoint(restEndpoint);
// This should only be false when doing debugging.
bulkconfig.setCompression(true);
// Set this to true to see HTTP requests and responses on stdout
bulkconfig.setTraceMessage(false);
bulkConnection = new BulkConnection(bulkconfig);
} catch (AsyncApiException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ConnectionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return bulkConnection;
}
@Bean(name="loginToSalesforceSandboxEnterprise")
public EnterpriseConnection loginToSandboxSalesforceEnterprise() {
try {
ConnectorConfig config = new ConnectorConfig();
config.setUsername(environment.getProperty("salesforce.sandbox.username"));
config.setPassword(environment.getProperty("salesforce.sandbox.password"));
config.setAuthEndpoint(environment.getProperty("salesforce.sandbox.enterprise.url"));
config.setValidateSchema(true);
config.setCompression(false);
config.setConnectionTimeout(360000);
config.setTraceMessage(true);
config.setPrettyPrintXml(true);
enterpriseConnection = new EnterpriseConnection(config);
} catch (ConnectionException ce) {
ce.printStackTrace();
}
return enterpriseConnection;
}
@Bean(name="loginToSalesforceProductionEnterprise")
public EnterpriseConnection loginToProductionSalesforceEnterprise() {
try {
ConnectorConfig config = new ConnectorConfig();
config.setUsername(environment.getProperty("salesforce.production.username"));
config.setPassword(environment.getProperty("salesforce.production.password"));
config.setAuthEndpoint(environment.getProperty("salesforce.production.url"));
config.setValidateSchema(true);
config.setCompression(false);
config.setConnectionTimeout(360000);
config.setTraceMessage(true);
config.setPrettyPrintXml(true);
enterpriseConnection = new EnterpriseConnection(config);
} catch (ConnectionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return enterpriseConnection;
}
}
Junit test class to assert login was successful
package com.sforce.authentication;
import static org.junit.Assert.*;
import javax.inject.Inject;
import javax.inject.Named;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.support.AnnotationConfigContextLoader;
import com.sforce.async.BulkConnection;
import com.sforce.authentication.SalesforceAuthenticationConfig;
import com.sforce.authentication.SalesforceAuthenticationConfigImpl;
import com.sforce.soap.partner.PartnerConnection;
import com.sforce.ws.ConnectionException;
/**
* @author tmichels
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader=AnnotationConfigContextLoader.class, classes={SalesforceAuthenticationConfigImpl.class})
public class SalesforceAuthenticationServiceTest {
@Inject @Named("loginToProductionSalesforce") PartnerConnection loginToProductionPartner;
@Inject @Named("loginToSandboxSalesforce") PartnerConnection loginToSandboxPartner;
@Inject @Named("bulkLoginToProductionSalesforce") BulkConnection loginToProductionBulkConnection;
@Inject @Named("bulkLoginToSandboxSalesforce") BulkConnection loginToSandboxBulkConnection;
@Inject @Named("loginToSalesforceSandboxEnterprise") EnterpriseConnection loginToSalesforceEnterpriseConnection;
@Test
public void testLoginToProductionSalesforce() {
assertNotNull(loginToProductionPartner.getConfig().getSessionId());
try {
loginToProductionPartner.logout();
} catch (ConnectionException e) {
e.printStackTrace();
}
}
@Test
public void testLoginToSandboxSalesforce(){
assertNotNull(loginToSandboxPartner.getConfig().getSessionId());
try {
loginToSandboxPartner.logout();
} catch (ConnectionException e) {
e.printStackTrace();
}
}
@Test
public void testBulkLoginToProductionSalesforce(){
assertNotNull(loginToProductionBulkConnection.getConfig().getSessionId());
}
@Test
public void testBulkLoginToSandboxSalesforce(){
assertNotNull(loginToSandboxBulkConnection.getConfig().getSessionId());
}
@Test
public void testLoginToSalesforceEnterprise(){
assertNotNull(loginToSalesforceEnterpriseConnection.getConfig().getSessionId());
}
}
Like this:
Like Loading...