This repository was archived by the owner on Dec 19, 2023. It is now read-only.
This repository was archived by the owner on Dec 19, 2023. It is now read-only.
Cannot set objectMapperConfigurer #405
Closed
Description
I recently updated to 7.0.1 and noticed that my custom object mapper is no longer picked up. After investigating a bit i came to the conclusion that it seems to be impossible to set the objectMapperConfigurer inside the optionsBuilder
Bean.
This is the builder:
@Bean
@ConditionalOnMissingBean
@ConfigurationProperties("graphql.tools.schema-parser-options")
public Builder optionsBuilder(PerFieldObjectMapperProvider perFieldObjectMapperProvider) {
Builder optionsBuilder = SchemaParserOptions.newOptions();
if (perFieldObjectMapperProvider != null) {
optionsBuilder.objectMapperProvider(perFieldObjectMapperProvider);
} else {
optionsBuilder.objectMapperConfigurer(this.objectMapperConfigurer);
}
optionsBuilder.introspectionEnabled(this.props.isIntrospectionEnabled());
if (this.genericWrappers != null) {
optionsBuilder.genericWrappers(this.genericWrappers);
}
if (this.proxyHandlers != null) {
this.proxyHandlers.forEach(optionsBuilder::addProxyHandler);
}
if (this.coroutineContextProvider != null) {
optionsBuilder.coroutineContextProvider(this.coroutineContextProvider);
}
if (this.typeDefinitionFactories != null) {
this.typeDefinitionFactories.forEach(optionsBuilder::typeDefinitionFactory);
}
return optionsBuilder;
}
And this is the PerFieldObjectMapperProvider
:
@Bean
@ConditionalOnMissingBean
@ConditionalOnProperty(
value = {"graphql.tools.use-default-objectmapper"},
havingValue = "true",
matchIfMissing = true
)
public PerFieldObjectMapperProvider perFieldObjectMapperProvider(ObjectMapper objectMapper) {
objectMapper.registerModule(new Jdk8Module()).registerModule(new KotlinModule());
return (fieldDefinition) -> {
return objectMapper;
};
}
The builder Bean requires a PerFieldObjectMapperProvider
Bean to be present, so it will never be null. Even if you provide your own @Bean
which returns null Spring complains: "- User-defined bean method 'perFieldobjectMapperProvider' in 'GraphQLConfig' ignored as the bean value is null".
Is there a way to not use the PerFieldObjectMapperProvider
inside the builder, without providing your own builder @Bean
?
Metadata
Metadata
Assignees
Labels
No labels