diff --git a/subprojects/micronaut-grails/src/main/groovy/com/agorapulse/micronaut/grails/GrailsPropertyTranslatingEnvironment.java b/subprojects/micronaut-grails/src/main/groovy/com/agorapulse/micronaut/grails/GrailsPropertyTranslatingEnvironment.java index ee106687..9b41760b 100644 --- a/subprojects/micronaut-grails/src/main/groovy/com/agorapulse/micronaut/grails/GrailsPropertyTranslatingEnvironment.java +++ b/subprojects/micronaut-grails/src/main/groovy/com/agorapulse/micronaut/grails/GrailsPropertyTranslatingEnvironment.java @@ -19,6 +19,7 @@ import io.micronaut.context.env.DefaultEnvironment; import io.micronaut.core.convert.ArgumentConversionContext; +import io.micronaut.core.convert.ConversionService; import org.springframework.core.env.AbstractEnvironment; import org.springframework.core.env.Environment; import org.springframework.core.env.MapPropertySource; @@ -114,9 +115,10 @@ public boolean containsProperties(@Nullable String name) { @Override public Optional getProperty(@Nullable String name, ArgumentConversionContext conversionContext) { Class type = conversionContext.getArgument().getType(); - T value = environment.getProperty(name, type); - if (value != null) { - return Optional.of(value); + Object property = environment.getProperty(name, Object.class); + Optional value = ConversionService.SHARED.convert(property, type, conversionContext); + if (value.isPresent()) { + return value; } Set alternativeNames = customizer.getAlternativeNames(name); @@ -125,9 +127,10 @@ public Optional getProperty(@Nullable String name, ArgumentConversionCont } for (String alternativeName : alternativeNames) { - T alternativeValue = environment.getProperty(alternativeName, type); - if (alternativeValue != null) { - return Optional.of(alternativeValue); + Object altProperty = environment.getProperty(alternativeName, Object.class); + Optional alternativeValue = ConversionService.SHARED.convert(altProperty, type, conversionContext); + if (alternativeValue.isPresent()) { + return alternativeValue; } }