Browse Source

Skip serialization of potentially non-serializable cached state

Closes gh-36346

(cherry picked from commit 22bd8bd704)
6.2.x
Juergen Hoeller 4 weeks ago
parent
commit
1c7e79026f
  1. 8
      spring-core/src/main/java/org/springframework/core/ResolvableType.java
  2. 16
      spring-core/src/test/java/org/springframework/core/ResolvableTypeTests.java

8
spring-core/src/main/java/org/springframework/core/ResolvableType.java

@ -128,16 +128,16 @@ public class ResolvableType implements Serializable { @@ -128,16 +128,16 @@ public class ResolvableType implements Serializable {
private Class<?> resolved;
@Nullable
private volatile ResolvableType superType;
private transient volatile ResolvableType superType;
@Nullable
private volatile ResolvableType[] interfaces;
private transient volatile ResolvableType[] interfaces;
@Nullable
private volatile ResolvableType[] generics;
private transient volatile ResolvableType[] generics;
@Nullable
private volatile Boolean unresolvableGenerics;
private transient volatile Boolean unresolvableGenerics;
/**

16
spring-core/src/test/java/org/springframework/core/ResolvableTypeTests.java

@ -1335,6 +1335,22 @@ class ResolvableTypeTests { @@ -1335,6 +1335,22 @@ class ResolvableTypeTests {
assertThat(deserializedNone).isSameAs(ResolvableType.NONE);
}
@Test
void serializeWithCachedState() throws Exception {
ResolvableType type = ResolvableType.forClass(List.class);
testSerialization(type);
type.getSuperType();
type.getInterfaces();
type.getGenerics();
type.hasUnresolvableGenerics();
testSerialization(type);
type.getSuperType();
type.getInterfaces();
type.getGenerics();
type.hasUnresolvableGenerics();
testSerialization(type);
}
@Test
void canResolveVoid() {
ResolvableType type = ResolvableType.forClass(void.class);

Loading…
Cancel
Save