Hi, Jochen!
Thanks for the advice, it does work! But I had to use a bit different approach with custom class annotation, like:
My configuration class (all code below in Kotlin):
@CheckApplicationContextPath
class MyConfiguration(
val project: String,
val env: String,
...
) : io.dropwizard:Configuration()
CheckApplicationContextPath.kt:
@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.RUNTIME)
@Constraint(validatedBy = [ApplicationContextPathValidator::class])
annotation class CheckApplicationContextPath(
val message: String = "Please correct applicationContextPath in the config file",
val groups: Array<KClass<*>> = [],
val payload: Array<KClass<out Payload>> = []
)
ApplicationContextPathValidator.kt:
class ApplicationContextPathValidator : ConstraintValidator<CheckApplicationContextPath,
MyConfiguration
> {
override fun isValid(value:
MyConfiguration
, context: ConstraintValidatorContext): Boolean {
val applicationContextPath = (value.serverFactory as SimpleServerFactory).applicationContextPath
println("Config's applicationContextPath is $applicationContextPath")
return applicationContextPath == "/myCorrectApplicationContextPath
"
}
}
Thanks again,
Innokentiy