From f6b95630c49da0fe9d6569e337cda0923f5574bb Mon Sep 17 00:00:00 2001 From: Artem Bilan Date: Sat, 7 Nov 2015 20:13:25 -0500 Subject: [PATCH] INT-3871: Fix NPE in the JsonPropertyAccessor JIRA: https://jira.spring.io/browse/INT-3871 **Cherry-pick to 4.1.x, 4.0.x, 3.0.x** --- .../json/JsonPropertyAccessor.java | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/spring-integration-core/src/main/java/org/springframework/integration/json/JsonPropertyAccessor.java b/spring-integration-core/src/main/java/org/springframework/integration/json/JsonPropertyAccessor.java index 3edabf9de5..0d96872c2d 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/json/JsonPropertyAccessor.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/json/JsonPropertyAccessor.java @@ -18,12 +18,6 @@ package org.springframework.integration.json; import java.io.IOException; -import org.springframework.expression.AccessException; -import org.springframework.expression.EvaluationContext; -import org.springframework.expression.PropertyAccessor; -import org.springframework.expression.TypedValue; -import org.springframework.util.Assert; - import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; @@ -31,6 +25,12 @@ import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ContainerNode; import com.fasterxml.jackson.databind.node.ObjectNode; +import org.springframework.expression.AccessException; +import org.springframework.expression.EvaluationContext; +import org.springframework.expression.PropertyAccessor; +import org.springframework.expression.TypedValue; +import org.springframework.util.Assert; + /** * A SpEL {@link PropertyAccessor} that knows how to read on Jackson JSON objects. * @@ -116,7 +116,13 @@ public class JsonPropertyAccessor implements PropertyAccessor { return new TypedValue(wrap(container.get(index))); } else { - return new TypedValue(wrap(container.get(name))); + JsonNode json = container.get(name); + if (json != null) { + return new TypedValue(wrap(json)); + } + else { + return null; + } } }