From 90f55a78f9c3ae01f605ce8cc8d1dca506ead7b6 Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Tue, 16 Feb 2021 17:28:01 +0100 Subject: [PATCH 1/2] Prepare issue branch. --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9be85dfb76..faafc7dbf2 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.data spring-data-commons - 2.5.0-SNAPSHOT + 2.5.0-GH-2298-SNAPSHOT Spring Data Core From adc1d4616d6c041784791edfda063a3b532714d5 Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Tue, 16 Feb 2021 17:34:39 +0100 Subject: [PATCH 2/2] Use NativeDetector.inNativeImage() instead of manual property check. Relates to: spring-projects/spring-framework#25795 --- .../data/mapping/context/AbstractMappingContext.java | 5 ++--- .../mapping/model/ClassGeneratingEntityInstantiator.java | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) 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 11549511bc..f04bdd5ac3 100644 --- a/src/main/java/org/springframework/data/mapping/context/AbstractMappingContext.java +++ b/src/main/java/org/springframework/data/mapping/context/AbstractMappingContext.java @@ -38,6 +38,7 @@ import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.ApplicationEventPublisherAware; import org.springframework.core.KotlinDetector; +import org.springframework.core.NativeDetector; import org.springframework.data.mapping.MappingException; import org.springframework.data.mapping.PersistentEntity; import org.springframework.data.mapping.PersistentProperty; @@ -86,8 +87,6 @@ public abstract class AbstractMappingContext, P extends PersistentProperty

> implements MappingContext, ApplicationEventPublisherAware, ApplicationContextAware, InitializingBean { - private static final boolean IN_NATIVE_IMAGE = System.getProperty("org.graalvm.nativeimage.imagecode") != null; - private final Optional NONE = Optional.empty(); private final Map, Optional> persistentEntities = new HashMap<>(); private final PersistentPropertyAccessorFactory persistentPropertyAccessorFactory; @@ -109,7 +108,7 @@ protected AbstractMappingContext() { this.persistentPropertyPathFactory = new PersistentPropertyPathFactory<>(this); EntityInstantiators instantiators = new EntityInstantiators(); - PersistentPropertyAccessorFactory accessorFactory = IN_NATIVE_IMAGE ? BeanWrapperPropertyAccessorFactory.INSTANCE + PersistentPropertyAccessorFactory accessorFactory = NativeDetector.inNativeImage() ? BeanWrapperPropertyAccessorFactory.INSTANCE : new ClassGeneratingPropertyAccessorFactory(); this.persistentPropertyAccessorFactory = new InstantiationAwarePropertyAccessorFactory(accessorFactory, diff --git a/src/main/java/org/springframework/data/mapping/model/ClassGeneratingEntityInstantiator.java b/src/main/java/org/springframework/data/mapping/model/ClassGeneratingEntityInstantiator.java index b6cc3413e0..0b997c9e1a 100644 --- a/src/main/java/org/springframework/data/mapping/model/ClassGeneratingEntityInstantiator.java +++ b/src/main/java/org/springframework/data/mapping/model/ClassGeneratingEntityInstantiator.java @@ -31,6 +31,7 @@ import org.springframework.asm.Opcodes; import org.springframework.asm.Type; import org.springframework.cglib.core.ReflectUtils; +import org.springframework.core.NativeDetector; import org.springframework.data.mapping.PersistentEntity; import org.springframework.data.mapping.PersistentProperty; import org.springframework.data.mapping.PreferredConstructor; @@ -55,7 +56,6 @@ class ClassGeneratingEntityInstantiator implements EntityInstantiator { private static final Log LOGGER = LogFactory.getLog(ClassGeneratingEntityInstantiator.class); - private static final boolean IN_NATIVE_IMAGE = System.getProperty("org.graalvm.nativeimage.imagecode") != null; private static final Object[] EMPTY_ARGS = new Object[0]; @@ -142,7 +142,7 @@ protected EntityInstantiator doCreateEntityInstantiator(PersistentEntity e */ boolean shouldUseReflectionEntityInstantiator(PersistentEntity entity) { - if (IN_NATIVE_IMAGE) { + if (NativeDetector.inNativeImage()) { if (LOGGER.isDebugEnabled()) { LOGGER.debug(String.format("graalvm.nativeimage - fall back to reflection for %s.", entity.getName()));