From d643e57318caaa57062154bb830c8b240ba38810 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Tue, 2 May 2017 21:13:55 +0200 Subject: [PATCH] ResolvableType.clearCache() clears SerializableTypeWrapper cache as well Issue: SPR-15503 (cherry picked from commit 7ca0094) --- .../org/springframework/core/ResolvableType.java | 5 +++-- .../core/SerializableTypeWrapper.java | 13 ++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/spring-core/src/main/java/org/springframework/core/ResolvableType.java b/spring-core/src/main/java/org/springframework/core/ResolvableType.java index e610124be9f..7853d88d766 100644 --- a/spring-core/src/main/java/org/springframework/core/ResolvableType.java +++ b/spring-core/src/main/java/org/springframework/core/ResolvableType.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2016 the original author or authors. + * Copyright 2002-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -1356,11 +1356,12 @@ public class ResolvableType implements Serializable { } /** - * Clear the internal {@code ResolvableType} cache. + * Clear the internal {@code ResolvableType}/{@code SerializableTypeWrapper} cache. * @since 4.2 */ public static void clearCache() { cache.clear(); + SerializableTypeWrapper.cache.clear(); } diff --git a/spring-core/src/main/java/org/springframework/core/SerializableTypeWrapper.java b/spring-core/src/main/java/org/springframework/core/SerializableTypeWrapper.java index 5ed4db0fa2b..770d77a046b 100644 --- a/spring-core/src/main/java/org/springframework/core/SerializableTypeWrapper.java +++ b/spring-core/src/main/java/org/springframework/core/SerializableTypeWrapper.java @@ -59,8 +59,7 @@ abstract class SerializableTypeWrapper { private static final Class[] SUPPORTED_SERIALIZABLE_TYPES = { GenericArrayType.class, ParameterizedType.class, TypeVariable.class, WildcardType.class}; - private static final ConcurrentReferenceHashMap cache = - new ConcurrentReferenceHashMap(256); + static final ConcurrentReferenceHashMap cache = new ConcurrentReferenceHashMap(256); /** @@ -84,7 +83,7 @@ abstract class SerializableTypeWrapper { */ @SuppressWarnings("serial") public static Type forGenericSuperclass(final Class type) { - return forTypeProvider(new DefaultTypeProvider() { + return forTypeProvider(new SimpleTypeProvider() { @Override public Type getType() { return type.getGenericSuperclass(); @@ -100,7 +99,7 @@ abstract class SerializableTypeWrapper { Type[] result = new Type[type.getGenericInterfaces().length]; for (int i = 0; i < result.length; i++) { final int index = i; - result[i] = forTypeProvider(new DefaultTypeProvider() { + result[i] = forTypeProvider(new SimpleTypeProvider() { @Override public Type getType() { return type.getGenericInterfaces()[index]; @@ -118,7 +117,7 @@ abstract class SerializableTypeWrapper { Type[] result = new Type[type.getTypeParameters().length]; for (int i = 0; i < result.length; i++) { final int index = i; - result[i] = forTypeProvider(new DefaultTypeProvider() { + result[i] = forTypeProvider(new SimpleTypeProvider() { @Override public Type getType() { return type.getTypeParameters()[index]; @@ -198,10 +197,10 @@ abstract class SerializableTypeWrapper { /** - * Default implementation of {@link TypeProvider} with a {@code null} source. + * Base implementation of {@link TypeProvider} with a {@code null} source. */ @SuppressWarnings("serial") - private static abstract class DefaultTypeProvider implements TypeProvider { + private static abstract class SimpleTypeProvider implements TypeProvider { @Override public Object getSource() {