fix: DeserializationModelCreator check for custom deserializers during internal instead of in chain
diff --git a/src/main/java/org/eclipse/yasson/internal/deserializer/DeserializationModelCreator.java b/src/main/java/org/eclipse/yasson/internal/deserializer/DeserializationModelCreator.java index 7d59e97..3a5377c 100644 --- a/src/main/java/org/eclipse/yasson/internal/deserializer/DeserializationModelCreator.java +++ b/src/main/java/org/eclipse/yasson/internal/deserializer/DeserializationModelCreator.java
@@ -153,6 +153,14 @@ models.put(cachedItem, deserializer); return deserializer; } + Optional<DeserializerBinding<?>> deserializerBinding = userDeserializer(type, + (ComponentBoundCustomization) propertyCustomization); + if (deserializerBinding.isPresent()) { + UserDefinedDeserializer user = new UserDefinedDeserializer(deserializerBinding.get().getJsonbDeserializer(), + JustReturn.instance(), type, classModel.getClassCustomization()); + models.put(cachedItem, user); + return user; + } Optional<AdapterBinding> adapterBinding = adapterBinding(type, (ComponentBoundCustomization) propertyCustomization); if (adapterBinding.isPresent()) { AdapterBinding adapter = adapterBinding.get(); @@ -202,14 +210,6 @@ Class<?> rawType, CachedItem cachedItem) { ClassCustomization classCustomization = classModel.getClassCustomization(); - Optional<DeserializerBinding<?>> deserializerBinding = userDeserializer(type, - (ComponentBoundCustomization) propertyCustomization); - if (deserializerBinding.isPresent()) { - UserDefinedDeserializer user = new UserDefinedDeserializer(deserializerBinding.get().getJsonbDeserializer(), - JustReturn.instance(), type, classCustomization); - models.put(cachedItem, user); - return user; - } JsonbCreator creator = classCustomization.getCreator(); boolean hasCreator = creator != null; List<String> params = hasCreator ? creatorParamsList(creator) : Collections.emptyList();