You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2025/01/09 20:03:54 UTC
(commons-lang) 02/04: Fix Spotbugs SE_TRANSIENT_FIELD_NOT_RESTORED issues
This is an automated email from the ASF dual-hosted git repository.
ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-lang.git
commit ea47d47ea8ab89a8ab84488cac0d0ce030c28efd
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Thu Jan 9 13:13:08 2025 -0500
Fix Spotbugs SE_TRANSIENT_FIELD_NOT_RESTORED issues
[ERROR] Medium: The field
org.apache.commons.lang3.builder.DiffBuilder$SDiff.leftSupplier is
transient but isn't set by deserialization
[org.apache.commons.lang3.builder.DiffBuilder$SDiff] In DiffBuilder.java
SE_TRANSIENT_FIELD_NOT_RESTORED
[ERROR] Medium: The field
org.apache.commons.lang3.builder.DiffBuilder$SDiff.rightSupplier is
transient but isn't set by deserialization
[org.apache.commons.lang3.builder.DiffBuilder$SDiff] In DiffBuilder.java
SE_TRANSIENT_FIELD_NOT_RESTORED
---
src/changes/changes.xml | 2 ++
.../java/org/apache/commons/lang3/builder/DiffBuilder.java | 11 ++++++-----
2 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 6178d93e3..94072e2bd 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -75,6 +75,8 @@ The <action> type attribute can be add,update,fix,remove.
<action issue="LANG-1759" type="fix" dev="ggregory" due-to="Maxim Butov, Gary Gregory">SerializationUtils.clone(Object) throws ClassCastException when called with a Serializable lambda.</action>
<action issue="LANG-1759" type="fix" dev="ggregory" due-to="IBue, Gary Gregory, Piotr P. Karwasz">[StringUtils::indexOfAnyBut] redesign due to inconsistent/faulty behavior regarding UTF-16 surrogates #1327.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Undeprecate ObjectUtils.toString(Object).</action>
+ <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix Spotbugs [ERROR] Medium: The field org.apache.commons.lang3.builder.DiffBuilder$SDiff.leftSupplier is transient but isn't set by deserialization [org.apache.commons.lang3.builder.DiffBuilder$SDiff] In DiffBuilder.java SE_TRANSIENT_FIELD_NOT_RESTORED.</action>
+ <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix Spotbugs [ERROR] Medium: The field org.apache.commons.lang3.builder.DiffBuilder$SDiff.rightSupplier is transient but isn't set by deserialization [org.apache.commons.lang3.builder.DiffBuilder$SDiff] In DiffBuilder.java SE_TRANSIENT_FIELD_NOT_RESTORED.</action>
<!-- ADD -->
<action type="add" dev="ggregory" due-to="Gary Gregory">Add Strings and refactor StringUtils.</action>
<action issue="LANG-1747" type="add" dev="ggregory" due-to="Oliver B. Fischer, Gary Gregory">Add StopWatch.run([Failable]Runnable) and get([Failable]Supplier).</action>
diff --git a/src/main/java/org/apache/commons/lang3/builder/DiffBuilder.java b/src/main/java/org/apache/commons/lang3/builder/DiffBuilder.java
index 2424e6307..ab358e266 100644
--- a/src/main/java/org/apache/commons/lang3/builder/DiffBuilder.java
+++ b/src/main/java/org/apache/commons/lang3/builder/DiffBuilder.java
@@ -16,6 +16,7 @@
*/
package org.apache.commons.lang3.builder;
+import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -163,13 +164,13 @@ public class DiffBuilder<T> implements Builder<DiffResult<T>> {
}
}
- private static final class SDiff<T> extends Diff<T> {
+ private static final class SDiff<T, S extends Supplier<T> & Serializable> extends Diff<T> {
private static final long serialVersionUID = 1L;
- private final transient Supplier<T> leftSupplier;
- private final transient Supplier<T> rightSupplier;
+ private final transient S leftSupplier;
+ private final transient S rightSupplier;
- private SDiff(final String fieldName, final Supplier<T> leftSupplier, final Supplier<T> rightSupplier, final Class<T> type) {
+ private SDiff(final String fieldName, final S leftSupplier, final S rightSupplier, final Class<T> type) {
super(fieldName, type);
this.leftSupplier = Objects.requireNonNull(leftSupplier);
this.rightSupplier = Objects.requireNonNull(rightSupplier);
@@ -263,7 +264,7 @@ public class DiffBuilder<T> implements Builder<DiffResult<T>> {
this.equals = testObjectsEquals && Objects.equals(left, right);
}
- private <F> DiffBuilder<T> add(final String fieldName, final Supplier<F> left, final Supplier<F> right, final Class<F> type) {
+ private <F, S extends Supplier<F> & Serializable> DiffBuilder<T> add(final String fieldName, final S left, final S right, final Class<F> type) {
diffs.add(new SDiff<>(fieldName, left, right, type));
return this;
}