Search in sources :

Example 1 with BulkConnection

use of com.sforce.async.BulkConnection in project tdi-studio-se by Talend.

the class SforceOAuthBulkConnection method init.

private void init() throws Exception {
    config = new ConnectorConfig();
    // This should only be false when doing debugging.
    config.setCompression(needCompression);
    // Set this to true to see HTTP requests and responses on stdout
    config.setTraceMessage(needTraceMessage);
    renewSession();
    connection = new BulkConnection(config);
}
Also used : ConnectorConfig(com.sforce.ws.ConnectorConfig) BulkConnection(com.sforce.async.BulkConnection)

Example 2 with BulkConnection

use of com.sforce.async.BulkConnection in project components by Talend.

the class SalesforceDataprepSource method connectBulk.

protected BulkConnection connectBulk(ConnectorConfig config) throws ComponentException {
    /*
         * When PartnerConnection is instantiated, a login is implicitly executed and, if successful, a valid session is
         * stored in the ConnectorConfig instance. Use this key to initialize a BulkConnection:
         */
    ConnectorConfig bulkConfig = new ConnectorConfig();
    bulkConfig.setSessionId(config.getSessionId());
    // For session renew
    bulkConfig.setSessionRenewer(config.getSessionRenewer());
    bulkConfig.setUsername(config.getUsername());
    bulkConfig.setPassword(config.getPassword());
    /*
         * The endpoint for the Bulk API service is the same as for the normal SOAP uri until the /Soap/ part. From here
         * it's '/async/versionNumber'
         */
    String soapEndpoint = config.getServiceEndpoint();
    // set it by a default property file
    // Service endpoint should be like this:
    // https://ap1.salesforce.com/services/Soap/u/37.0/00D90000000eSq3
    String apiVersion = soapEndpoint.substring(soapEndpoint.lastIndexOf("/services/Soap/u/") + 17);
    apiVersion = apiVersion.substring(0, apiVersion.indexOf("/"));
    String restEndpoint = soapEndpoint.substring(0, soapEndpoint.indexOf("Soap/")) + "async/" + apiVersion;
    bulkConfig.setRestEndpoint(restEndpoint);
    // This should only be false when doing debugging.
    bulkConfig.setCompression(true);
    bulkConfig.setTraceMessage(false);
    bulkConfig.setValidateSchema(false);
    try {
        return new BulkConnection(bulkConfig);
    } catch (AsyncApiException e) {
        throw new ComponentException(e);
    }
}
Also used : ConnectorConfig(com.sforce.ws.ConnectorConfig) ComponentException(org.talend.components.api.exception.ComponentException) BulkConnection(com.sforce.async.BulkConnection) AsyncApiException(com.sforce.async.AsyncApiException)

Example 3 with BulkConnection

use of com.sforce.async.BulkConnection in project tdi-studio-se by Talend.

the class SforceBasicBulkConnection method init.

private void init() throws Exception {
    config = new ConnectorConfig();
    setProxyToConnection(config);
    // This should only be false when doing debugging.
    config.setCompression(needCompression);
    // Set this to true to see HTTP requests and responses on stdout
    config.setTraceMessage(needTraceMessage);
    renewSession();
    connection = new BulkConnection(config);
}
Also used : ConnectorConfig(com.sforce.ws.ConnectorConfig) BulkConnection(com.sforce.async.BulkConnection)

Example 4 with BulkConnection

use of com.sforce.async.BulkConnection in project incubator-gobblin by apache.

the class SalesforceExtractor method bulkApiLogin.

/**
 * Login to salesforce
 * @return login status
 */
public boolean bulkApiLogin() throws Exception {
    log.info("Authenticating salesforce bulk api");
    boolean success = false;
    String hostName = this.workUnitState.getProp(ConfigurationKeys.SOURCE_CONN_HOST_NAME);
    String apiVersion = this.workUnitState.getProp(ConfigurationKeys.SOURCE_CONN_VERSION);
    if (Strings.isNullOrEmpty(apiVersion)) {
        apiVersion = "29.0";
    }
    String soapAuthEndPoint = hostName + SALESFORCE_SOAP_SERVICE + "/" + apiVersion;
    try {
        ConnectorConfig partnerConfig = new ConnectorConfig();
        if (super.workUnitState.contains(ConfigurationKeys.SOURCE_CONN_USE_PROXY_URL) && !super.workUnitState.getProp(ConfigurationKeys.SOURCE_CONN_USE_PROXY_URL).isEmpty()) {
            partnerConfig.setProxy(super.workUnitState.getProp(ConfigurationKeys.SOURCE_CONN_USE_PROXY_URL), super.workUnitState.getPropAsInt(ConfigurationKeys.SOURCE_CONN_USE_PROXY_PORT));
        }
        String accessToken = sfConnector.getAccessToken();
        if (accessToken == null) {
            boolean isConnectSuccess = sfConnector.connect();
            if (isConnectSuccess) {
                accessToken = sfConnector.getAccessToken();
            }
        }
        if (accessToken != null) {
            String serviceEndpoint = sfConnector.getInstanceUrl() + SALESFORCE_SOAP_SERVICE + "/" + apiVersion;
            partnerConfig.setSessionId(accessToken);
            partnerConfig.setServiceEndpoint(serviceEndpoint);
        } else {
            String securityToken = this.workUnitState.getProp(ConfigurationKeys.SOURCE_CONN_SECURITY_TOKEN);
            String password = PasswordManager.getInstance(this.workUnitState).readPassword(this.workUnitState.getProp(ConfigurationKeys.SOURCE_CONN_PASSWORD));
            partnerConfig.setUsername(this.workUnitState.getProp(ConfigurationKeys.SOURCE_CONN_USERNAME));
            partnerConfig.setPassword(password + securityToken);
        }
        partnerConfig.setAuthEndpoint(soapAuthEndPoint);
        new PartnerConnection(partnerConfig);
        String soapEndpoint = partnerConfig.getServiceEndpoint();
        String restEndpoint = soapEndpoint.substring(0, soapEndpoint.indexOf("Soap/")) + "async/" + apiVersion;
        ConnectorConfig config = new ConnectorConfig();
        config.setSessionId(partnerConfig.getSessionId());
        config.setRestEndpoint(restEndpoint);
        config.setCompression(true);
        config.setTraceFile("traceLogs.txt");
        config.setTraceMessage(false);
        config.setPrettyPrintXml(true);
        if (super.workUnitState.contains(ConfigurationKeys.SOURCE_CONN_USE_PROXY_URL) && !super.workUnitState.getProp(ConfigurationKeys.SOURCE_CONN_USE_PROXY_URL).isEmpty()) {
            config.setProxy(super.workUnitState.getProp(ConfigurationKeys.SOURCE_CONN_USE_PROXY_URL), super.workUnitState.getPropAsInt(ConfigurationKeys.SOURCE_CONN_USE_PROXY_PORT));
        }
        this.bulkConnection = new BulkConnection(config);
        success = true;
    } catch (RuntimeException e) {
        throw new RuntimeException("Failed to connect to salesforce bulk api; error - " + e, e);
    }
    return success;
}
Also used : ConnectorConfig(com.sforce.ws.ConnectorConfig) PartnerConnection(com.sforce.soap.partner.PartnerConnection) BulkConnection(com.sforce.async.BulkConnection)

Example 5 with BulkConnection

use of com.sforce.async.BulkConnection in project components by Talend.

the class SalesforceSourceOrSink method connectBulk.

protected BulkConnection connectBulk(ConnectorConfig config) throws ComponentException {
    final SalesforceConnectionProperties connProps = getConnectionProperties();
    /*
         * When PartnerConnection is instantiated, a login is implicitly executed and, if successful, a valid session id is
         * stored in the ConnectorConfig instance. Use this key to initialize a BulkConnection:
         */
    ConnectorConfig bulkConfig = new ConnectorConfig();
    setProxy(bulkConfig);
    bulkConfig.setSessionId(config.getSessionId());
    // For session renew
    bulkConfig.setSessionRenewer(config.getSessionRenewer());
    bulkConfig.setUsername(config.getUsername());
    bulkConfig.setPassword(config.getPassword());
    /*
         * The endpoint for the Bulk API service is the same as for the normal SOAP uri until the /Soap/ part. From here
         * it's '/async/versionNumber'
         */
    String soapEndpoint = config.getServiceEndpoint();
    // Service endpoint should be like this:
    // https://ap1.salesforce.com/services/Soap/u/37.0/00D90000000eSq3
    String apiVersion = soapEndpoint.substring(soapEndpoint.lastIndexOf("/services/Soap/u/") + 17);
    apiVersion = apiVersion.substring(0, apiVersion.indexOf("/"));
    String restEndpoint = soapEndpoint.substring(0, soapEndpoint.indexOf("Soap/")) + "async/" + apiVersion;
    bulkConfig.setRestEndpoint(restEndpoint);
    // This should only be false when doing debugging.
    bulkConfig.setCompression(connProps.needCompression.getValue());
    bulkConfig.setTraceMessage(connProps.httpTraceMessage.getValue());
    bulkConfig.setValidateSchema(false);
    try {
        return new BulkConnection(bulkConfig);
    } catch (AsyncApiException e) {
        throw new ComponentException(e);
    }
}
Also used : SalesforceConnectionProperties(org.talend.components.salesforce.SalesforceConnectionProperties) ConnectorConfig(com.sforce.ws.ConnectorConfig) ComponentException(org.talend.components.api.exception.ComponentException) BulkConnection(com.sforce.async.BulkConnection) AsyncApiException(com.sforce.async.AsyncApiException)

Aggregations

BulkConnection (com.sforce.async.BulkConnection)5 ConnectorConfig (com.sforce.ws.ConnectorConfig)5 AsyncApiException (com.sforce.async.AsyncApiException)2 ComponentException (org.talend.components.api.exception.ComponentException)2 PartnerConnection (com.sforce.soap.partner.PartnerConnection)1 SalesforceConnectionProperties (org.talend.components.salesforce.SalesforceConnectionProperties)1