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}");
