[
https://issues.apache.org/jira/browse/CAMEL-12862?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Hari Krishnan Murthy updated CAMEL-12862:
-----------------------------------------
Description:
While configuring routes for POST/PUT using REST DSL, I have issues in
mapping/registering two entity classes at the same time.
For eg:
rest("/xxx/yyy").description("REST service")
.produces("application/json")
//Get all Interactions
.get().description("Get all
interactions").outType(GetInteractionsResponse.class)
.param().name("session_id").type(header).description("Session
ID").dataType("string").endParam()
.to("direct:getAllInteraction")
//Get specific Interaction
.get("/\{id}").description("Get Interaction by Interaction
ID").outType(GetInteractionResponse.class)
.param().name("session_id").type(header).description("Session
ID").dataType("string").endParam()
.param().name("id").type(path).description("Interaction
ID").dataType("integer").endParam()
.to("direct:getInteractionById")
//Update an interaction
.put("/\{id}").description("Update an Interaction by Interaction
ID").consumes("application/json").type(PutInteraction.class)
.param().name("session_id").type(header).description("Session
ID").dataType("string").endParam()
.param().name("id").type(path).description("Interaction
ID").dataType("integer").endParam()
.param().name("body").type(body).description("Interaction to be
posted").endParam()
.to("direct:putInteraction")
//Post a new interaction
.post().description("Post an
Interaction").consumes("application/json").type(PostInteraction.class)
.param().name("session_id").type(header).description("Session
ID").dataType("string").endParam()
.param().name("body").type(body).description("Interaction to be
posted").endParam()
.to("direct:postInteraction");
Upon deploying and executing the above routes, either the POST or PUT
entities(PostInteraction/PutInteraction) passed in the request body as JSON are
received as null on the server side(Rest Service that am invoking). This
depends on whichever is defined the last. If the POST API is defined as the
last route, then put entity is null and vice versa. I have tried to validate
this behaviour multiple times by switching the order of definition. Right now
am circumventing this issue by creating a new common pojo and mapping it for
both POST and PUT
Could this be a bug or is this expected? Please advise
Technology used:
spring-boot-starter-parent: 1.5.1-RELEASE
camel-spring-boot-starter: 2.18.0
was:
While configuring routes for POST/PUT using REST DSL, I have issues in
mapping/registering two entity classes at the same time.
For eg:
rest("/xxx/yyy").description("REST service")
.produces("application/json")
//Get all Interactions
.get().description("Get all
interactions").outType(GetInteractionsResponse.class)
.param().name("session_id").type(header).description("Session
ID").dataType("string").endParam()
.to("direct:getAllInteraction")
//Get specific Interaction
.get("/\{id}").description("Get Interaction by Interaction
ID").outType(GetInteractionResponse.class)
.param().name("session_id").type(header).description("Session
ID").dataType("string").endParam()
.param().name("id").type(path).description("Interaction
ID").dataType("integer").endParam()
.to("direct:getInteractionById")
//Update an interaction
.put("/\{id}").description("Update an Interaction by Interaction
ID").consumes("application/json").type(PutInteraction.class)
.param().name("session_id").type(header).description("Session
ID").dataType("string").endParam()
.param().name("id").type(path).description("Interaction
ID").dataType("integer").endParam()
.param().name("body").type(body).description("Interaction to be
posted").endParam()
.to("direct:putInteraction")
//Post a new interaction
.post().description("Post an
Interaction").consumes("application/json").type(PostInteraction.class)
.param().name("session_id").type(header).description("Session
ID").dataType("string").endParam()
.param().name("body").type(body).description("Interaction to be
posted").endParam()
.to("direct:postInteraction");
Upon deploying and executing the above routes, either the POST or PUT
entities(PostInteraction/PutInteraction) passed in the request body as JSON are
received as null on the server side(Rest Service that am invoking). This
depends on whichever is defined the last. If the POST API is defined as the
last route, then put entity is null and vice versa. I have tried to validate
this behaviour multiple times by switching the order of definition. Right now
am circumventing this issue by creating a new common pojo and mapping it for
both POST and PUT
Technology used:
spring-boot-starter-parent: 1.5.1-RELEASE
camel-spring-boot-starter: 2.18.0
> Unable to register two different entity types while configuring camel REST DSL
> ------------------------------------------------------------------------------
>
> Key: CAMEL-12862
> URL: https://issues.apache.org/jira/browse/CAMEL-12862
> Project: Camel
> Issue Type: Bug
> Reporter: Hari Krishnan Murthy
> Priority: Major
>
> While configuring routes for POST/PUT using REST DSL, I have issues in
> mapping/registering two entity classes at the same time.
> For eg:
> rest("/xxx/yyy").description("REST service")
> .produces("application/json")
>
> //Get all Interactions
> .get().description("Get all
> interactions").outType(GetInteractionsResponse.class)
> .param().name("session_id").type(header).description("Session
> ID").dataType("string").endParam()
> .to("direct:getAllInteraction")
> //Get specific Interaction
> .get("/\{id}").description("Get Interaction by Interaction
> ID").outType(GetInteractionResponse.class)
> .param().name("session_id").type(header).description("Session
> ID").dataType("string").endParam()
> .param().name("id").type(path).description("Interaction
> ID").dataType("integer").endParam()
> .to("direct:getInteractionById")
>
> //Update an interaction
> .put("/\{id}").description("Update an Interaction by Interaction
> ID").consumes("application/json").type(PutInteraction.class)
> .param().name("session_id").type(header).description("Session
> ID").dataType("string").endParam()
> .param().name("id").type(path).description("Interaction
> ID").dataType("integer").endParam()
> .param().name("body").type(body).description("Interaction to be
> posted").endParam()
> .to("direct:putInteraction")
>
> //Post a new interaction
> .post().description("Post an
> Interaction").consumes("application/json").type(PostInteraction.class)
> .param().name("session_id").type(header).description("Session
> ID").dataType("string").endParam()
> .param().name("body").type(body).description("Interaction to be
> posted").endParam()
> .to("direct:postInteraction");
>
> Upon deploying and executing the above routes, either the POST or PUT
> entities(PostInteraction/PutInteraction) passed in the request body as JSON
> are received as null on the server side(Rest Service that am invoking). This
> depends on whichever is defined the last. If the POST API is defined as the
> last route, then put entity is null and vice versa. I have tried to validate
> this behaviour multiple times by switching the order of definition. Right now
> am circumventing this issue by creating a new common pojo and mapping it for
> both POST and PUT
> Could this be a bug or is this expected? Please advise
> Technology used:
> spring-boot-starter-parent: 1.5.1-RELEASE
> camel-spring-boot-starter: 2.18.0
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)