diff --git a/bson/src/jvmMain/kotlin/types/Instant.jvm.kt b/bson/src/jvmMain/kotlin/types/Instant.jvm.kt index 1e79eea2..61cdf513 100644 --- a/bson/src/jvmMain/kotlin/types/Instant.jvm.kt +++ b/bson/src/jvmMain/kotlin/types/Instant.jvm.kt @@ -24,9 +24,6 @@ import org.bson.codecs.kotlinx.BsonDecoder import org.bson.codecs.kotlinx.BsonEncoder import kotlin.time.Instant -private val isOfficialKotlinSerializationEnabled = - ClassLoader.getSystemClassLoader().loadClass("org.bson.codecs.kotlinx.BsonEncoder") != null - @OptIn(ExperimentalSerializationApi::class) internal actual fun serializeInstantPlatformSpecific(encoder: Encoder, value: Instant) { if (isOfficialKotlinSerializationEnabled && encoder is BsonEncoder) { diff --git a/bson/src/jvmMain/kotlin/types/IsBsonKotlinXPresent.kt b/bson/src/jvmMain/kotlin/types/IsBsonKotlinXPresent.kt new file mode 100644 index 00000000..32ace96a --- /dev/null +++ b/bson/src/jvmMain/kotlin/types/IsBsonKotlinXPresent.kt @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2026, OpenSavvy and contributors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package opensavvy.ktmongo.bson.types + +internal val isOfficialKotlinSerializationEnabled: Boolean = try { + Class.forName("org.bson.codecs.kotlinx.BsonEncoder") + true +} catch (_: ClassNotFoundException) { + false +} diff --git a/bson/src/jvmMain/kotlin/types/ObjectId.jvm.kt b/bson/src/jvmMain/kotlin/types/ObjectId.jvm.kt index e9856d75..c7a7d14c 100644 --- a/bson/src/jvmMain/kotlin/types/ObjectId.jvm.kt +++ b/bson/src/jvmMain/kotlin/types/ObjectId.jvm.kt @@ -22,9 +22,6 @@ import kotlinx.serialization.encoding.Encoder import org.bson.codecs.kotlinx.BsonDecoder import org.bson.codecs.kotlinx.BsonEncoder -private val isOfficialKotlinSerializationEnabled = - ClassLoader.getSystemClassLoader().loadClass("org.bson.codecs.kotlinx.BsonEncoder") != null - @OptIn(ExperimentalSerializationApi::class) internal actual fun serializeObjectIdPlatformSpecific(encoder: Encoder, value: ObjectId) { if (isOfficialKotlinSerializationEnabled && encoder is BsonEncoder) { diff --git a/bson/src/jvmMain/kotlin/types/Timestamp.jvm.kt b/bson/src/jvmMain/kotlin/types/Timestamp.jvm.kt index 2e16da02..7841dc83 100644 --- a/bson/src/jvmMain/kotlin/types/Timestamp.jvm.kt +++ b/bson/src/jvmMain/kotlin/types/Timestamp.jvm.kt @@ -25,9 +25,6 @@ import org.bson.codecs.kotlinx.BsonEncoder import kotlin.time.ExperimentalTime import kotlin.time.Instant -private val isOfficialKotlinSerializationEnabled = - ClassLoader.getSystemClassLoader().loadClass("org.bson.codecs.kotlinx.BsonEncoder") != null - @OptIn(ExperimentalTime::class, ExperimentalSerializationApi::class) internal actual fun serializeTimestampPlatformSpecific(encoder: Encoder, value: Timestamp) { if (isOfficialKotlinSerializationEnabled && encoder is BsonEncoder) { diff --git a/bson/src/jvmMain/kotlin/types/Uuid.jvm.kt b/bson/src/jvmMain/kotlin/types/Uuid.jvm.kt index bc39e79a..abc3b0c3 100644 --- a/bson/src/jvmMain/kotlin/types/Uuid.jvm.kt +++ b/bson/src/jvmMain/kotlin/types/Uuid.jvm.kt @@ -27,9 +27,6 @@ import kotlin.uuid.Uuid import kotlin.uuid.toJavaUuid import kotlin.uuid.toKotlinUuid -private val isOfficialKotlinSerializationEnabled = - ClassLoader.getSystemClassLoader().loadClass("org.bson.codecs.kotlinx.BsonEncoder") != null - @OptIn(ExperimentalUuidApi::class, ExperimentalSerializationApi::class) internal actual fun serializeUuidPlatformSpecific(encoder: Encoder, value: Uuid) { if (isOfficialKotlinSerializationEnabled && encoder is BsonEncoder) { diff --git a/bson/src/jvmMain/kotlin/types/Vector.jvm.kt b/bson/src/jvmMain/kotlin/types/Vector.jvm.kt index 69312fba..80c50e7e 100644 --- a/bson/src/jvmMain/kotlin/types/Vector.jvm.kt +++ b/bson/src/jvmMain/kotlin/types/Vector.jvm.kt @@ -24,9 +24,6 @@ import org.bson.BsonBinarySubType import org.bson.codecs.kotlinx.BsonDecoder import org.bson.codecs.kotlinx.BsonEncoder -private val isOfficialKotlinSerializationEnabled = - ClassLoader.getSystemClassLoader().loadClass("org.bson.codecs.kotlinx.BsonEncoder") != null - @OptIn(ExperimentalSerializationApi::class, LowLevelApi::class) internal actual fun serializeVectorPlatformSpecific(encoder: Encoder, value: Vector) { if (isOfficialKotlinSerializationEnabled && encoder is BsonEncoder) {