[ https://issues.apache.org/jira/browse/CAMEL-8104?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14235294#comment-14235294 ]
Espen Tjonneland commented on CAMEL-8104: ----------------------------------------- I wonder if there is still missing some bits here. And I am guessing it is failing due to it being done inside an interceptor. Consider the following route def: {code} public class MyRestRouteDefs extends RouteBuilder { imports .....; @Override public void configure() { ..... config stuff interceptFrom().id("Create an error") .bean(CreateAnError.class); //Sets up one interceptor that always creates an error message - just to clarify this issue restConfiguration().component("servlet").bindingMode(RestBindingMode.json) .contextPath("/MyContext/api/").port("8080"); RestDefinition privateAPI = rest(ServiceConstants.PRIVATE_API_VERSION_1).description("Private (internal) REST services for MyServices.") .skipBindingOnErrorCode(true); //Not neccecary (for clarity) privateAPI.get("/fetchsomething").description("Lists stuff from some service") .outTypeList(MyPojoForSomething.class) .route().routeId("A descriptive ID") .choice() .when(header(ServiceConstants.REQUEST_VALIDATED).isEqualTo("TRUE")) .bean(GoAheadAndFillAMyPojoForSomething-into-body.class) .otherwise()); //Otherwise might not be needed. Added it there to show that it is a branching point. } } public class CreateAnError { imports .....; @Handler public void createAnError (@Body Message requestMessage) { requestMessage.setHeader(ServiceConstants.REQUEST_VALIDATED, "FALSE"); requestMessage.setHeader(Exchange.HTTP_RESPONSE_CODE, HttpServletResponse.SC_FORBIDDEN); requestMessage.setHeader(Exchange.CONTENT_TYPE, "text/plain"); requestMessage.setBody("I raised this error inside an interceptor and just wanted to tell you about it"); } } {code} This results in an error: {code} com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'Missing': was expecting ('true', 'false' or 'null') at [Source: java.io.ByteArrayInputStream@67618968; line: 1, column: 9] at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1419) {code} > rest-dsl - Allow custom error responses as-is without invoking the output > binding > --------------------------------------------------------------------------------- > > Key: CAMEL-8104 > URL: https://issues.apache.org/jira/browse/CAMEL-8104 > Project: Camel > Issue Type: Improvement > Components: camel-core > Affects Versions: 2.14.0 > Reporter: Claus Ibsen > Assignee: Claus Ibsen > Fix For: 2.14.1, 2.15.0 > > > See > http://camel.465427.n5.nabble.com/Rest-DSL-OutType-in-case-of-error-message-problem-tp5759864.html > We should allow end users to define custom error messages as-is to be used as > response. > We add a flag that enables this out of the box. Then the end user just set a > custom body and set the HTTP_RESPONSE_CODE header to >= 300 value to indicate > an error. Then rest-dsl does not attempt to bind output. -- This message was sent by Atlassian JIRA (v6.3.4#6332)