Repository: camel
Updated Branches:
  refs/heads/master 1ea1817e2 -> 7c97811a5


Support Salesforce queryAll

Signed-off-by: Sune Keller <[email protected]>


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/7c97811a
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/7c97811a
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/7c97811a

Branch: refs/heads/master
Commit: 7c97811a55e5250b6fd17dee8322b69f1842e130
Parents: 1ea1817
Author: Sune Keller <[email protected]>
Authored: Thu Jun 23 16:58:37 2016 +0200
Committer: Claus Ibsen <[email protected]>
Committed: Fri Jun 24 08:33:48 2016 +0200

----------------------------------------------------------------------
 .../salesforce/internal/OperationName.java      |  1 +
 .../internal/client/DefaultRestClient.java      | 18 ++++++++++++++++++
 .../salesforce/internal/client/RestClient.java  |  9 ++++++++-
 .../processor/AbstractRestProcessor.java        | 17 +++++++++++++++++
 .../salesforce/RestApiIntegrationTest.java      | 20 ++++++++++++++++++++
 5 files changed, 64 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/7c97811a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/OperationName.java
----------------------------------------------------------------------
diff --git 
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/OperationName.java
 
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/OperationName.java
index eba175d..6107750 100644
--- 
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/OperationName.java
+++ 
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/OperationName.java
@@ -34,6 +34,7 @@ public enum OperationName {
     GET_BLOB_FIELD("getBlobField"),
     QUERY("query"),
     QUERY_MORE("queryMore"),
+    QUERY_ALL("queryAll"),
     SEARCH("search"),
     APEX_CALL("apexCall"),
 

http://git-wip-us.apache.org/repos/asf/camel/blob/7c97811a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultRestClient.java
----------------------------------------------------------------------
diff --git 
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultRestClient.java
 
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultRestClient.java
index 0c19a78..4aaa225 100644
--- 
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultRestClient.java
+++ 
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultRestClient.java
@@ -330,6 +330,24 @@ public class DefaultRestClient extends AbstractClientBase 
implements RestClient
     }
 
     @Override
+    public void queryAll(String soqlQuery, ResponseCallback callback) {
+        try {
+
+            String encodedQuery = urlEncode(soqlQuery);
+            final Request get = getRequest(HttpMethod.GET, versionUrl() + 
"queryAll/?q=" + encodedQuery);
+
+            // requires authorization token
+            setAccessToken(get);
+
+            doHttpRequest(get, new DelegatingClientCallback(callback));
+
+        } catch (UnsupportedEncodingException e) {
+            String msg = "Unexpected error: " + e.getMessage();
+            callback.onResponse(null, new SalesforceException(msg, e));
+        }
+    }
+
+    @Override
     public void search(String soslQuery, ResponseCallback callback) {
         try {
 

http://git-wip-us.apache.org/repos/asf/camel/blob/7c97811a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/RestClient.java
----------------------------------------------------------------------
diff --git 
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/RestClient.java
 
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/RestClient.java
index 5747976..af0a2a7 100644
--- 
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/RestClient.java
+++ 
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/RestClient.java
@@ -167,6 +167,14 @@ public interface RestClient {
     void queryMore(String nextRecordsUrl, ResponseCallback callback);
 
     /**
+     * Executes the specified SOQL query including deleted records.
+     *
+     * @param soqlQuery SOQL query
+     * @param callback  {@link ResponseCallback} to handle response or 
exception
+     */
+    void queryAll(String soqlQuery, ResponseCallback callback);
+
+    /**
      * Executes the specified SOSL search.
      *
      * @param soslQuery SOSL query
@@ -185,5 +193,4 @@ public interface RestClient {
      */
     void apexCall(String httpMethod, String apexUrl, Map<String, Object> 
queryParams, InputStream requestDto,
                   ResponseCallback callback);
-
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/7c97811a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/AbstractRestProcessor.java
----------------------------------------------------------------------
diff --git 
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/AbstractRestProcessor.java
 
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/AbstractRestProcessor.java
index c8ceee7..d487235 100644
--- 
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/AbstractRestProcessor.java
+++ 
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/AbstractRestProcessor.java
@@ -143,6 +143,9 @@ public abstract class AbstractRestProcessor extends 
AbstractSalesforceProcessor
             case QUERY_MORE:
                 processQueryMore(exchange, callback);
                 break;
+            case QUERY_ALL:
+                processQueryAll(exchange, callback);
+                break;
             case SEARCH:
                 processSearch(exchange, callback);
                 break;
@@ -471,6 +474,20 @@ public abstract class AbstractRestProcessor extends 
AbstractSalesforceProcessor
         });
     }
 
+    private void processQueryAll(final Exchange exchange, final AsyncCallback 
callback) throws SalesforceException {
+        final String sObjectQuery = getParameter(SOBJECT_QUERY, exchange, 
USE_BODY, NOT_OPTIONAL);
+
+        // use custom response class property
+        setResponseClass(exchange, null);
+
+        restClient.queryAll(sObjectQuery, new RestClient.ResponseCallback() {
+            @Override
+            public void onResponse(InputStream response, SalesforceException 
exception) {
+                processResponse(exchange, response, exception, callback);
+            }
+        });
+    }
+
     private void processSearch(final Exchange exchange, final AsyncCallback 
callback) throws SalesforceException {
         final String sObjectSearch = getParameter(SOBJECT_SEARCH, exchange, 
USE_BODY, NOT_OPTIONAL);
 

http://git-wip-us.apache.org/repos/asf/camel/blob/7c97811a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/RestApiIntegrationTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/RestApiIntegrationTest.java
 
b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/RestApiIntegrationTest.java
index 3cb5ccf..9eb0eb4 100644
--- 
a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/RestApiIntegrationTest.java
+++ 
b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/RestApiIntegrationTest.java
@@ -355,6 +355,19 @@ public class RestApiIntegrationTest extends 
AbstractSalesforceTestBase {
         LOG.debug("ExecuteQuery: {}", queryRecords);
     }
 
+    @Test
+    public void testQueryAll() throws Exception {
+        doTestQueryAll("");
+        doTestQueryAll("Xml");
+    }
+
+    private void doTestQueryAll(String suffix) throws Exception {
+        QueryRecordsLine_Item__c queryRecords = 
template().requestBody("direct:queryAll" + suffix, null,
+            QueryRecordsLine_Item__c.class);
+        assertNotNull(queryRecords);
+        LOG.debug("ExecuteQuery: {}", queryRecords);
+    }
+
 
     @Test
     public void testSearch() throws Exception {
@@ -689,6 +702,13 @@ public class RestApiIntegrationTest extends 
AbstractSalesforceTestBase {
                 from("direct:queryXml")
                     .to("salesforce:query?format=XML&sObjectQuery=SELECT name 
from Line_Item__c&sObjectClass=" + QueryRecordsLine_Item__c.class.getName());
 
+                // testQueryAll
+                from("direct:queryAll")
+                    .to("salesforce:queryAll?sObjectQuery=SELECT name from 
Line_Item__c&sObjectClass=" + QueryRecordsLine_Item__c.class.getName());
+
+                from("direct:queryAllXml")
+                    .to("salesforce:queryAll?format=XML&sObjectQuery=SELECT 
name from Line_Item__c&sObjectClass=" + 
QueryRecordsLine_Item__c.class.getName());
+
                 // testSearch
                 from("direct:search")
                     .to("salesforce:search?sObjectSearch=FIND {Wee}");

Reply via email to