Hi Dan, Willem
On 24/09/14 14:37, Daniel Kulp wrote:

That’s likely a different issue.   Nt sure the parameter should be added as 
part of the body in this case as part of the consumer.  I’d defer that to 
Sergey, but certainly the CxfProducer needs to be able to send a DELETE with a 
payload.

It is indeed the case of the client proxy unintentionally picking up a payload and using it in DELETE, so indeed it is about the optional payload exclusion as opposed to completely blocking the client to avoid sending payloads with DELETE

Willem, IMHO this should be optional

Thanks, Sergey

Dan



On Sep 24, 2014, at 9:24 AM, Willem Jiang <willem.ji...@gmail.com> wrote:

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 (dk...@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, ningji...@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
dk...@apache.org - http://dankulp.com/blog
Talend Community Coder - http://coders.talend.com


Reply via email to