Skip to content

Commit 685dc8a

Browse files
authored
fix: correct ConditionalOnMissingComponent inheritance check (#227)
2 parents 83146c1 + d1abef3 commit 685dc8a

2 files changed

Lines changed: 11 additions & 5 deletions

File tree

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled
77
javaVersion=25
88
mcVersion=1.21.11
99
group=dev.slne.surf
10-
version=1.21.11-2.59.1
10+
version=1.21.11-2.59.2
1111
relocationPrefix=dev.slne.surf.surfapi.libs
1212
snapshot=false

surf-api-core/surf-api-core-server/src/main/kotlin/dev/slne/surf/surfapi/core/server/component/ComponentService.kt

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ abstract class ComponentService {
233233
if (!evaluateEnvironmentConditions(componentMeta, logger)) return null
234234

235235
// Evaluate @ConditionalOnMissingComponent
236-
if (!evaluateMissingComponentConditions(componentMeta, loadedComponents, logger)) return null
236+
if (!evaluateMissingComponentConditions(componentMeta, loadedComponents, classLoader, logger)) return null
237237

238238
// Evaluate @ConditionalOnProperty
239239
if (!evaluatePropertyConditions(owner, componentMeta, logger)) return null
@@ -291,13 +291,19 @@ abstract class ComponentService {
291291
private fun evaluateMissingComponentConditions(
292292
componentMeta: PluginComponentMeta.Component,
293293
loadedComponents: List<ComponentEntry>,
294+
classLoader: ClassLoader,
294295
logger: ComponentLogger
295296
): Boolean {
296297
for (missingComponent in componentMeta.conditionalOnMissingComponents) {
297298
val isLoaded = loadedComponents.any { (component) ->
298-
val kClass = component::class
299-
val className = kClass.qualifiedName ?: kClass.java.name
300-
className == missingComponent
299+
val loadedComponentClass = component.javaClass
300+
val missingComponentClass = try {
301+
Class.forName(missingComponent, false, classLoader)
302+
} catch (_: ClassNotFoundException) {
303+
null
304+
}
305+
306+
missingComponentClass != null && missingComponentClass.isAssignableFrom(loadedComponentClass)
301307
}
302308
if (isLoaded) {
303309
logger.debug(

0 commit comments

Comments
 (0)