Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unable to provide third party value extractor when the bean definition is not returning ValueExtractor #253

Open
tobias-bahls opened this issue Nov 10, 2023 · 2 comments

Comments

@tobias-bahls
Copy link

Expected Behavior

When I create a Bean via Factory in order to provide JsonNullableJakartaValueExtractor like this:

@Factory
private class JsonNullableJakartaValueExtractorFactory {
    @Singleton
    fun nullableExtractor(): JsonNullableJakartaValueExtractor {
        return JsonNullableJakartaValueExtractor()
    }
}

I expect the ValueExtractor to be picked up by Jakarta Validation.

Actual Behaviour

The registration of the value extractor throws an error:

Caused by: java.util.NoSuchElementException: No value present
	at java.base/java.util.Optional.orElseThrow(Optional.java:377)
	at io.micronaut.validation.validator.extractors.ValueExtractorDefinition.<init>(ValueExtractorDefinition.java:48)
	at io.micronaut.validation.validator.extractors.DefaultValueExtractors.<init>(DefaultValueExtractors.java:83)
	at io.micronaut.validation.validator.extractors.$DefaultValueExtractors$Definition.instantiate(Unknown Source)
	at io.micronaut.context.DefaultBeanContext.resolveByBeanFactory(DefaultBeanContext.java:2307)
	... 76 common frames omitted

Steps To Reproduce

See example

Environment Information

No response

Example Application

No response

Version

4.1.2

@tobias-bahls
Copy link
Author

Found a workaround for this issue that fixes it for now by manually adding JsonNullableJakartaValueExtractor to DefaultValidatorConfiguration

@Context
class JsonNullableValueExtractorRegistrar(private val config: DefaultValidatorConfiguration) {
    @PostConstruct
    fun registerJsonNullableValueExtractor() {
        config.addValueExtractor(JsonNullableJakartaValueExtractor())
    }
}

@yawkat
Copy link
Member

yawkat commented Nov 21, 2023

sounds kind of like #258

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants