From af39b422b60b9513da2b75cbf7a655ed7f466ba7 Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Thu, 14 May 2020 10:51:22 +0200 Subject: [PATCH] DATAMONGO-2547 - Use target class ClassLoader instead of default CL when creating proxy instances. Original pull request: #865. --- .../data/mongodb/core/MongoDatabaseFactorySupport.java | 2 +- .../data/mongodb/core/SimpleReactiveMongoDatabaseFactory.java | 2 +- .../data/mongodb/core/convert/DefaultDbRefResolver.java | 2 +- .../data/mongodb/repository/query/QueryUtils.java | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoDatabaseFactorySupport.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoDatabaseFactorySupport.java index c716015ee..976255006 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoDatabaseFactorySupport.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoDatabaseFactorySupport.java @@ -257,7 +257,7 @@ public abstract class MongoDatabaseFactorySupport implements MongoDatabaseFac factory.addAdvice(new SessionAwareMethodInterceptor<>(session, target, ClientSession.class, MongoDatabase.class, this::proxyDatabase, MongoCollection.class, this::proxyCollection)); - return targetType.cast(factory.getProxy()); + return targetType.cast(factory.getProxy(target.getClass().getClassLoader())); } public ClientSession getSession() { diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/SimpleReactiveMongoDatabaseFactory.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/SimpleReactiveMongoDatabaseFactory.java index 603e8d027..98c4003c5 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/SimpleReactiveMongoDatabaseFactory.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/SimpleReactiveMongoDatabaseFactory.java @@ -271,7 +271,7 @@ public class SimpleReactiveMongoDatabaseFactory implements DisposableBean, React factory.addAdvice(new SessionAwareMethodInterceptor<>(session, target, ClientSession.class, MongoDatabase.class, this::proxyDatabase, MongoCollection.class, this::proxyCollection)); - return targetType.cast(factory.getProxy()); + return targetType.cast(factory.getProxy(target.getClass().getClassLoader())); } public ClientSession getSession() { diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/DefaultDbRefResolver.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/DefaultDbRefResolver.java index 8e4baa5fd..45b9e6bb7 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/DefaultDbRefResolver.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/DefaultDbRefResolver.java @@ -202,7 +202,7 @@ public class DefaultDbRefResolver implements DbRefResolver { proxyFactory.addInterface(propertyType); proxyFactory.addAdvice(interceptor); - return handler.populateId(property, dbref, proxyFactory.getProxy()); + return handler.populateId(property, dbref, proxyFactory.getProxy(LazyLoadingProxy.class.getClassLoader())); } /** diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/QueryUtils.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/QueryUtils.java index d08e1a87c..b62891e3b 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/QueryUtils.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/QueryUtils.java @@ -61,7 +61,7 @@ class QueryUtils { return combinedSort; }); - return (Query) factory.getProxy(); + return (Query) factory.getProxy(query.getClass().getClassLoader()); } /**