From 5708d6af121370d82e0887ca49a8b09de4462123 Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Wed, 18 Apr 2018 18:51:47 +0200 Subject: [PATCH] DATACMNS-1294 - Consider java.time types simple ones. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit To prevent repeated failing calls to ClassUtils.forName(…) we now also cache the failed attempt and simply eagerly return null as subsequent similar attempts to resolve a class are going to fail anyway. Original pull request: #286. --- .../data/mapping/model/SimpleTypeHolder.java | 4 +++- .../data/mapping/SimpleTypeHolderUnitTests.java | 9 +++++++++ 2 files changed, 12 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 152928777..1fc6f9d83 100644 --- a/src/main/java/org/springframework/data/mapping/model/SimpleTypeHolder.java +++ b/src/main/java/org/springframework/data/mapping/model/SimpleTypeHolder.java @@ -123,7 +123,9 @@ public class SimpleTypeHolder { return true; } - if (type.getName().startsWith("java.lang")) { + String typeName = type.getName(); + + if (typeName.startsWith("java.lang") || typeName.startsWith("java.time")) { return true; } diff --git a/src/test/java/org/springframework/data/mapping/SimpleTypeHolderUnitTests.java b/src/test/java/org/springframework/data/mapping/SimpleTypeHolderUnitTests.java index 76abc21a4..addf8a84e 100644 --- a/src/test/java/org/springframework/data/mapping/SimpleTypeHolderUnitTests.java +++ b/src/test/java/org/springframework/data/mapping/SimpleTypeHolderUnitTests.java @@ -19,6 +19,7 @@ import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.*; 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), is(true)); } + @Test // DATACMNS-1294 + public void considersJavaTimeTypesSimple() { + + SimpleTypeHolder holder = new SimpleTypeHolder(); + + assertThat(holder.isSimpleType(Instant.class), is(true)); + } + enum SimpleEnum { FOO;