You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2020/11/19 19:19:33 UTC

[camel] branch master updated: CAMEL-15866: salesforce: Support new SOSL search result (#4630)

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/master by this push:
     new 21735bc  CAMEL-15866: salesforce: Support new SOSL search result (#4630)
21735bc is described below

commit 21735bce2fde10a9f961e4561c312af678d37171
Author: Jeremy Ross <je...@jeremyross.org>
AuthorDate: Thu Nov 19 13:19:19 2020 -0600

    CAMEL-15866: salesforce: Support new SOSL search result (#4630)
---
 .../component/salesforce/api/dto/SearchResult.java |  4 +--
 .../dto/{SearchResult.java => SearchResult2.java}  | 39 ++++++++--------------
 .../internal/processor/JsonRestProcessor.java      |  7 +++-
 .../internal/processor/XmlRestProcessor.java       |  7 +++-
 4 files changed, 28 insertions(+), 29 deletions(-)

diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/SearchResult.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/SearchResult.java
index 844c971..66045d3 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/SearchResult.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/SearchResult.java
@@ -20,7 +20,8 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 import com.thoughtworks.xstream.annotations.XStreamAlias;
 
 /**
- * DTO for Salesforce SOSL Search result record.
+ * DTO for Salesforce SOSL Search result record. Starting with v37, this is wrapped by
+ * {@link org.apache.camel.component.salesforce.api.dto.SearchResult2}
  */
 @XStreamAlias("SearchResult")
 //CHECKSTYLE:OFF
@@ -49,6 +50,5 @@ public final class SearchResult extends AbstractDTOBase {
     public void setId(String id) {
         this.Id = id;
     }
-
 }
 //CHECKSTYLE:ON
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/SearchResult.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/SearchResult2.java
similarity index 57%
copy from components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/SearchResult.java
copy to components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/SearchResult2.java
index 844c971..3513ff3 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/SearchResult.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/SearchResult2.java
@@ -16,39 +16,28 @@
  */
 package org.apache.camel.component.salesforce.api.dto;
 
+import java.util.List;
+
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamImplicit;
 
 /**
- * DTO for Salesforce SOSL Search result record.
+ * DTO for Salesforce SOSL Search result record for v37 and later
  */
-@XStreamAlias("SearchResult")
-//CHECKSTYLE:OFF
-public final class SearchResult extends AbstractDTOBase {
-
-    // WARNING: these fields have case sensitive names,
-    // the field name MUST match the field name used by Salesforce
-    // DO NOT change these field names to camel case!!!
-    private Attributes attributes;
-    private String Id;
-
-    public Attributes getAttributes() {
-        return attributes;
-    }
+@XStreamAlias("SearchResultWithMetadata")
+public final class SearchResult2 extends AbstractDTOBase {
 
-    public void setAttributes(Attributes attributes) {
-        this.attributes = attributes;
-    }
+    @XStreamImplicit(itemFieldName = "searchRecords")
+    private List<SearchResult> searchRecords;
 
-    @JsonProperty("Id")
-    public String getId() {
-        return Id;
+    @JsonProperty("searchRecords")
+    public List<SearchResult> getSearchRecords() {
+        return searchRecords;
     }
 
-    @JsonProperty("Id")
-    public void setId(String id) {
-        this.Id = id;
+    @JsonProperty("searchRecords")
+    public void setSearchRecords(List<SearchResult> searchRecords) {
+        this.searchRecords = searchRecords;
     }
-
 }
-//CHECKSTYLE:ON
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/JsonRestProcessor.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/JsonRestProcessor.java
index b83c12e..c3cdec8 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/JsonRestProcessor.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/JsonRestProcessor.java
@@ -38,6 +38,7 @@ import org.apache.camel.component.salesforce.api.dto.Limits;
 import org.apache.camel.component.salesforce.api.dto.RestResources;
 import org.apache.camel.component.salesforce.api.dto.SObjectBasicInfo;
 import org.apache.camel.component.salesforce.api.dto.SObjectDescription;
+import org.apache.camel.component.salesforce.api.dto.SearchResult2;
 import org.apache.camel.component.salesforce.api.dto.approval.ApprovalResult;
 import org.apache.camel.component.salesforce.api.dto.approval.Approvals;
 import org.apache.camel.component.salesforce.api.utils.JsonUtils;
@@ -100,7 +101,11 @@ public class JsonRestProcessor extends AbstractRestProcessor {
 
             case SEARCH:
                 // handle known response type
-                exchange.setProperty(RESPONSE_TYPE, TypeReferences.SEARCH_RESULT_TYPE);
+                if (Double.parseDouble(endpoint.getConfiguration().getApiVersion()) >= 37.0) {
+                    exchange.setProperty(RESPONSE_CLASS, SearchResult2.class);
+                } else {
+                    exchange.setProperty(RESPONSE_TYPE, TypeReferences.SEARCH_RESULT_TYPE);
+                }
                 break;
 
             case RECENT:
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/XmlRestProcessor.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/XmlRestProcessor.java
index 87209ca..8d9abf4 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/XmlRestProcessor.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/XmlRestProcessor.java
@@ -39,6 +39,7 @@ import org.apache.camel.component.salesforce.api.dto.GlobalObjects;
 import org.apache.camel.component.salesforce.api.dto.RestResources;
 import org.apache.camel.component.salesforce.api.dto.SObjectBasicInfo;
 import org.apache.camel.component.salesforce.api.dto.SObjectDescription;
+import org.apache.camel.component.salesforce.api.dto.SearchResult2;
 import org.apache.camel.component.salesforce.api.dto.SearchResults;
 import org.apache.camel.component.salesforce.api.dto.Versions;
 import org.apache.camel.component.salesforce.api.dto.approval.ApprovalResult;
@@ -134,7 +135,11 @@ public class XmlRestProcessor extends AbstractRestProcessor {
 
             case SEARCH:
                 // handle known response type
-                exchange.setProperty(RESPONSE_CLASS, SearchResults.class);
+                if (Double.parseDouble(endpoint.getConfiguration().getApiVersion()) >= 37.0) {
+                    exchange.setProperty(RESPONSE_CLASS, SearchResult2.class);
+                } else {
+                    exchange.setProperty(RESPONSE_CLASS, SearchResults.class);
+                }
                 break;
 
             case APEX_CALL: