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 <jer...@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: