Search in sources :

Example 1 with SessionHeader

use of com.salesforce.soap.partner.SessionHeader in project tdi-studio-se by Talend.

the class SObjectsToSchema method login.

boolean login(String userName, String password) throws ServiceException {
    /**
         * Next, the sample client application initializes the binding stub. This is our main interface to the API
         * through which all calls are made. The getSoap method takes an optional parameter, (a java.net.URL) which is
         * the endpoint. For the login call, the parameter always starts with http(s)://login.salesforce.com. After
         * logging in, the sample client application changes the endpoint to the one specified in the returned
         * loginResult object.
         */
    binding = (SoapBindingStub) new SforceServiceLocator().getSoap();
    // Time out after a minute
    binding.setTimeout(60000);
    // Test operation
    LoginResult loginResult;
    try {
        System.out.println("LOGGING IN NOW....");
        loginResult = binding.login(userName, password);
    } catch (LoginFault ex) {
        // The LoginFault derives from AxisFault
        ExceptionCode exCode = ex.getExceptionCode();
        if (exCode == ExceptionCode.FUNCTIONALITY_NOT_ENABLED || exCode == ExceptionCode.INVALID_CLIENT || exCode == ExceptionCode.INVALID_LOGIN || exCode == ExceptionCode.LOGIN_DURING_RESTRICTED_DOMAIN || exCode == ExceptionCode.LOGIN_DURING_RESTRICTED_TIME || exCode == ExceptionCode.ORG_LOCKED || exCode == ExceptionCode.PASSWORD_LOCKOUT || exCode == ExceptionCode.SERVER_UNAVAILABLE || exCode == ExceptionCode.TRIAL_EXPIRED || exCode == ExceptionCode.UNSUPPORTED_CLIENT) {
            System.out.println("Please be sure that you have a valid username " + "and password.");
        } else {
            // Write the fault code to the console
            System.out.println(ex.getExceptionCode());
            // Write the fault message to the console
            System.out.println("An unexpected error has occurred." + ex.getMessage());
        }
        return false;
    } catch (Exception ex) {
        System.out.println("An unexpected error has occurred: " + ex.getMessage());
        ex.printStackTrace();
        return false;
    }
    if (loginResult.isPasswordExpired()) {
        System.out.println("An error has occurred. Your password has expired.");
        return false;
    }
    /**
         * Once the client application has logged in successfully, it will use the results of the login call to reset
         * the endpoint of the service to the virtual server instance that is servicing your organization. To do this,
         * the client application sets the ENDPOINT_ADDRESS_PROPERTY of the binding object using the URL returned from
         * the LoginResult.
         */
    binding._setProperty(SoapBindingStub.ENDPOINT_ADDRESS_PROPERTY, loginResult.getServerUrl());
    /**
         * The sample client application now has an instance of the SoapBindingStub that is pointing to the correct
         * endpoint. Next, the sample client application sets a persistent SOAP header (to be included on all subsequent
         * calls that are made with the SoapBindingStub) that contains the valid sessionId for our login credentials. To
         * do this, the sample client application creates a new SessionHeader object and set its sessionId property to
         * the sessionId property from the LoginResult object.
         */
    // Create a new session header object and add the session id
    // from the login return object
    SessionHeader sh = new SessionHeader();
    sh.setSessionId(loginResult.getSessionId());
    /**
         * Next, the sample client application calls the setHeader method of the SoapBindingStub to add the header to
         * all subsequent method calls. This header will persist until the SoapBindingStub is destroyed until the header
         * is explicitly removed. The "SessionHeader" parameter is the name of the header to be added.
         */
    // set the session header for subsequent call authentication
    binding.setHeader(new SforceServiceLocator().getServiceName().getNamespaceURI(), "SessionHeader", sh);
    return true;
}
Also used : SforceServiceLocator(com.salesforce.soap.partner.SforceServiceLocator) SessionHeader(com.salesforce.soap.partner.SessionHeader) LoginResult(com.salesforce.soap.partner.LoginResult) LoginFault(com.salesforce.soap.partner.fault.LoginFault) ExceptionCode(com.salesforce.soap.partner.fault.ExceptionCode) IOException(java.io.IOException) ServiceException(javax.xml.rpc.ServiceException) RemoteException(java.rmi.RemoteException)

Example 2 with SessionHeader

use of com.salesforce.soap.partner.SessionHeader in project tdi-studio-se by Talend.

the class Test4Feature8540 method doQuery.

public void doQuery() throws Exception {
    binding = (SoapBindingStub) new SforceServiceLocator().getSoap(new URL("https://www.salesforce.com/services/Soap/u/16.0"));
    binding.setTimeout(60000);
    LoginResult loginResult = binding.login("musicatcher@gmail.com", "1234qwer");
    binding._setProperty(SoapBindingStub.ENDPOINT_ADDRESS_PROPERTY, loginResult.getServerUrl());
    SessionHeader sh = new SessionHeader();
    sh.setSessionId(loginResult.getSessionId());
    binding.setHeader(new SforceServiceLocator().getServiceName().getNamespaceURI(), "SessionHeader", sh);
    // com.sforce.soap.partner.QueryOptions qOptions = new com.sforce.soap.partner.QueryOptions();
    // qOptions.setBatchSize(new Integer(2));
    // binding.setHeader(
    // new com.sforce.soap.partner.SforceServiceLocator()
    // .getServiceName().getNamespaceURI(),
    // "QueryOptions", qOptions);
    QueryResult qr = binding.query("SELECT Name, Type, Phone, Account.CreatedBy.CreatedBy.CreatedBy.Email, Account.Owner.city, (SELECT Contact.LastName,  Contact.FirstName " + "FROM Account.Contacts Order By Contact.LastName), (SELECT Note.Title FROM Account.Notes), Account.Owner.Country  " + "FROM Account WHERE Name !='United Oil & Gas Corp.'");
    // QueryResult qr = binding
    // .query("select Name,Id,Type from Account");
    TopQueryResult topqr = new TopQueryResult();
    topqr.processTopQueryResult(qr);
    topqr.printResult();
    List<TopRecord> allTopRecords = topqr.getAllTopRecords();
}
Also used : QueryResult(com.salesforce.soap.partner.QueryResult) SforceServiceLocator(com.salesforce.soap.partner.SforceServiceLocator) SessionHeader(com.salesforce.soap.partner.SessionHeader) LoginResult(com.salesforce.soap.partner.LoginResult) URL(java.net.URL)

Example 3 with SessionHeader

use of com.salesforce.soap.partner.SessionHeader in project tdi-studio-se by Talend.

the class SforceBasicConnection method init.

private void init() throws Exception {
    if (clientID != null) {
        co = new CallOptions();
        co.setClient(clientID);
    }
    stub = new SforceServiceStub();
    SforceManagementUtil.needCompression(stub, needCompression);
    SforceManagementUtil.setTimeout(stub, timeout);
    SforceManagementUtil.useHttpChunked(stub, useHttpChunked);
    SforceManagementUtil.setHttpProxy(stub);
    sh = new SessionHeader();
    renewSession();
}
Also used : SessionHeader(com.salesforce.soap.partner.SessionHeader) SforceServiceStub(com.salesforce.soap.partner.SforceServiceStub) CallOptions(com.salesforce.soap.partner.CallOptions)

Example 4 with SessionHeader

use of com.salesforce.soap.partner.SessionHeader in project tdi-studio-se by Talend.

the class PartnerSamples method login.

/*
     * login sample Prompts for username and password, set class variable binding resets the url for the binding and
     * adds the session header to the binding class variable
     */
private boolean login() {
    un = getUserInput("Enter user name: ");
    if (un.length() == 0) {
        return false;
    }
    pw = getUserInput("Enter password: ");
    if (pw.length() == 0) {
        return false;
    }
    // Provide feed back while we create the web service binding
    System.out.println("Creating the binding to the web service...");
    /*
         * There are 2 ways to get the binding, one by passing a url to the getSoap() method of the
         * SforceServiceLocator, the other by not passing a url. In the second case the binding will use the url
         * contained in the wsdl file when the proxy was generated.
         */
    try {
        binding = (SoapBindingStub) new SforceServiceLocator().getSoap();
    } catch (ServiceException ex) {
        System.out.println("ERROR: createing binding to soap service, error was: \n" + ex.getMessage());
        System.out.print("Hit return to continue...");
        return false;
    }
    // Time out after a minute
    binding.setTimeout(60000);
    // binding._setProperty(Stub.ENDPOINT_ADDRESS_PROPERTY, "http://localhost:8080/services/Soap/u/8.0");
    // Attempt the login giving the user feedback
    System.out.println("LOGGING IN NOW....");
    try {
        loginResult = binding.login(un, pw);
    } catch (LoginFault lf) {
        System.out.println(lf.getExceptionMessage());
        // lf.printStackTrace();
        getUserInput("\nHit return to continue...");
        return false;
    } catch (ApiFault af) {
        System.out.println(af.getExceptionMessage());
        getUserInput("\nHit return to continue...");
    } catch (RemoteException re) {
        System.out.println(re.getMessage());
        re.printStackTrace();
        getUserInput("\nHit return to continue...");
        return false;
    }
    System.out.println("\nThe session id is: " + loginResult.getSessionId());
    System.out.println("\nThe new server url is: " + loginResult.getServerUrl());
    binding._setProperty(SoapBindingStub.ENDPOINT_ADDRESS_PROPERTY, loginResult.getServerUrl());
    // binding._setProperty(Stub.ENDPOINT_ADDRESS_PROPERTY, "http://localhost:8080/services/Soap/u/8.0");
    // Create a new session header object and set the session id to that
    // returned by the login
    SessionHeader sh = new SessionHeader();
    sh.setSessionId(loginResult.getSessionId());
    binding.setHeader(new SforceServiceLocator().getServiceName().getNamespaceURI(), "SessionHeader", sh);
    loggedIn = true;
    // call the getServerTimestamp method
    getServerTimestampSample();
    // call the getUserInfo method
    getUserInfoSample();
    return true;
}
Also used : ApiFault(com.salesforce.soap.partner.fault.ApiFault) ServiceException(javax.xml.rpc.ServiceException) SforceServiceLocator(com.salesforce.soap.partner.SforceServiceLocator) SessionHeader(com.salesforce.soap.partner.SessionHeader) LoginFault(com.salesforce.soap.partner.fault.LoginFault) RemoteException(java.rmi.RemoteException)

Example 5 with SessionHeader

use of com.salesforce.soap.partner.SessionHeader in project tdi-studio-se by Talend.

the class SforceSessionConnection method init.

private void init() throws Exception {
    if (clientID != null) {
        co = new CallOptions();
        co.setClient(clientID);
    }
    stub = new SforceServiceStub();
    SforceManagementUtil.needCompression(stub, needCompression);
    SforceManagementUtil.setTimeout(stub, timeout);
    SforceManagementUtil.useHttpChunked(stub, useHttpChunked);
    // SforceManagementUtil.setHttpProxy(stub);//don't support proxy for OAuth
    sh = new SessionHeader();
    // renewSession();
    SforceManagementUtil.setEndpoint(stub, endpoint);
    sh.setSessionId(session_id);
}
Also used : SessionHeader(com.salesforce.soap.partner.SessionHeader) SforceServiceStub(com.salesforce.soap.partner.SforceServiceStub) CallOptions(com.salesforce.soap.partner.CallOptions)

Aggregations

SessionHeader (com.salesforce.soap.partner.SessionHeader)6 CallOptions (com.salesforce.soap.partner.CallOptions)3 SforceServiceLocator (com.salesforce.soap.partner.SforceServiceLocator)3 SforceServiceStub (com.salesforce.soap.partner.SforceServiceStub)3 LoginResult (com.salesforce.soap.partner.LoginResult)2 LoginFault (com.salesforce.soap.partner.fault.LoginFault)2 RemoteException (java.rmi.RemoteException)2 ServiceException (javax.xml.rpc.ServiceException)2 QueryResult (com.salesforce.soap.partner.QueryResult)1 ApiFault (com.salesforce.soap.partner.fault.ApiFault)1 ExceptionCode (com.salesforce.soap.partner.fault.ExceptionCode)1 IOException (java.io.IOException)1 URL (java.net.URL)1