From d05dd24a4ba98b5e34ca29ca551ba45d84365ca4 Mon Sep 17 00:00:00 2001 From: Oliver Drotbohm Date: Thu, 16 Jan 2020 14:08:00 +0100 Subject: [PATCH] DATACMNS-1639 - Re-instantiate API in legacy EntityInstantiators. To retain backwards compatibility for the legacy EntityInstantiators API, we now adapt the map values for custom instantiators that are handed into the constructors of EntityInstantiators. --- .../data/convert/EntityInstantiators.java | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/springframework/data/convert/EntityInstantiators.java b/src/main/java/org/springframework/data/convert/EntityInstantiators.java index 4eb45d05f..c8b5ef719 100644 --- a/src/main/java/org/springframework/data/convert/EntityInstantiators.java +++ b/src/main/java/org/springframework/data/convert/EntityInstantiators.java @@ -17,6 +17,8 @@ package org.springframework.data.convert; import java.util.Collections; import java.util.Map; +import java.util.Map.Entry; +import java.util.stream.Collectors; import org.springframework.data.mapping.PersistentEntity; import org.springframework.data.mapping.model.InternalEntityInstantiatorFactory; @@ -46,7 +48,7 @@ public class EntityInstantiators extends org.springframework.data.mapping.model. * * @param fallback must not be {@literal null}. */ - public EntityInstantiators(org.springframework.data.mapping.model.EntityInstantiator fallback) { + public EntityInstantiators(EntityInstantiator fallback) { super(fallback, Collections.emptyMap()); } @@ -55,9 +57,9 @@ public class EntityInstantiators extends org.springframework.data.mapping.model. * * @param customInstantiators must not be {@literal null}. */ - public EntityInstantiators( - Map, org.springframework.data.mapping.model.EntityInstantiator> customInstantiators) { - super(InternalEntityInstantiatorFactory.getKotlinClassGeneratingEntityInstantiator(), customInstantiators); + public EntityInstantiators(Map, EntityInstantiator> customInstantiators) { + super(InternalEntityInstantiatorFactory.getKotlinClassGeneratingEntityInstantiator(), + adaptFromLegacy(customInstantiators)); } /** @@ -67,9 +69,9 @@ public class EntityInstantiators extends org.springframework.data.mapping.model. * @param defaultInstantiator must not be {@literal null}. * @param customInstantiators must not be {@literal null}. */ - public EntityInstantiators(org.springframework.data.mapping.model.EntityInstantiator defaultInstantiator, - Map, org.springframework.data.mapping.model.EntityInstantiator> customInstantiators) { - super(defaultInstantiator, customInstantiators); + public EntityInstantiators(EntityInstantiator defaultInstantiator, + Map, EntityInstantiator> customInstantiators) { + super(defaultInstantiator, adaptFromLegacy(customInstantiators)); } /* @@ -80,4 +82,13 @@ public class EntityInstantiators extends org.springframework.data.mapping.model. public EntityInstantiator getInstantiatorFor(PersistentEntity entity) { return new EntityInstantiatorAdapter(super.getInstantiatorFor(entity)); } + + private static Map, org.springframework.data.mapping.model.EntityInstantiator> adaptFromLegacy( + Map, EntityInstantiator> instantiators) { + + return instantiators == null // + ? null // + : instantiators.entrySet().stream() // + .collect(Collectors.toMap(Entry::getKey, e -> new EntityInstantiatorAdapter(e.getValue()))); + } }