[ 
https://issues.apache.org/jira/browse/CAMEL-9034?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Christian Bauer updated CAMEL-9034:
-----------------------------------
    Description: 
The code in JettyHttpComponent seems to ignore any httpBindingRef endpoint 
property, at least if you use the REST DSL. It always creates a consumer with 
this binding:

{code}
endpoint.setBinding(new JettyRestHttpBinding(endpoint));
{code}

This makes it impossible to configure custom error responses by overriding the 
doWriteExceptionResponse method of the binding, as documented.

My actual case is an (invalid) Java instance I'm transforming to JSON with 
Jackson. This happens in RestBindingMarshalOnCompletion#onAfterRoute and the 
only way to catch an exception at this stage seems to be in the HttpBinding.

Note that this means users of the REST DSL will always return 500 errors with 
full stacktraces on marshalling failures.

  was:
The code in JettyHttpComponent seems to ignore any httpBindingRef endpoint 
property, at least if you use the REST DSL. It always creates a consumer with 
this binding:

{code}
endpoint.setBinding(new JettyRestHttpBinding(endpoint));
{code}

This makes it impossible to configure custom error responses by overriding the 
doWriteExceptionResponse method of the binding, as documented.

My actual case is an (invalid) Java instance I'm transforming to JSON with 
Jackson. This happens in RestBindingMarshalOnCompletion#onAfterRoute and the 
only way to catch an exception at this stage seems to be in the HttpBinding.



> Replace hardcoded JettyRestHttpBinding instantiation in JettyHttpComponent
> --------------------------------------------------------------------------
>
>                 Key: CAMEL-9034
>                 URL: https://issues.apache.org/jira/browse/CAMEL-9034
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-jetty
>    Affects Versions: 2.15.2
>            Reporter: Christian Bauer
>
> The code in JettyHttpComponent seems to ignore any httpBindingRef endpoint 
> property, at least if you use the REST DSL. It always creates a consumer with 
> this binding:
> {code}
> endpoint.setBinding(new JettyRestHttpBinding(endpoint));
> {code}
> This makes it impossible to configure custom error responses by overriding 
> the doWriteExceptionResponse method of the binding, as documented.
> My actual case is an (invalid) Java instance I'm transforming to JSON with 
> Jackson. This happens in RestBindingMarshalOnCompletion#onAfterRoute and the 
> only way to catch an exception at this stage seems to be in the HttpBinding.
> Note that this means users of the REST DSL will always return 500 errors with 
> full stacktraces on marshalling failures.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to