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

ObjectMapper used by Jackson2JsonDecoder doesn't pick up jackson-parameter-names module [SPR-14864] #19430

Closed
spring-projects-issues opened this issue Nov 1, 2016 · 1 comment
Assignees
Labels
in: core status: duplicate

Comments

@spring-projects-issues
Copy link
Collaborator

@spring-projects-issues spring-projects-issues commented Nov 1, 2016

Dominic Fox opened SPR-14864 and commented

The Jackson2JsonDecoder cannot decode a Flux<Foo> where Foo is a class initialised with a constructor or static method annotated with @JsonCreator and the jackson-module-parameter-names module is used to bind parameter names directly to property names without the use of further annotations.

I've verified that the ObjectMapper in the Spring Application Context has been configured with the jackson-module-parameter-names module, and that this works as expected (given that the -parameters compiler flag has been set). However, the Jackson2JsonDecoder appears to be initialised with a different ObjectMapper.

See the attached ThingController class for an example. When you post

[{"foo":"foo", "bar":"bar"}]

to the /things endpoint, a 415 HTTP Status Code is returned. There is no indication in either the error message or the stack trace that the problem is actually in the JSON deserialisation.

Stack trace below. (The Reactor Framework does seem to result in rather convoluted and unhelpful stack traces...)

2016-10-31 16:29:26.608 ERROR 30666 --- [nio-8080-exec-1] reactor.unresolved                       : | onError(org.springframework.web.server.UnsupportedMediaTypeStatusException: Request failure [status: 415, reason: "Content type 'application/json' not supported"])
2016-10-31 16:29:26.616 ERROR 30666 --- [nio-8080-exec-1] reactor.unresolved                       :

org.springframework.web.server.UnsupportedMediaTypeStatusException: Request failure [status: 415, reason: "Content type 'application/json' not supported"]
	at org.springframework.web.reactive.result.method.annotation.AbstractMessageReaderArgumentResolver.readBody(AbstractMessageReaderArgumentResolver.java:177) ~[spring-web-reactive-5.0.0.BUILD-SNAPSHOT.jar:5.0.0.BUILD-SNAPSHOT]
	at org.springframework.web.reactive.result.method.annotation.RequestBodyArgumentResolver.resolveArgument(RequestBodyArgumentResolver.java:79) ~[spring-web-reactive-5.0.0.BUILD-SNAPSHOT.jar:5.0.0.BUILD-SNAPSHOT]
	at org.springframework.web.reactive.result.method.InvocableHandlerMethod.lambda$resolveArguments$4(InvocableHandlerMethod.java:133) ~[spring-web-reactive-5.0.0.BUILD-SNAPSHOT.jar:5.0.0.BUILD-SNAPSHOT]
	at org.springframework.web.reactive.result.method.InvocableHandlerMethod$$Lambda$84/1872731880.apply(Unknown Source) ~[na:na]
	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) ~[na:1.8.0_45]
	at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948) ~[na:1.8.0_45]
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512) ~[na:1.8.0_45]
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502) ~[na:1.8.0_45]
	at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) ~[na:1.8.0_45]
	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:1.8.0_45]
	at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) ~[na:1.8.0_45]
	at org.springframework.web.reactive.result.method.InvocableHandlerMethod.resolveArguments(InvocableHandlerMethod.java:146) ~[spring-web-reactive-5.0.0.BUILD-SNAPSHOT.jar:5.0.0.BUILD-SNAPSHOT]
	at org.springframework.web.reactive.result.method.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:93) ~[spring-web-reactive-5.0.0.BUILD-SNAPSHOT.jar:5.0.0.BUILD-SNAPSHOT]
	at org.springframework.web.reactive.result.method.annotation.RequestMappingHandlerAdapter.handle(RequestMappingHandlerAdapter.java:217) ~[spring-web-reactive-5.0.0.BUILD-SNAPSHOT.jar:5.0.0.BUILD-SNAPSHOT]
	at org.springframework.web.reactive.DispatcherHandler.invokeHandler(DispatcherHandler.java:135) ~[spring-web-reactive-5.0.0.BUILD-SNAPSHOT.jar:5.0.0.BUILD-SNAPSHOT]
	at org.springframework.web.reactive.DispatcherHandler.lambda$handle$1(DispatcherHandler.java:128) ~[spring-web-reactive-5.0.0.BUILD-SNAPSHOT.jar:5.0.0.BUILD-SNAPSHOT]
	at org.springframework.web.reactive.DispatcherHandler$$Lambda$76/647551778.apply(Unknown Source) ~[na:na]
	at reactor.core.publisher.MonoThenMap$MonoThenApplyMain.onNext(MonoThenMap.java:98) ~[reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:316) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:68) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:316) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:78) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:316) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.innerNext(FluxConcatMap.java:258) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.FluxConcatMap$ConcatMapInner.onNext(FluxConcatMap.java:740) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:316) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:124) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:316) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:1565) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:394) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.request(FluxMapFuseable.java:180) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.request(FluxOnAssembly.java:394) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:1282) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:1245) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onSubscribe(FluxOnAssembly.java:378) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onSubscribe(FluxMapFuseable.java:94) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onSubscribe(FluxOnAssembly.java:378) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.MonoJust.subscribe(MonoJust.java:54) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.FluxOnAssembly.subscribe(FluxOnAssembly.java:187) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.MonoCallableOnAssembly.subscribe(MonoCallableOnAssembly.java:70) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.MonoMapFuseable.subscribe(MonoMapFuseable.java:64) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.FluxOnAssembly.subscribe(FluxOnAssembly.java:187) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.MonoOnAssembly.subscribe(MonoOnAssembly.java:47) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.drain(FluxConcatMap.java:397) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.onSubscribe(FluxConcatMap.java:189) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onSubscribe(FluxOnAssembly.java:378) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:93) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:56) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.FluxOnAssembly.subscribe(FluxOnAssembly.java:187) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.FluxOnAssembly.subscribe(FluxOnAssembly.java:219) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.FluxConcatMap.subscribe(FluxConcatMap.java:113) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.FluxOnAssembly.subscribe(FluxOnAssembly.java:187) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.FluxOnAssembly.subscribe(FluxOnAssembly.java:219) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.MonoNext.subscribe(MonoNext.java:41) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.FluxOnAssembly.subscribe(FluxOnAssembly.java:187) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.MonoOnAssembly.subscribe(MonoOnAssembly.java:47) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.MonoOtherwiseIfEmpty.subscribe(MonoOtherwiseIfEmpty.java:44) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.FluxOnAssembly.subscribe(FluxOnAssembly.java:187) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.MonoOnAssembly.subscribe(MonoOnAssembly.java:47) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.MonoThenMap.subscribe(MonoThenMap.java:55) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.FluxOnAssembly.subscribe(FluxOnAssembly.java:187) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.MonoOnAssembly.subscribe(MonoOnAssembly.java:47) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.MonoThenMap.subscribe(MonoThenMap.java:55) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.FluxOnAssembly.subscribe(FluxOnAssembly.java:187) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.MonoOnAssembly.subscribe(MonoOnAssembly.java:47) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.MonoOtherwise.subscribe(MonoOtherwise.java:44) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.FluxOnAssembly.subscribe(FluxOnAssembly.java:187) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.MonoOnAssembly.subscribe(MonoOnAssembly.java:47) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.MonoOtherwise.subscribe(MonoOtherwise.java:44) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.FluxOnAssembly.subscribe(FluxOnAssembly.java:187) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.MonoOnAssembly.subscribe(MonoOnAssembly.java:47) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.MonoOtherwise.subscribe(MonoOtherwise.java:44) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.FluxOnAssembly.subscribe(FluxOnAssembly.java:187) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.MonoOnAssembly.subscribe(MonoOnAssembly.java:47) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.MonoThenIgnore$MonoThenIgnoreMain.drain(MonoThenIgnore.java:166) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.MonoThenIgnore.subscribe(MonoThenIgnore.java:54) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.FluxOnAssembly.subscribe(FluxOnAssembly.java:187) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at reactor.core.publisher.MonoOnAssembly.subscribe(MonoOnAssembly.java:47) [reactor-core-3.0.3.BUILD-SNAPSHOT.jar:na]
	at org.springframework.http.server.reactive.ServletHttpHandlerAdapter.service(ServletHttpHandlerAdapter.java:104) [spring-web-5.0.0.BUILD-SNAPSHOT.jar:5.0.0.BUILD-SNAPSHOT]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230) [tomcat-embed-core-8.5.5.jar:8.5.5]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) [tomcat-embed-core-8.5.5.jar:8.5.5]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) [tomcat-embed-core-8.5.5.jar:8.5.5]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:108) [tomcat-embed-core-8.5.5.jar:8.5.5]
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) [tomcat-embed-core-8.5.5.jar:8.5.5]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) [tomcat-embed-core-8.5.5.jar:8.5.5]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) [tomcat-embed-core-8.5.5.jar:8.5.5]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) [tomcat-embed-core-8.5.5.jar:8.5.5]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349) [tomcat-embed-core-8.5.5.jar:8.5.5]
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:784) [tomcat-embed-core-8.5.5.jar:8.5.5]
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-embed-core-8.5.5.jar:8.5.5]
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:802) [tomcat-embed-core-8.5.5.jar:8.5.5]
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1410) [tomcat-embed-core-8.5.5.jar:8.5.5]
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-8.5.5.jar:8.5.5]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_45]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_45]
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.5.5.jar:8.5.5]
	at java.lang.Thread.run(Thread.java:745) [na:1.8.0_45]
	Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Assembly trace from producer [reactor.core.publisher.MonoError] :
	reactor.core.publisher.Mono.error(Mono.java:271)
	org.springframework.web.reactive.result.method.annotation.AbstractMessageReaderArgumentResolver.readBody(AbstractMessageReaderArgumentResolver.java:177)
	org.springframework.web.reactive.result.method.annotation.RequestBodyArgumentResolver.resolveArgument(RequestBodyArgumentResolver.java:79)
	org.springframework.web.reactive.result.method.InvocableHandlerMethod.lambda$resolveArguments$4(InvocableHandlerMethod.java:133)
	java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
	java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
	java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
	java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
	java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
	java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
	org.springframework.web.reactive.result.method.InvocableHandlerMethod.resolveArguments(InvocableHandlerMethod.java:146)
	org.springframework.web.reactive.result.method.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:93)
	org.springframework.web.reactive.result.method.annotation.RequestMappingHandlerAdapter.handle(RequestMappingHandlerAdapter.java:217)
	org.springframework.web.reactive.DispatcherHandler.invokeHandler(DispatcherHandler.java:135)
	org.springframework.web.reactive.DispatcherHandler.lambda$handle$1(DispatcherHandler.java:128)
	reactor.core.publisher.MonoThenMap$MonoThenApplyMain.onNext(MonoThenMap.java:98)
	reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:68)
	reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:78)
	reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.innerNext(FluxConcatMap.java:258)
	reactor.core.publisher.FluxConcatMap$ConcatMapInner.onNext(FluxConcatMap.java:740)
	reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:124)
	reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:1565)
	reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.request(FluxMapFuseable.java:180)
	reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:1282)
	reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:1245)
	reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onSubscribe(FluxMapFuseable.java:94)
	reactor.core.publisher.MonoJust.subscribe(MonoJust.java:54)
	reactor.core.publisher.MonoMapFuseable.subscribe(MonoMapFuseable.java:64)
	reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.drain(FluxConcatMap.java:397)
	reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.onSubscribe(FluxConcatMap.java:189)
	reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:93)
	reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:56)
	reactor.core.publisher.FluxConcatMap.subscribe(FluxConcatMap.java:113)
	reactor.core.publisher.MonoNext.subscribe(MonoNext.java:41)
	reactor.core.publisher.MonoOtherwiseIfEmpty.subscribe(MonoOtherwiseIfEmpty.java:44)
	reactor.core.publisher.MonoThenMap.subscribe(MonoThenMap.java:55)
	reactor.core.publisher.MonoThenMap.subscribe(MonoThenMap.java:55)
	reactor.core.publisher.MonoOtherwise.subscribe(MonoOtherwise.java:44)
	reactor.core.publisher.MonoOtherwise.subscribe(MonoOtherwise.java:44)
	reactor.core.publisher.MonoOtherwise.subscribe(MonoOtherwise.java:44)
	reactor.core.publisher.MonoThenIgnore$MonoThenIgnoreMain.drain(MonoThenIgnore.java:166)
	reactor.core.publisher.MonoThenIgnore.subscribe(MonoThenIgnore.java:54)
	org.springframework.http.server.reactive.ServletHttpHandlerAdapter.service(ServletHttpHandlerAdapter.java:104)
	org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:784)
	org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:802)
Composition chain until failing Operator :
	|_	Mono.error(AbstractMessageReaderArgumentResolver.java:177)
	|_	Mono.defaultIfEmpty(InvocableHandlerMethod.java:134)
	|_	Mono.doOnError(InvocableHandlerMethod.java:135)

Affects: 5.0 M2

Attachments:

@spring-projects-issues
Copy link
Collaborator Author

@spring-projects-issues spring-projects-issues commented Dec 29, 2016

Sébastien Deleuze commented

I resolve this issue as duplicate since based on your code example, the feature you are talking about seems more on Spring Boot Web Reactive side, I created this issue instead.

Currently, the right way to achieve ObjectMapper configuration is to create a @Configuration class that extends WebReactiveConfigurationSupport and configure custom HttpMessageWriter and HttpMessageReader.

Also I suggest you to have a look on this blog post to see how to customize properly Jackson configuration by declaring ObjectMapper, Jackson2ObjectMapperBuilder or Module @Bean.

@spring-projects-issues spring-projects-issues added type: bug in: core status: duplicate labels Jan 11, 2019
@spring-projects-issues spring-projects-issues removed the type: bug label Jan 12, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
in: core status: duplicate
Projects
None yet
Development

No branches or pull requests

2 participants