From 2d24acf9ded98ac0e535e6ca67d609e71c62e351 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Fri, 13 Apr 2018 08:43:43 +0200 Subject: [PATCH] DATACMNS-1294 - Consider java.time types simple ones. We now consider all types in the java.time package as simple types to prevent deep reflective access. We are already excluding java.lang types for the same reason. Original pull request: #286. --- .../data/mapping/model/SimpleTypeHolder.java | 5 ++++- .../data/mapping/SimpleTypeHolderUnitTests.java | 9 +++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/springframework/data/mapping/model/SimpleTypeHolder.java b/src/main/java/org/springframework/data/mapping/model/SimpleTypeHolder.java index 3cc4d8f71..7512b8897 100644 --- a/src/main/java/org/springframework/data/mapping/model/SimpleTypeHolder.java +++ b/src/main/java/org/springframework/data/mapping/model/SimpleTypeHolder.java @@ -155,7 +155,9 @@ public class SimpleTypeHolder { return isSimpleType; } - if (type.getName().startsWith("java.lang")) { + String typeName = type.getName(); + + if (typeName.startsWith("java.lang") || type.getName().startsWith("java.time")) { return true; } @@ -170,6 +172,7 @@ public class SimpleTypeHolder { } this.simpleTypes = put(localSimpleTypes, type, false); + return false; } diff --git a/src/test/java/org/springframework/data/mapping/SimpleTypeHolderUnitTests.java b/src/test/java/org/springframework/data/mapping/SimpleTypeHolderUnitTests.java index 6820828f0..aebcfeecc 100755 --- a/src/test/java/org/springframework/data/mapping/SimpleTypeHolderUnitTests.java +++ b/src/test/java/org/springframework/data/mapping/SimpleTypeHolderUnitTests.java @@ -18,6 +18,7 @@ package org.springframework.data.mapping; import static org.assertj.core.api.Assertions.*; import java.lang.reflect.Type; +import java.time.Instant; import java.util.Collections; import java.util.HashSet; import java.util.UUID; @@ -114,6 +115,14 @@ public class SimpleTypeHolderUnitTests { assertThat(holder.isSimpleType(Type.class)).isTrue(); } + @Test // DATACMNS-1294 + public void considersJavaTimeTypesSimple() { + + SimpleTypeHolder holder = SimpleTypeHolder.DEFAULT; + + assertThat(holder.isSimpleType(Instant.class)).isTrue(); + } + @Test // DATACMNS-1101 public void considersExtendedTypeAsSimple() {