Skip to content

Commit

Permalink
fix(core): resolve subclasses of acceptable layers
Browse files Browse the repository at this point in the history
  • Loading branch information
LizAinslie committed Nov 8, 2024
1 parent 6534945 commit 4af256b
Showing 1 changed file with 7 additions and 3 deletions.
10 changes: 7 additions & 3 deletions core/src/main/kotlin/sh/illumi/kraft/service/ServiceMetadata.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package sh.illumi.kraft.service
import sh.illumi.kraft.KraftException
import sh.illumi.kraft.layer.ApplicationLayer
import kotlin.reflect.KClass
import kotlin.reflect.full.allSuperclasses

/**
* Metadata annotation for services
Expand Down Expand Up @@ -30,8 +31,11 @@ annotation class ServiceMetadata(
fun resolveAnnotation(
serviceClass: KClass<out Service>,
serviceContainer: ServiceContainer,
) = serviceClass.annotations.first {
it is ServiceMetadata && it.layers.contains(serviceContainer.applicationLayer.javaClass.kotlin)
} as? ServiceMetadata ?: throw KraftException("Service ${serviceClass.simpleName} has no suitable ServiceMetadata annotation")
) = serviceClass.annotations.filterIsInstance<ServiceMetadata>().first { annotation ->
annotation.layers.contains(serviceContainer.applicationLayer.javaClass.kotlin) ||
annotation.layers.any { layerClass ->
serviceContainer.applicationLayer.javaClass.kotlin.allSuperclasses.contains(layerClass)
}
} as? ServiceMetadata ?: throw KraftException("Service ${serviceClass.simpleName} has no suitable ServiceMetadata annotation")
}
}

0 comments on commit 4af256b

Please sign in to comment.