From a00935f66d49ea0f01fbdccdb2331e34ed09d391 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 e1f62f182..e4905c3eb 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 ca221907d..1a482a665 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() {