From dd1d65bb23d1dc82d5f4f1294935da83cf4acd2c Mon Sep 17 00:00:00 2001 From: Artem Bilan Date: Fri, 1 Nov 2019 15:54:12 -0400 Subject: [PATCH] Refinement for ResolvableType JSON header Fix a logic in the `JsonToObjectTransformer.obtainResolvableTypeFromHeadersIfAny` when we have both `JsonHeaders.RESOLVABLE_TYPE` and `JsonHeaders.TYPE_ID` and `JsonHeaders.RESOLVABLE_TYPE` header is valid `ResolvableType`, so `JsonHeaders.TYPE_ID` doesn't override its value to return --- .../integration/json/JsonToObjectTransformer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-integration-core/src/main/java/org/springframework/integration/json/JsonToObjectTransformer.java b/spring-integration-core/src/main/java/org/springframework/integration/json/JsonToObjectTransformer.java index 2481d6ac76..aac982fcdd 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/json/JsonToObjectTransformer.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/json/JsonToObjectTransformer.java @@ -148,7 +148,7 @@ public class JsonToObjectTransformer extends AbstractTransformer implements Bean private ResolvableType obtainResolvableTypeFromHeadersIfAny(MessageHeaders headers) { Object valueType = headers.get(JsonHeaders.RESOLVABLE_TYPE); Object typeIdHeader = headers.get(JsonHeaders.TYPE_ID); - if (typeIdHeader != null) { + if (!(valueType instanceof ResolvableType) && typeIdHeader != null) { Class targetClass = getClassForValue(typeIdHeader); Class contentClass = null; Class keyClass = null;