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:12:48 UTC

[camel] branch main updated: 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 main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 3d5ae361bb7 CAMEL-19249: camel-salesforce: Blob fix (cont.)
3d5ae361bb7 is described below

commit 3d5ae361bb7d286c40a1ecdfda2a27928b81d41a
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);