Skip to content

Commit edba0ea

Browse files
KrnSaurabhkarnsa
andauthored
Fix remaining Java Serialization issues with JDK21 (#2880)
Fix remaining Java Serialization issues with JDK21 Co-authored-by: karnsa <[email protected]>
1 parent 3ce61b1 commit edba0ea

File tree

11 files changed

+40
-8
lines changed

11 files changed

+40
-8
lines changed

vavr/generator/Generator.scala

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1104,7 +1104,7 @@ def generateMainClasses(): Unit = {
11041104
private static final long serialVersionUID = 1L;
11051105

11061106
private final Pattern0<T> pattern;
1107-
private final $FunctionType<? super T, ? extends R> f;
1107+
private transient final $FunctionType<? super T, ? extends R> f;
11081108

11091109
private Case0(Pattern0<T> pattern, $FunctionType<? super T, ? extends R> f) {
11101110
this.pattern = pattern;
@@ -1130,13 +1130,18 @@ def generateMainClasses(): Unit = {
11301130
case 2 => BiFunctionType
11311131
case _ => s"Function$i"
11321132
}
1133+
val accessModifier = i match {
1134+
case 1 => "transient final"
1135+
case 2 => "transient final"
1136+
case _ => "final"
1137+
}
11331138
xs"""
11341139
public static final class Case$i<T, $generics, R> implements Case<T, R> {
11351140

11361141
private static final long serialVersionUID = 1L;
11371142

11381143
private final Pattern$i<T, $generics> pattern;
1139-
private final $functionType<$argTypes, ? extends R> f;
1144+
private $accessModifier $functionType<$argTypes, ? extends R> f;
11401145

11411146
private Case$i(Pattern$i<T, $generics> pattern, $functionType<$argTypes, ? extends R> f) {
11421147
this.pattern = pattern;
@@ -2329,7 +2334,9 @@ def generateMainClasses(): Unit = {
23292334
*
23302335
* @author Daniel Dietrich
23312336
*/
2332-
public interface Tuple {
2337+
public interface Tuple extends ${im.getType("java.io.Serializable")} {
2338+
2339+
long serialVersionUID = 1L;
23332340

23342341
/**
23352342
* The maximum arity of an Tuple.
@@ -2415,7 +2422,10 @@ def generateMainClasses(): Unit = {
24152422
*
24162423
* @author Pap Lőrinc
24172424
*/
2418-
interface ArrayType<T> {
2425+
interface ArrayType<T> extends Serializable {
2426+
2427+
long serialVersionUID = 1L;
2428+
24192429
@SuppressWarnings("unchecked")
24202430
static <T> ArrayType<T> obj() { return (ArrayType<T>) ObjectArrayType.INSTANCE; }
24212431

vavr/src-gen/main/java/io/vavr/API.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5654,4 +5654,4 @@ public boolean isDefinedAt(T obj) {
56545654
}
56555655
}
56565656
}
5657-
}
5657+
}

vavr/src-gen/main/java/io/vavr/Tuple.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
import io.vavr.collection.Seq;
2727
import io.vavr.collection.Stream;
28+
import java.io.Serializable;
2829
import java.util.Map;
2930
import java.util.Objects;
3031

@@ -33,7 +34,9 @@
3334
*
3435
* @author Daniel Dietrich
3536
*/
36-
public interface Tuple {
37+
public interface Tuple extends Serializable {
38+
39+
long serialVersionUID = 1L;
3740

3841
/**
3942
* The maximum arity of an Tuple.

vavr/src-gen/main/java/io/vavr/collection/ArrayType.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,10 @@
3232
*
3333
* @author Pap Lőrinc
3434
*/
35-
interface ArrayType<T> {
35+
interface ArrayType<T> extends Serializable {
36+
37+
long serialVersionUID = 1L;
38+
3639
@SuppressWarnings("unchecked")
3740
static <T> ArrayType<T> obj() { return (ArrayType<T>) ObjectArrayType.INSTANCE; }
3841

vavr/src/main/java/io/vavr/collection/Array.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ public final class Array<T> implements IndexedSeq<T>, Serializable {
4545

4646
private static final Array<?> EMPTY = new Array<>(new Object[0]);
4747

48+
@SuppressWarnings("serial") // Conditionally serializable
4849
private final Object[] delegate;
4950

5051
private Array(Object[] delegate) {

vavr/src/main/java/io/vavr/collection/BitMappedTrie.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ final class BitMappedTrie<T> implements Serializable {
6060
static <T> BitMappedTrie<T> empty() { return (BitMappedTrie<T>) EMPTY; }
6161

6262
final ArrayType<T> type;
63+
@SuppressWarnings("serial") // Conditionally serializable
6364
private final Object array;
6465
private final int offset, length;
6566
private final int depthShift;

vavr/src/main/java/io/vavr/collection/HashArrayMappedTrie.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -377,7 +377,9 @@ final class LeafSingleton<K, V> extends LeafNode<K, V> implements Serializable {
377377
private static final long serialVersionUID = 1L;
378378

379379
private final int hash;
380+
@SuppressWarnings("serial") // Conditionally serializable
380381
private final K key;
382+
@SuppressWarnings("serial") // Conditionally serializable
381383
private final V value;
382384

383385
LeafSingleton(int hash, K key, V value) {
@@ -446,7 +448,9 @@ final class LeafList<K, V> extends LeafNode<K, V> implements Serializable {
446448
private static final long serialVersionUID = 1L;
447449

448450
private final int hash;
451+
@SuppressWarnings("serial") // Conditionally serializable
449452
private final K key;
453+
@SuppressWarnings("serial") // Conditionally serializable
450454
private final V value;
451455
private final int size;
452456
private final LeafNode<K, V> tail;
@@ -592,6 +596,7 @@ final class IndexedNode<K, V> extends AbstractNode<K, V> implements Serializable
592596

593597
private final int bitmap;
594598
private final int size;
599+
@SuppressWarnings("serial") // Conditionally serializable
595600
private final Object[] subNodes;
596601

597602
IndexedNode(int bitmap, int size, Object[] subNodes) {
@@ -705,6 +710,7 @@ final class ArrayNode<K, V> extends AbstractNode<K, V> implements Serializable {
705710

706711
private static final long serialVersionUID = 1L;
707712

713+
@SuppressWarnings("serial") // Conditionally serializable
708714
private final Object[] subNodes;
709715
private final int count;
710716
private final int size;

vavr/src/main/java/io/vavr/collection/RedBlackTree.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,9 @@
4646
* @param <T> Component type
4747
* @author Daniel Dietrich
4848
*/
49-
interface RedBlackTree<T> extends Iterable<T> {
49+
interface RedBlackTree<T> extends Iterable<T>, Serializable {
50+
51+
long serialVersionUID = 1L;
5052

5153
static <T> RedBlackTree<T> empty(Comparator<? super T> comparator) {
5254
Objects.requireNonNull(comparator, "comparator is null");
@@ -344,6 +346,7 @@ final class Node<T> implements RedBlackTree<T>, Serializable {
344346
final Color color;
345347
final int blackHeight;
346348
final RedBlackTree<T> left;
349+
@SuppressWarnings("serial")
347350
final T value;
348351
final RedBlackTree<T> right;
349352
final Empty<T> empty;
@@ -821,6 +824,7 @@ final class Empty<T> implements RedBlackTree<T>, Serializable {
821824

822825
private static final long serialVersionUID = 1L;
823826

827+
@SuppressWarnings("serial") // Conditionally serializable
824828
final Comparator<T> comparator;
825829

826830
// This is no public API! The RedBlackTree takes care of passing the correct Comparator.

vavr/src/main/java/io/vavr/collection/Tree.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -866,6 +866,7 @@ final class Node<T> implements Tree<T>, Serializable {
866866

867867
private static final long serialVersionUID = 1L;
868868

869+
@SuppressWarnings("serial") // Conditionally serializable
869870
private final T value;
870871
private final io.vavr.collection.List<Node<T>> children;
871872

vavr/src/main/java/io/vavr/collection/TreeMap.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1562,6 +1562,7 @@ final class Specific<K, V> implements EntryComparator<K, V> {
15621562

15631563
private static final long serialVersionUID = 1L;
15641564

1565+
@SuppressWarnings("serial") // Conditionally serializable
15651566
private final Comparator<K> keyComparator;
15661567

15671568
@SuppressWarnings("unchecked")

0 commit comments

Comments
 (0)