You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by je...@apache.org on 2023/04/04 16:36:13 UTC
[camel] 02/02: CAMEL-19249: camel-salesforce: Blob fix (cont.)
This is an automated email from the ASF dual-hosted git repository.
jeremyross pushed a commit to branch camel-3.20.x
in repository https://gitbox.apache.org/repos/asf/camel.git
commit e9eb1cfd29252a0ebb20a19205288897bf5f54ea
Author: Jeremy Ross <je...@gmail.com>
AuthorDate: Tue Apr 4 10:00:22 2023 -0500
CAMEL-19249: camel-salesforce: Blob fix (cont.)
---
.../salesforce/api/FieldsToNullPropertyFilter.java | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/FieldsToNullPropertyFilter.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/FieldsToNullPropertyFilter.java
index 0f32666fc25..cd38ea8c0a0 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/FieldsToNullPropertyFilter.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/FieldsToNullPropertyFilter.java
@@ -31,8 +31,18 @@ public class FieldsToNullPropertyFilter extends SimpleBeanPropertyFilter {
AbstractSObjectBase sob = (AbstractSObjectBase) pojo;
String fieldName = writer.getName();
- Object fieldValue = FieldUtils.readField(pojo, fieldName, true);
- if (sob.getFieldsToNull().contains(writer.getName()) || fieldValue != null) {
+ Object fieldValue = null;
+ boolean failedToReadFieldValue = false;
+ try {
+ fieldValue = FieldUtils.readField(pojo, fieldName, true);
+ }
+ catch (IllegalArgumentException e) {
+ // This happens if the backing field for the getter doesn't match the name provided to @JsonProperty
+ // This is expected to happen in the case of blob fields, e.g., ContentVersion.getVersionDataUrl(),
+ // whose backing property is specified as @JsonData("VersionData")
+ failedToReadFieldValue = true;
+ }
+ if (sob.getFieldsToNull().contains(writer.getName()) || fieldValue != null || failedToReadFieldValue) {
writer.serializeAsField(pojo, jgen, provider);
} else {
writer.serializeAsOmittedField(pojo, jgen, provider);