@@ -122,19 +122,14 @@ public <J> JavaType<J> resolveDescriptor(Class<? extends J> javaType, Supplier<J
122122 }
123123
124124 private static <J > JavaType <J > checkCached (Class <? extends J > javaClass , JavaType <?> cached ) {
125- final var cachedClass = cached .getJavaTypeClass ();
126- if ( !isCompatible ( javaClass , cachedClass ) ) {
125+ if ( cached .getJavaTypeClass () != canonicalize ( javaClass ) ) {
127126 throw new IllegalStateException ( "Type registration was corrupted for: " + javaClass .getName () );
128127 }
129128 @ SuppressWarnings ("unchecked" ) // safe, we just checked
130129 final var resolvedType = (JavaType <J >) cached ;
131130 return resolvedType ;
132131 }
133132
134- private static boolean isCompatible (Class <?> givenClass , Class <?> cachedClass ) {
135- return cachedClass == canonicalize ( givenClass );
136- }
137-
138133 @ Deprecated (since = "7.2" , forRemoval = true ) // Can be private
139134 private JavaType <?> resolveDescriptor (String javaTypeName , Supplier <? extends JavaType <?>> creator ) {
140135 final var cached = descriptorsByTypeName .get ( javaTypeName );
@@ -180,10 +175,15 @@ public <T> JavaType<T[]> resolveArrayDescriptor(Class<T> elementJavaType) {
180175// () -> createArrayTypeDescriptor( elementJavaType, JavaTypeRegistry::createMutabilityPlan) );
181176// }
182177
178+ @ Internal @ FunctionalInterface
179+ public interface MutabilityPlanCreator {
180+ MutabilityPlan <?> create (Type elementJavaType , TypeConfiguration typeConfiguration );
181+ }
182+
183183 @ Internal // Can be demoted to private
184184 public <J > JavaType <J > resolveDescriptor (
185185 Class <J > javaType ,
186- BiFunction < Type , TypeConfiguration , MutabilityPlan <?>> mutabilityPlanCreator ) {
186+ MutabilityPlanCreator mutabilityPlanCreator ) {
187187 //noinspection unchecked
188188 return resolveDescriptor (
189189 javaType ,
@@ -196,7 +196,7 @@ public <J> JavaType<J> resolveDescriptor(
196196 @ Internal // Can be demoted to private
197197 public JavaType <?> resolveDescriptor (
198198 Type javaType ,
199- BiFunction < Type , TypeConfiguration , MutabilityPlan <?>> mutabilityPlanCreator ) {
199+ MutabilityPlanCreator mutabilityPlanCreator ) {
200200 return resolveDescriptor (
201201 javaType .getTypeName (),
202202 () -> {
@@ -214,20 +214,24 @@ else if ( javaType instanceof Class<?> javaClass && javaClass.isArray() ) {
214214 );
215215 }
216216
217- private <J > JavaType <J []> createArrayTypeDescriptor (Class <J > elementJavaType , BiFunction <Type , TypeConfiguration , MutabilityPlan <?>> mutabilityPlanCreator ) {
217+ private <J > JavaType <J []> createArrayTypeDescriptor (
218+ Class <J > elementJavaType ,
219+ MutabilityPlanCreator mutabilityPlanCreator ) {
218220 var elementTypeDescriptor = findDescriptor ( elementJavaType );
219221 if ( elementTypeDescriptor == null ) {
220222 elementTypeDescriptor = createTypeDescriptor ( elementJavaType , mutabilityPlanCreator );
221223 }
222224 return new ArrayJavaType <>( elementTypeDescriptor );
223225 }
224226
225- private <J > JavaType <J > createTypeDescriptor (Type javaType , BiFunction <Type , TypeConfiguration , MutabilityPlan <?>> mutabilityPlanCreator ) {
227+ private <J > JavaType <J > createTypeDescriptor (
228+ Type javaType ,
229+ MutabilityPlanCreator mutabilityPlanCreator ) {
226230 //noinspection unchecked
227231 return RegistryHelper .INSTANCE .createTypeDescriptor (
228232 javaType ,
229233 () -> (MutabilityPlan <J >)
230- mutabilityPlanCreator .apply ( javaType , typeConfiguration ),
234+ mutabilityPlanCreator .create ( javaType , typeConfiguration ),
231235 typeConfiguration
232236 );
233237 }
@@ -289,11 +293,12 @@ private <J> JavaType<?> resolveManagedTypeDescriptor(
289293
290294 final var determinedPlan =
291295 RegistryHelper .INSTANCE .determineMutabilityPlan ( javaTypeClass , typeConfiguration );
292- final MutabilityPlan <J > mutabilityPlan =
296+ return instantiate .apply (
297+ javaTypeClass ,
293298 determinedPlan != null
294299 ? determinedPlan
295- : MutableMutabilityPlan .instance ();
296- return instantiate . apply ( javaTypeClass , mutabilityPlan );
300+ : MutableMutabilityPlan .instance ()
301+ );
297302 }
298303 );
299304 }
0 commit comments