[
https://issues.apache.org/jira/browse/CAMEL-11622?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Balazs Szeti updated CAMEL-11622:
---------------------------------
Description:
The rest-dsl doesn't support two post() endpoints with different request body
types.
{code:java}
restConfiguration()
.component("servlet")
.contextPath("/api")
.bindingMode(RestBindingMode.json)
;
rest("/user")
.post("/").type(UserPojo.class)
.route()
.log("Name: ${body.name}")
.endRest()
;
rest("/country")
.post("/").type(CountryPojo.class)
.route()
.log("Name: ${body.country}")
.endRest()
;
{code}
Both endpoints (/api/user, /api/country) tries to unmarshal the post body to
CountryPojo and a JsonProcessingException is thrown when a UserPojo json is
sent to /user.
The problem is that they share one JascksonDataFormat instance registered with
name "json-jackson" and the RestDefinition.type() sets the
JascksonDataFormat.unmarshalType so at the end both post() endpoints will try
to unmarshal to the same class.
was:
The rest-dsl doesn't support two post() endpoints with different request body
types.
{code:java}
restConfiguration()
.component("servlet")
.contextPath("/api")
.bindingMode(RestBindingMode.json)
;
rest("/user")
.post("/").type(UserPojo.class)
.route()
.log("Name: ${body.name}")
.endRest()
;
rest("/country")
.post("/").type(CountryPojo.class)
.route()
.log("Name: ${body.country}")
.endRest()
;
{code}
Both endpoints (/api/user, /api/country) tries to unmarshall the post body to
CountryPojo and a JsonProcessingException is thrown when a UserPojo json is
sent to /user.
The problem is that they share one JascksonDataFormat instance registered with
name "json-jackson" and the RestDefinition.type() sets the
JascksonDataFormat.unmarshalType so at the end both post() endpoints will try
to unmarshall to the same class.
> Rest-dsl doesn't support post() endpoints with different request body types
> ---------------------------------------------------------------------------
>
> Key: CAMEL-11622
> URL: https://issues.apache.org/jira/browse/CAMEL-11622
> Project: Camel
> Issue Type: Bug
> Components: rest
> Affects Versions: 2.18.1
> Environment: Spring-Boot with Tomcat8 container
> Reporter: Balazs Szeti
>
> The rest-dsl doesn't support two post() endpoints with different request body
> types.
> {code:java}
> restConfiguration()
> .component("servlet")
> .contextPath("/api")
> .bindingMode(RestBindingMode.json)
> ;
> rest("/user")
> .post("/").type(UserPojo.class)
> .route()
> .log("Name: ${body.name}")
> .endRest()
> ;
> rest("/country")
> .post("/").type(CountryPojo.class)
> .route()
> .log("Name: ${body.country}")
> .endRest()
> ;
> {code}
> Both endpoints (/api/user, /api/country) tries to unmarshal the post body to
> CountryPojo and a JsonProcessingException is thrown when a UserPojo json is
> sent to /user.
> The problem is that they share one JascksonDataFormat instance registered
> with name "json-jackson" and the RestDefinition.type() sets the
> JascksonDataFormat.unmarshalType so at the end both post() endpoints will try
> to unmarshal to the same class.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)