From c1c5e3bdbb147a44ba79e6bd730bd1ec68bad9b3 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/MongoDbFactorySupport.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/MongoDbFactorySupport.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoDbFactorySupport.java index 9915656b5..fb83767e5 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoDbFactorySupport.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoDbFactorySupport.java @@ -265,7 +265,7 @@ public abstract class MongoDbFactorySupport implements MongoDbFactory { 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())); } } 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 741191e11..458ca7b66 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 @@ -233,7 +233,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())); } } } 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 0a4d99325..9370e7790 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 6d3d48bb1..d441d1438 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 @@ -56,6 +56,6 @@ class QueryUtils { return combinedSort; }); - return (Query) factory.getProxy(); + return (Query) factory.getProxy(query.getClass().getClassLoader()); } }