From 97bd85e6283f50e80ad88eca8106fbc1e876ed2a Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Wed, 21 Jun 2017 17:33:28 +0200 Subject: [PATCH] DATACMNS-1095 - Made ObjectInstantiator public to avoid IllegalAccessErrors. ObjectInstantiator needs to be declared public as otherwise loading the implementation class fails as it doesn't have access to the (package) private interface in a different classloader. --- .../convert/ClassGeneratingEntityInstantiator.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/springframework/data/convert/ClassGeneratingEntityInstantiator.java b/src/main/java/org/springframework/data/convert/ClassGeneratingEntityInstantiator.java index c62c3d5af..f0b46766c 100644 --- a/src/main/java/org/springframework/data/convert/ClassGeneratingEntityInstantiator.java +++ b/src/main/java/org/springframework/data/convert/ClassGeneratingEntityInstantiator.java @@ -55,8 +55,7 @@ public class ClassGeneratingEntityInstantiator implements EntityInstantiator { private final ObjectInstantiatorClassGenerator generator; - private volatile Map, EntityInstantiator> entityInstantiators = new HashMap<>( - 32); + private volatile Map, EntityInstantiator> entityInstantiators = new HashMap<>(32); /** * Creates a new {@link ClassGeneratingEntityInstantiator}. @@ -219,6 +218,7 @@ public class ClassGeneratingEntityInstantiator implements EntityInstantiator { return it.getParameters().stream()// .map(provider::getParameterValue)// + .map(value -> value.orElse(null))// .toArray(); }).orElse(EMPTY_ARRAY); @@ -226,10 +226,12 @@ public class ClassGeneratingEntityInstantiator implements EntityInstantiator { } /** + * Needs to be public as otherwise the implementation class generated does not see the interface from the classloader. + * * @author Thomas Darimont + * @author Oliver Gierke */ - private static interface ObjectInstantiator { - + public interface ObjectInstantiator { Object newInstance(Object... args); }