Search in sources :

Example 1 with SforceServiceLocator

use of com.salesforce.soap.partner.SforceServiceLocator 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 SforceServiceLocator

use of com.salesforce.soap.partner.SforceServiceLocator 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 SforceServiceLocator

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

the class PartnerSamples method querySample.

private void querySample() {
    // call the login function to do so
    if (!loggedIn) {
        if (!login()) {
            return;
        }
    }
    QueryResult qr = null;
    QueryOptions qo = new QueryOptions();
    qo.setBatchSize(new Integer(3));
    binding.setHeader(new SforceServiceLocator().getServiceName().getNamespaceURI(), "QueryOptions", qo);
    try {
        qr = binding.query("select id, Website, Name from Account where Name = 'Golden Straw'");
        ArrayList records = this.loadQueryResults(qr);
        if (records.size() != 0) {
            HashMap record = (HashMap) records.get(0);
            System.out.println("Retrieved " + new Integer(records.size()).toString() + " account(s) using Name = 'Golden Straw', String = " + (record.containsKey("id") ? record.get("id").toString() : " ").toString() + ", website = " + (record.containsKey("website") ? record.get("website").toString() : " ").toString());
        }
        // if (qr.getSize() != 0) {
        // SObject account = qr.getRecords()[0];
        //
        // System.out.println("Retrieved "
        // + new Integer(qr.getSize()).toString()
        // + " account(s) using Name = 'Golden Straw', String = "
        // + account.getId() + ", website = "
        // + account.get_any()[1]);
        // }
        qr = binding.query("select FirstName, LastName from Contact");
        int loopCount = 0;
        boolean continueLoop = true;
        while (continueLoop) {
            System.out.println("Results set " + new Integer(loopCount++).toString() + " - ");
            // process the query results
            for (int i = 0; i < qr.getRecords().length; i++) {
                SObject con = qr.getRecords()[i];
                String fName = "";
                String lName = "";
                if (con.get_any()[0].getName().toLowerCase().equals("firstname")) {
                    fName = con.get_any()[0].getValue();
                    lName = con.get_any()[1].getValue();
                } else
                    lName = con.get_any()[0].getValue();
                if (fName == null) {
                    System.out.println("Contact " + (i + 1) + ": " + lName);
                } else {
                    System.out.println("Contact " + (i + 1) + ": " + fName + " " + lName);
                }
            }
            // recent queryResult
            if (qr.isDone())
                continueLoop = false;
            else
                qr = binding.queryMore(qr.getQueryLocator());
        }
        System.out.println("\nQuery succesfully executed.");
        getUserInput("\nHit return to continue...");
    } catch (ApiFault af) {
        System.out.println("\nFailed to execute query succesfully, error message was: \n" + af.getExceptionMessage());
        getUserInput("\nHit return to continue...");
    } catch (Exception ex) {
        System.out.println("\nFailed to execute query succesfully, error message was: \n" + ex.getMessage());
        getUserInput("\nHit return to continue...");
    }
}
Also used : QueryResult(com.salesforce.soap.partner.QueryResult) ApiFault(com.salesforce.soap.partner.fault.ApiFault) SforceServiceLocator(com.salesforce.soap.partner.SforceServiceLocator) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) SObject(com.salesforce.soap.partner.sobject.SObject) QueryOptions(com.salesforce.soap.partner.QueryOptions) RemoteException(java.rmi.RemoteException) ServiceException(javax.xml.rpc.ServiceException) IOException(java.io.IOException)

Example 4 with SforceServiceLocator

use of com.salesforce.soap.partner.SforceServiceLocator 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)

Aggregations

SforceServiceLocator (com.salesforce.soap.partner.SforceServiceLocator)4 SessionHeader (com.salesforce.soap.partner.SessionHeader)3 RemoteException (java.rmi.RemoteException)3 ServiceException (javax.xml.rpc.ServiceException)3 LoginResult (com.salesforce.soap.partner.LoginResult)2 QueryResult (com.salesforce.soap.partner.QueryResult)2 ApiFault (com.salesforce.soap.partner.fault.ApiFault)2 LoginFault (com.salesforce.soap.partner.fault.LoginFault)2 IOException (java.io.IOException)2 QueryOptions (com.salesforce.soap.partner.QueryOptions)1 ExceptionCode (com.salesforce.soap.partner.fault.ExceptionCode)1 SObject (com.salesforce.soap.partner.sobject.SObject)1 URL (java.net.URL)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1