You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2026/10/23 08:04:13 UTC
(struts) 04/04: WW-5790 refactor(rest): read the baseline value only when a comparison needs it
This is an automated email from the ASF dual-hosted git repository.
lukaszlenart pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/struts.git
commit c85ec6dfafeb7a898f1098b0e561aa445787f12b
Author: Lukasz Lenart <lu...@apache.org>
AuthorDate: Fri Oct 23 08:26:06 2026 +0200
WW-5790 refactor(rest): read the baseline value only when a comparison needs it
Co-Authored-By: Claude Mythos 5.1 <no...@anthropic.com>
---
.../java/org/apache/struts2/rest/ContentTypeInterceptor.java | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/plugins/rest/src/main/java/org/apache/struts2/rest/ContentTypeInterceptor.java b/plugins/rest/src/main/java/org/apache/struts2/rest/ContentTypeInterceptor.java
index a0afa0b61..d98b22544 100644
--- a/plugins/rest/src/main/java/org/apache/struts2/rest/ContentTypeInterceptor.java
+++ b/plugins/rest/src/main/java/org/apache/struts2/rest/ContentTypeInterceptor.java
@@ -241,15 +241,15 @@ public class ContentTypeInterceptor extends AbstractInterceptor {
}
Object sourceValue = readMethod.invoke(source);
- Object baselineValue = baseline == null ? null : readMethod.invoke(baseline);
- // A null, or a leaf or collection equal to the baseline's constructor default, reads as "not in
- // the body": copying it would overwrite what params or prepare() put on the target. The cost is
- // that an explicit null, a primitive at its zero value, an empty collection, or any body value
- // equal to the constructor default is not applied either. A nested bean is compared leaf by leaf
- // below, never through its own equals.
+ // A null, or a non-nested value (leaf, collection, map, array) equal to the baseline's constructor
+ // default, reads as "not in the body": copying it would overwrite what params or prepare() put on
+ // the target. The cost is that an explicit null, a primitive at its zero value, an empty collection,
+ // or any body value equal to the constructor default is not applied either. A nested bean is
+ // compared leaf by leaf below, never through its own equals.
if (sourceValue == null) {
continue;
}
+ Object baselineValue = baseline == null ? null : readMethod.invoke(baseline);
boolean nestedBean = isNestedBeanType(sourceValue.getClass());
if (!nestedBean && baseline != null && Objects.deepEquals(sourceValue, baselineValue)) {
continue;