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 <[email protected]> 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);
