From 57e4e70314592ea4f15b355ac0d30dcc05204596 Mon Sep 17 00:00:00 2001 From: Vladimir Vishnevskii <1594938+smagellan@users.noreply.github.com> Date: Mon, 7 Apr 2025 23:37:40 +0300 Subject: [PATCH] Dynamically load com.mongodb.internal.build.MongoDriverVersion.VERSION Dynamically load com.mongodb.internal.build.MongoDriverVersion.VERSION -- Closes gh-4937 Signed-off-by: Vladimir Vishnevskii <1594938+smagellan@users.noreply.github.com> Signed-off-by: Vladimir Vishnevskii <1594938+smagellan@users.noreply.github.com> --- .../data/mongodb/util/MongoClientVersion.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/MongoClientVersion.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/MongoClientVersion.java index 991a7292fd..8d45dcaea6 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/MongoClientVersion.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/MongoClientVersion.java @@ -27,6 +27,7 @@ * * @author Christoph Strobl * @author Mark Paluch + * @author Vladimir Vishnevskii * @since 1.7 */ public class MongoClientVersion { @@ -96,7 +97,7 @@ private static Version getVersionFromPackage(ClassLoader classLoader) { if (ClassUtils.isPresent("com.mongodb.internal.build.MongoDriverVersion", classLoader)) { try { - return Version.parse(MongoDriverVersion.VERSION); + return Version.parse(loadVersionFromMongoDriverVersion()); } catch (IllegalArgumentException exception) { // well not much we can do, right? } @@ -104,6 +105,12 @@ private static Version getVersionFromPackage(ClassLoader classLoader) { return null; } + @Nullable + private static String loadVersionFromMongoDriverVersion() { + Field versionField = ReflectionUtils.findField(MongoDriverVersion.class, "VERSION"); + return (String) ReflectionUtils.getField(versionField, null); + } + private static Version guessDriverVersionFromClassPath(ClassLoader classLoader) { if (ClassUtils.isPresent("com.mongodb.internal.connection.StreamFactoryFactory", classLoader)) {