From 70d16710bb480faa40da29d27c0791397ae748db Mon Sep 17 00:00:00 2001 From: twisti-dev <76837088+twisti-dev@users.noreply.github.com> Date: Mon, 22 Jun 2026 00:40:31 +0200 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor(service-util):=20?= =?UTF-8?q?improve=20service=20loader=20fallback=20mechanism?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - update getCallerClass usage to support fallback loading - refine serviceWithFallback type parameter to ensure proper type safety --- gradle.properties | 2 +- .../main/kotlin/dev/slne/surf/api/core/util/service-util.kt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/gradle.properties b/gradle.properties index 896ffc14..73205ffb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,6 +7,6 @@ org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled javaVersion=25 mcVersion=26.2 group=dev.slne.surf.api -version=3.27.3 +version=3.27.4 relocationPrefix=dev.slne.surf.api.libs snapshot=false diff --git a/surf-api-core/surf-api-core/src/main/kotlin/dev/slne/surf/api/core/util/service-util.kt b/surf-api-core/surf-api-core/src/main/kotlin/dev/slne/surf/api/core/util/service-util.kt index aad80fd2..4a8fb1fa 100644 --- a/surf-api-core/surf-api-core/src/main/kotlin/dev/slne/surf/api/core/util/service-util.kt +++ b/surf-api-core/surf-api-core/src/main/kotlin/dev/slne/surf/api/core/util/service-util.kt @@ -16,7 +16,7 @@ import java.util.* inline fun requiredService(): T = ServiceUtil.serviceWithFallback( ServiceLoader.load( T::class.java, - getCallerClass()?.classLoader ?: T::class.java.classLoader + getCallerClass(-1)?.classLoader ?: T::class.java.classLoader ), T::class.java ) ?: throw ServiceConfigurationError("Service ${T::class.java.name} not available") @@ -25,7 +25,7 @@ object ServiceUtil { private val SERVICE_LOAD_FAILURES_ARE_FATAL = AdventureProperties.SERVICE_LOAD_FAILURES_ARE_FATAL.value() == true @PublishedApi - internal fun serviceWithFallback(loader: ServiceLoader, type: Class): T? { + internal fun serviceWithFallback(loader: ServiceLoader, type: Class): T? { val iterator = loader.iterator() var firstFallback: T? = null