From 5b60d487e1b1522fa08c7cc68c893f2acac5928a Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Wed, 13 May 2015 18:33:58 +0200 Subject: [PATCH] =?UTF-8?q?DATACMNS-695=20-=20Fixed=20potential=20NullPoin?= =?UTF-8?q?terException=20in=20AbstractMappingContext.getPersistentPropert?= =?UTF-8?q?yPath(=E2=80=A6).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When traversing nested property paths, AbstractMappingContext.getPersistentPropertyPath(…) previously used the raw actual property type. If the property path contains a reference to a generically typed property, this causes the deeper paths not being resolved correctly. We now explicitly use the TypeInformation of the property to retain generics information while traversing the path. --- .../context/AbstractMappingContext.java | 2 +- .../AbstractMappingContextUnitTests.java | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/springframework/data/mapping/context/AbstractMappingContext.java b/src/main/java/org/springframework/data/mapping/context/AbstractMappingContext.java index 47e9dbd85..4db922024 100644 --- a/src/main/java/org/springframework/data/mapping/context/AbstractMappingContext.java +++ b/src/main/java/org/springframework/data/mapping/context/AbstractMappingContext.java @@ -239,7 +239,7 @@ public abstract class AbstractMappingContext iterableWithSize(3))); + } + private static void assertHasEntityFor(Class type, SampleMappingContext context, boolean expected) { boolean found = false; @@ -283,4 +293,17 @@ public class AbstractMappingContextUnitTests { static class Extension extends Base { @Id String foo; } + + static class Outer { + + Wrapper field; + } + + static class Wrapper { + T wrapped; + } + + static class Inner { + String field; + } }