Re: Impossible to configure HttpBinding for ServletComponent

2014-11-22 Thread Claus Ibsen
Hi

Not its correct. That code is when you use the Rest DSL which requires
that binding. The regular servlet component does not use that code and
works as before.

On Fri, Nov 21, 2014 at 4:56 PM, Pavel Lechev  wrote:
> Hi all,
> I think this is a genuine bug, but I thought to post it here in the first
> instance.
> Camel v2.14.0
> The call to endpoint.setBinding(new ServletRestHttpBinding()); on line 208
> in org.apache.camel.component.servlet.ServletComponent overwrites the
> binding previously configured during the endpoint creation at line 96.
> This makes it impossible to use externally configured HttpBinding instance,
> in effect rendering the
> org.apache.camel.component.http.HttpComponent#httpBinding property unusable.
> Thanks
> Pav
>
>
>
>
> --
> View this message in context: 
> http://camel.465427.n5.nabble.com/Impossible-to-configure-HttpBinding-for-ServletComponent-tp5759473.html
> Sent from the Camel - Users mailing list archive at Nabble.com.



-- 
Claus Ibsen
-
Red Hat, Inc.
Email: cib...@redhat.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen
hawtio: http://hawt.io/
fabric8: http://fabric8.io/


Re: Impossible to configure HttpBinding for ServletComponent

2014-11-24 Thread Pavel Lechev
Hi Claus,
Thanks for your response. 
Am I to understand that the REST DSL in combination with the `servlet`
consumer does not allow setting a custom HttpBinding? If so, I believe this
is a huge limitation given that these two are very commonly used together.
It is also not very clear from the documentation that Servlet component will
not allow custom HttpBinding when used in REST DSL. 
Here is my scenario:
1. Servlet component explicitly defined in Spring context, where we set the
http binding: 
   
   
 
2. DSL REST config: 
restConfiguration().component("servlet")  <- use
the `servlet` component we defined above   
.bindingMode(RestBindingMode.auto);rest("/my-path")   
.consumes(MediaType.APPLICATION_XML)   
.produces(MediaType.APPLICATION_XML)   
.post().type(MyXMLMappedDataClass.class).route()   
.routeId("My-Route").to()   
 
Then, on Spring/Camel startup, the following calls are executed in this
order: 
1) component.createEndpoint(..) in DefaultCamelContext.java:525 results in
endpoint.setBinding(binding) (on ServletComponent.java:96), which
*correctly* sets my custom binding instance, however the next step 
2) factory.createConsumer(..) RestEndpoint.java:167 results in
endpoint.setBinding(new ServletRestHttpBinding()) (on
ServletComponent.java:208), which overwrites the instance previously set
I can understand the rationale behind enforcing ServletRestHttpBinding,
however it will be good if the option to extend this class and configure it
as a custom binding still exists. 
Thanks
Pav



--
View this message in context: 
http://camel.465427.n5.nabble.com/Impossible-to-configure-HttpBinding-for-ServletComponent-tp5759473p5759528.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: Impossible to configure HttpBinding for ServletComponent

2014-11-24 Thread Claus Ibsen
Just define a new component for rest.




On Mon, Nov 24, 2014 at 10:26 AM, Pavel Lechev  wrote:
> Hi Claus,
> Thanks for your response.
> Am I to understand that the REST DSL in combination with the `servlet`
> consumer does not allow setting a custom HttpBinding? If so, I believe this
> is a huge limitation given that these two are very commonly used together.
> It is also not very clear from the documentation that Servlet component will
> not allow custom HttpBinding when used in REST DSL.
> Here is my scenario:
> 1. Servlet component explicitly defined in Spring context, where we set the
> http binding:
>  class="org.apache.camel.component.servlet.ServletComponent">
>  class="my.custom.HttpBinding"/>
> 
> 2. DSL REST config:
> restConfiguration().component("servlet")  <- use
> the `servlet` component we defined above
> .bindingMode(RestBindingMode.auto);rest("/my-path")
> .consumes(MediaType.APPLICATION_XML)
> .produces(MediaType.APPLICATION_XML)
> .post().type(MyXMLMappedDataClass.class).route()
> .routeId("My-Route").to() 
>   
> Then, on Spring/Camel startup, the following calls are executed in 
> this
> order:
> 1) component.createEndpoint(..) in DefaultCamelContext.java:525 results in
> endpoint.setBinding(binding) (on ServletComponent.java:96), which
> *correctly* sets my custom binding instance, however the next step
> 2) factory.createConsumer(..) RestEndpoint.java:167 results in
> endpoint.setBinding(new ServletRestHttpBinding()) (on
> ServletComponent.java:208), which overwrites the instance previously set
> I can understand the rationale behind enforcing ServletRestHttpBinding,
> however it will be good if the option to extend this class and configure it
> as a custom binding still exists.
> Thanks
> Pav
>
>
>
> --
> View this message in context: 
> http://camel.465427.n5.nabble.com/Impossible-to-configure-HttpBinding-for-ServletComponent-tp5759473p5759528.html
> Sent from the Camel - Users mailing list archive at Nabble.com.



-- 
Claus Ibsen
-
Red Hat, Inc.
Email: cib...@redhat.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen
hawtio: http://hawt.io/
fabric8: http://fabric8.io/


Re: Impossible to configure HttpBinding for ServletComponent

2014-11-24 Thread Pavel Lechev
Apologies, perhaps it wasn't clear - the component is specifically defined
for REST: 

restservlet*"
class="org.apache.camel...ServletComponent">

In fact, in my XML config and the DSL, the ServletComponent bean ID is not
"servlet". I just changed it in the email to avoid confusion, but I am
assuming if no other ServletComponent-s are defined the ID string is
irrelevant as long as properly referenced. 


Claus Ibsen-2 wrote
> Just define a new component for rest.
> 
> 
> On Mon, Nov 24, 2014 at 10:26 AM, Pavel Lechev <

> p.lechev@

> > wrote:
>> Hi Claus,
>> Thanks for your response.
>> Am I to understand that the REST DSL in combination with the `servlet`
>> consumer does not allow setting a custom HttpBinding? If so, I believe
>> this
>> is a huge limitation given that these two are very commonly used
>> together.
>> It is also not very clear from the documentation that Servlet component
>> will
>> not allow custom HttpBinding when used in REST DSL.
>> Here is my scenario:
>> 1. Servlet component explicitly defined in Spring context, where we set
>> the
>> http binding:
>> > class="org.apache.camel.component.servlet.ServletComponent">
>> > class="my.custom.HttpBinding"/>
>> 
>> 2. DSL REST config:
>> restConfiguration().component("servlet")  <-
>> use
>> the `servlet` component we defined above
>> .bindingMode(RestBindingMode.auto);rest("/my-path")
>> .consumes(MediaType.APPLICATION_XML)
>> .produces(MediaType.APPLICATION_XML)
>> .post().type(MyXMLMappedDataClass.class).route()
>> .routeId("My-Route").to()
>>   
>> 
>> Then, on Spring/Camel startup, the following calls are executed
>> in this
>> order:
>> 1) component.createEndpoint(..) in DefaultCamelContext.java:525 results
>> in
>> endpoint.setBinding(binding) (on ServletComponent.java:96), which
>> *correctly* sets my custom binding instance, however the next step
>> 2) factory.createConsumer(..) RestEndpoint.java:167 results in
>> endpoint.setBinding(new ServletRestHttpBinding()) (on
>> ServletComponent.java:208), which overwrites the instance previously set
>> I can understand the rationale behind enforcing ServletRestHttpBinding,
>> however it will be good if the option to extend this class and configure
>> it
>> as a custom binding still exists.
>> Thanks
>> Pav
>>
>>
>>
>> --
>> View this message in context:
>> http://camel.465427.n5.nabble.com/Impossible-to-configure-HttpBinding-for-ServletComponent-tp5759473p5759528.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.
> 
> 
> 
> -- 
> Claus Ibsen
> -
> Red Hat, Inc.
> Email: 

> cibsen@

> Twitter: davsclaus
> Blog: http://davsclaus.com
> Author of Camel in Action: http://www.manning.com/ibsen
> hawtio: http://hawt.io/
> fabric8: http://fabric8.io/





--
View this message in context: 
http://camel.465427.n5.nabble.com/Impossible-to-configure-HttpBinding-for-ServletComponent-tp5759473p5759530.html
Sent from the Camel - Users mailing list archive at Nabble.com.