camel-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Willem Jiang <willem.ji...@gmail.com>
Subject Re: [2/3] git commit: CAMEL-7856 camel-cxf producer HttpAPI should not send the message body when using DELETE method
Date Wed, 24 Sep 2014 13:24:55 GMT
Actually, this patch is try to avoid sending the message body with the DELETE method if camel
proxy the request just like this
 
 <from uri="cxfrs://bean://rsServer"/>
 <to uri="log:body?level=INFO"/>
 <to uri="cxfrs://bean://rsClient"/> 

As camel-cxfrs consumer put the invocation parameters into the camel message body, the proxy
just add the message body 124 like this

2014-09-24 21:00:19,378 [qtp841166421-29] INFO  LoggingInInterceptor           - Inbound
Message
----------------------------
ID: 11
Address: http://localhost:1101/CxfRsRouterTest/route/customerservice/customers/124/
Http-Method: DELETE
Content-Type: 
Headers: {accept-encoding=[gzip,deflate], connection=[keep-alive], Content-Type=[null], Host=[localhost:1101],
User-Agent=[Apache-HttpClient/4.3.3 (java 1.5)]}
--------------------------------------
2014-09-24 21:00:19,380 [qtp841166421-29] INFO  body                        
  - Exchange[ExchangePattern: InOut, BodyType: org.apache.cxf.message.MessageContentsList,
Body: 124]
2014-09-24 21:00:19,385 [qtp841166421-29] INFO  LoggingOutInterceptor          - Outbound
Message
---------------------------
ID: 12
Address: http://localhost:1102/CxfRsRouterTest/rest/customerservice/customers/124/
Http-Method: DELETE
Content-Type: application/xml
Headers: {Host=[localhost:1101], org.apache.cxf.request.method=[DELETE], accept-encoding=[gzip,deflate],
connection=[keep-alive], org.apache.cxf.message.Message.PATH_INFO=[/customerservice/customers/124/],
breadcrumbId=[ID-localhost-51196-1411563616702-4-3], Accept=[*/*], org.apache.cxf.request.uri=[/CxfRsRouterTest/route/customerservice/customers/124/],
User-Agent=[Apache-HttpClient/4.3.3 (java 1.5)], Content-Type=[application/xml]}
Payload: 124  

If we remove the message body in the application level (in the camel route), the camel route
could be more complex as it need to know the underlay http request method. 

That is the reason that I create this JIRA to apply the best practise here.
 


--  
Willem Jiang

Red Hat, Inc.
Web: http://www.redhat.com
Blog: http://willemjiang.blogspot.com (English)
http://jnn.iteye.com (Chinese)
Twitter: willemjiang  
Weibo: 姜宁willem



On September 24, 2014 at 7:49:26 PM, Daniel Kulp (dkulp@apache.org) wrote:
>  
> Willem,
>  
> My reading of the discussion is that a DELETE MAY contain a message body, but the semantics
 
> are somewhat undefined. A proxy SHOULD forward that body on. This commit seems to make
 
> sure it doesn’t forward it along. Thus, I’m kind of against this commit.
>  
> We also had a discussion about this on the CXF list a while ago where the body was needed:
 
>  
> http://cxf.547215.n5.nabble.com/Sending-body-in-DELETE-HTTP-Requests-with-JAXRSClientFactoryBean-tt5735129.html
 
>  
>  
>  
> Dan
>  
>  
>  
> On Sep 24, 2014, at 1:44 AM, ningjiang@apache.org wrote:
>  
> > CAMEL-7856 camel-cxf producer HttpAPI should not send the message body when using
 
> DELETE method
> >
> >
> > Project: http://git-wip-us.apache.org/repos/asf/camel/repo
> > Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/5b4abb61
> > Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/5b4abb61
> > Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/5b4abb61
> >
> > Branch: refs/heads/camel-2.13.x
> > Commit: 5b4abb619b808d317da99037b734e78fc4398d29
> > Parents: 2b1296e
> > Author: Willem Jiang  
> > Authored: Wed Sep 24 13:41:41 2014 +0800
> > Committer: Willem Jiang  
> > Committed: Wed Sep 24 13:43:43 2014 +0800
> >
> > ----------------------------------------------------------------------  
> > .../java/org/apache/camel/component/cxf/jaxrs/CxfRsProducer.java | 4 ++--  
> > .../org/apache/camel/component/cxf/jaxrs/CxfRsSpringRouter.xml | 1 +
> > 2 files changed, 3 insertions(+), 2 deletions(-)
> > ----------------------------------------------------------------------  
> >
> >
> > http://git-wip-us.apache.org/repos/asf/camel/blob/5b4abb61/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducer.java
 
> > ----------------------------------------------------------------------  
> > diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducer.java
 
> b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducer.java
 
> > index 572e991..c580445 100644
> > --- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducer.java
 
> > +++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducer.java
 
> > @@ -158,8 +158,8 @@ public class CxfRsProducer extends DefaultProducer {
> >
> > // set the body
> > Object body = null;
> > - if (!"GET".equals(httpMethod)) {
> > - // need to check the request object.
> > + if (!"GET".equals(httpMethod) && !"DELETE".equals(httpMethod)) {
> > + // need to check the request object if the http Method is not GET or DELETE
> > body = binding.bindCamelMessageBodyToRequestBody(inMessage, exchange);
> > if (LOG.isTraceEnabled()) {
> > LOG.trace("Request body = " + body);
> >
> > http://git-wip-us.apache.org/repos/asf/camel/blob/5b4abb61/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/jaxrs/CxfRsSpringRouter.xml
 
> > ----------------------------------------------------------------------  
> > diff --git a/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/jaxrs/CxfRsSpringRouter.xml
 
> b/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/jaxrs/CxfRsSpringRouter.xml
 
> > index 154b572..9f51dd6 100644
> > --- a/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/jaxrs/CxfRsSpringRouter.xml
 
> > +++ b/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/jaxrs/CxfRsSpringRouter.xml
 
> > @@ -64,6 +64,7 @@
> >  
> >  
> >  
> > +  
> >  
> >  
> > True
> >
>  
> --
> Daniel Kulp
> dkulp@apache.org - http://dankulp.com/blog
> Talend Community Coder - http://coders.talend.com
>  
>  


Mime
View raw message