mirror of
https://github.com/vavr-io/vavr.git
synced 2024-10-23 08:19:44 +08:00
Fix remaining Java Serialization issues with JDK21 (#2881)
Fix remaining Java Serialization issues with JDK21 Co-authored-by: karnsa <karnsa@vmware.com>
This commit is contained in:
parent
c721c5b1ed
commit
e53842b6b5
@ -1105,7 +1105,7 @@ def generateMainClasses(): Unit = {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private final Pattern0<T> pattern;
|
||||
private final $FunctionType<? super T, ? extends R> f;
|
||||
private transient final $FunctionType<? super T, ? extends R> f;
|
||||
|
||||
private Case0(Pattern0<T> pattern, $FunctionType<? super T, ? extends R> f) {
|
||||
this.pattern = pattern;
|
||||
@ -1131,13 +1131,18 @@ def generateMainClasses(): Unit = {
|
||||
case 2 => BiFunctionType
|
||||
case _ => s"Function$i"
|
||||
}
|
||||
val accessModifier = i match {
|
||||
case 1 => "transient final"
|
||||
case 2 => "transient final"
|
||||
case _ => "final"
|
||||
}
|
||||
xs"""
|
||||
public static final class Case$i<T, $generics, R> implements Case<T, R> {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private final Pattern$i<T, $generics> pattern;
|
||||
private final $functionType<$argTypes, ? extends R> f;
|
||||
private $accessModifier $functionType<$argTypes, ? extends R> f;
|
||||
|
||||
private Case$i(Pattern$i<T, $generics> pattern, $functionType<$argTypes, ? extends R> f) {
|
||||
this.pattern = pattern;
|
||||
@ -2354,7 +2359,9 @@ def generateMainClasses(): Unit = {
|
||||
/**
|
||||
* The base interface of all tuples.
|
||||
*/
|
||||
public interface Tuple {
|
||||
public interface Tuple extends ${im.getType("java.io.Serializable")} {
|
||||
|
||||
long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* The maximum arity of an Tuple.
|
||||
@ -2438,7 +2445,10 @@ def generateMainClasses(): Unit = {
|
||||
/**
|
||||
* Helper to replace reflective array access.
|
||||
*/
|
||||
interface ArrayType<T> {
|
||||
interface ArrayType<T> extends Serializable {
|
||||
|
||||
long serialVersionUID = 1L;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
static <T> ArrayType<T> obj() { return (ArrayType<T>) ObjectArrayType.INSTANCE; }
|
||||
|
||||
|
@ -32,13 +32,16 @@ package io.vavr;
|
||||
|
||||
import io.vavr.collection.Seq;
|
||||
import io.vavr.collection.Stream;
|
||||
import java.io.Serializable;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* The base interface of all tuples.
|
||||
*/
|
||||
public interface Tuple {
|
||||
public interface Tuple extends Serializable {
|
||||
|
||||
long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* The maximum arity of an Tuple.
|
||||
|
@ -37,7 +37,10 @@ import java.util.Collection;
|
||||
/**
|
||||
* Helper to replace reflective array access.
|
||||
*/
|
||||
interface ArrayType<T> {
|
||||
interface ArrayType<T> extends Serializable {
|
||||
|
||||
long serialVersionUID = 1L;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
static <T> ArrayType<T> obj() { return (ArrayType<T>) ObjectArrayType.INSTANCE; }
|
||||
|
||||
|
@ -51,6 +51,7 @@ public final class Array<T> implements IndexedSeq<T>, Serializable {
|
||||
|
||||
private static final Array<?> EMPTY = new Array<>(new Object[0]);
|
||||
|
||||
@SuppressWarnings("serial") // Conditionally serializable
|
||||
private final Object[] delegate;
|
||||
|
||||
private Array(Object[] delegate) {
|
||||
|
@ -65,6 +65,7 @@ final class BitMappedTrie<T> implements Serializable {
|
||||
static <T> BitMappedTrie<T> empty() { return (BitMappedTrie<T>) EMPTY; }
|
||||
|
||||
final ArrayType<T> type;
|
||||
@SuppressWarnings("serial") // Conditionally serializable
|
||||
private final Object array;
|
||||
private final int offset, length;
|
||||
private final int depthShift;
|
||||
|
@ -380,7 +380,9 @@ interface HashArrayMappedTrieModule {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private final int hash;
|
||||
@SuppressWarnings("serial") // Conditionally serializable
|
||||
private final K key;
|
||||
@SuppressWarnings("serial") // Conditionally serializable
|
||||
private final V value;
|
||||
|
||||
LeafSingleton(int hash, K key, V value) {
|
||||
@ -449,7 +451,9 @@ interface HashArrayMappedTrieModule {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private final int hash;
|
||||
@SuppressWarnings("serial") // Conditionally serializable
|
||||
private final K key;
|
||||
@SuppressWarnings("serial") // Conditionally serializable
|
||||
private final V value;
|
||||
private final int size;
|
||||
private final LeafNode<K, V> tail;
|
||||
@ -598,6 +602,7 @@ interface HashArrayMappedTrieModule {
|
||||
|
||||
private final int bitmap;
|
||||
private final int size;
|
||||
@SuppressWarnings("serial") // Conditionally serializable
|
||||
private final Object[] subNodes;
|
||||
|
||||
IndexedNode(int bitmap, int size, Object[] subNodes) {
|
||||
@ -711,6 +716,7 @@ interface HashArrayMappedTrieModule {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@SuppressWarnings("serial") // Conditionally serializable
|
||||
private final Object[] subNodes;
|
||||
private final int count;
|
||||
private final int size;
|
||||
|
@ -50,7 +50,9 @@ import static io.vavr.collection.RedBlackTree.Color.RED;
|
||||
*
|
||||
* @param <T> Component type
|
||||
*/
|
||||
interface RedBlackTree<T> extends Iterable<T> {
|
||||
interface RedBlackTree<T> extends Iterable<T>, Serializable {
|
||||
|
||||
long serialVersionUID = 1L;
|
||||
|
||||
static <T> RedBlackTree<T> empty(Comparator<? super T> comparator) {
|
||||
Objects.requireNonNull(comparator, "comparator is null");
|
||||
@ -351,6 +353,7 @@ interface RedBlackTreeModule {
|
||||
final Color color;
|
||||
final int blackHeight;
|
||||
final RedBlackTree<T> left;
|
||||
@SuppressWarnings("serial")
|
||||
final T value;
|
||||
final RedBlackTree<T> right;
|
||||
final Empty<T> empty;
|
||||
@ -828,6 +831,7 @@ interface RedBlackTreeModule {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@SuppressWarnings("serial") // Conditionally serializable
|
||||
final Comparator<T> comparator;
|
||||
|
||||
// This is no public API! The RedBlackTree takes care of passing the correct Comparator.
|
||||
|
@ -833,6 +833,7 @@ public abstract class Tree<T> implements Traversable<T>, Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@SuppressWarnings("serial") // Conditionally serializable
|
||||
private final T value;
|
||||
private final io.vavr.collection.List<Node<T>> children;
|
||||
|
||||
|
@ -1533,6 +1533,7 @@ public final class TreeMap<K, V> implements SortedMap<K, V>, Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@SuppressWarnings("serial") // Conditionally serializable
|
||||
private final Comparator<K> keyComparator;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
|
@ -594,7 +594,9 @@ public class BitSetTest extends AbstractSortedSetTest {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@SuppressWarnings("serial") // Conditionally serializable
|
||||
private final java.util.Map<Integer, T> fromIntMap = new java.util.HashMap<>();
|
||||
@SuppressWarnings("serial") // Conditionally serializable
|
||||
private final java.util.Map<T, Integer> toIntMap = new java.util.HashMap<>();
|
||||
private int nextValue = 0;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user