You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2016/08/05 09:04:46 UTC

camel git commit: CAMEL-10223: XmlRpc dataformat - Setting request=true should also apply for marshal

Repository: camel
Updated Branches:
  refs/heads/master 46d3e80af -> ede633299


CAMEL-10223: XmlRpc dataformat - Setting request=true should also apply for marshal


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/ede63329
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/ede63329
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/ede63329

Branch: refs/heads/master
Commit: ede633299873f95e3fca9841ea22308f96dee39a
Parents: 46d3e80
Author: Claus Ibsen <da...@apache.org>
Authored: Fri Aug 5 11:04:35 2016 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Aug 5 11:04:35 2016 +0200

----------------------------------------------------------------------
 .../camel/model/dataformat/XmlRpcDataFormat.java |  2 +-
 .../dataformat/xmlrpc/XmlRpcDataFormat.java      | 10 ++++++++--
 .../XmlRpcDataFormatConfiguration.java           |  2 +-
 .../dataformat/xmlrpc/XmlRpcDataFormatTest.java  | 19 +++++++++++++++++--
 4 files changed, 27 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/ede63329/camel-core/src/main/java/org/apache/camel/model/dataformat/XmlRpcDataFormat.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/XmlRpcDataFormat.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/XmlRpcDataFormat.java
index fa4acb3..b065876 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/XmlRpcDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/XmlRpcDataFormat.java
@@ -52,7 +52,7 @@ public class XmlRpcDataFormat extends DataFormatDefinition {
     }
 
     /**
-     * Whether to unmarshal request or response
+     * Whether to marshal/unmarshal request or response
      * <p/>
      * Is by default false
      */

http://git-wip-us.apache.org/repos/asf/camel/blob/ede63329/components/camel-xmlrpc/src/main/java/org/apache/camel/dataformat/xmlrpc/XmlRpcDataFormat.java
----------------------------------------------------------------------
diff --git a/components/camel-xmlrpc/src/main/java/org/apache/camel/dataformat/xmlrpc/XmlRpcDataFormat.java b/components/camel-xmlrpc/src/main/java/org/apache/camel/dataformat/xmlrpc/XmlRpcDataFormat.java
index d04d651..0adac3b 100644
--- a/components/camel-xmlrpc/src/main/java/org/apache/camel/dataformat/xmlrpc/XmlRpcDataFormat.java
+++ b/components/camel-xmlrpc/src/main/java/org/apache/camel/dataformat/xmlrpc/XmlRpcDataFormat.java
@@ -76,8 +76,14 @@ public class XmlRpcDataFormat extends ServiceSupport implements DataFormat, Data
         // need to check the object type
         XMLWriter control = getXMLWriter(exchange, stream);
         XmlRpcWriter writer = new XmlRpcWriter(xmlRpcStreamRequestConfig, control, typeFactory);
-        if (graph instanceof XmlRpcRequest) {
-            writer.writeRequest(xmlRpcStreamRequestConfig, (XmlRpcRequest)graph);
+
+        XmlRpcRequest request = null;
+        if (isRequest || graph instanceof XmlRpcRequest) {
+            request = exchange.getContext().getTypeConverter().mandatoryConvertTo(XmlRpcRequest.class, exchange, graph);
+        }
+
+        if (request != null) {
+            writer.writeRequest(xmlRpcStreamRequestConfig, request);
         } else {
             // write the result here directly
             // TODO write the fault message here

http://git-wip-us.apache.org/repos/asf/camel/blob/ede63329/components/camel-xmlrpc/src/main/java/org/apache/camel/dataformat/xmlrpc/springboot/XmlRpcDataFormatConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-xmlrpc/src/main/java/org/apache/camel/dataformat/xmlrpc/springboot/XmlRpcDataFormatConfiguration.java b/components/camel-xmlrpc/src/main/java/org/apache/camel/dataformat/xmlrpc/springboot/XmlRpcDataFormatConfiguration.java
index 40ee576..0311c42 100644
--- a/components/camel-xmlrpc/src/main/java/org/apache/camel/dataformat/xmlrpc/springboot/XmlRpcDataFormatConfiguration.java
+++ b/components/camel-xmlrpc/src/main/java/org/apache/camel/dataformat/xmlrpc/springboot/XmlRpcDataFormatConfiguration.java
@@ -27,7 +27,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 public class XmlRpcDataFormatConfiguration {
 
     /**
-     * Whether to unmarshal request or response Is by default false
+     * Whether to marshal/unmarshal request or response Is by default false
      */
     private Boolean request = false;
 

http://git-wip-us.apache.org/repos/asf/camel/blob/ede63329/components/camel-xmlrpc/src/test/java/org/apache/camel/dataformat/xmlrpc/XmlRpcDataFormatTest.java
----------------------------------------------------------------------
diff --git a/components/camel-xmlrpc/src/test/java/org/apache/camel/dataformat/xmlrpc/XmlRpcDataFormatTest.java b/components/camel-xmlrpc/src/test/java/org/apache/camel/dataformat/xmlrpc/XmlRpcDataFormatTest.java
index d2345d7..381f499 100644
--- a/components/camel-xmlrpc/src/test/java/org/apache/camel/dataformat/xmlrpc/XmlRpcDataFormatTest.java
+++ b/components/camel-xmlrpc/src/test/java/org/apache/camel/dataformat/xmlrpc/XmlRpcDataFormatTest.java
@@ -18,6 +18,7 @@ package org.apache.camel.dataformat.xmlrpc;
 
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.component.xmlrpc.XmlRpcConstants;
 import org.apache.camel.component.xmlrpc.XmlRpcRequestImpl;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.apache.xmlrpc.XmlRpcRequest;
@@ -35,9 +36,23 @@ public class XmlRpcDataFormatTest extends CamelTestSupport {
         assertEquals("Get a wrong request parameter size", 2, result.getParameterCount());
         assertEquals("Get a wrong request parameter", 2, result.getParameter(1));
         assertMockEndpointsSatisfied();
-        
     }
-    
+
+    @Test
+    public void testRequestMessageFromList() throws Exception {
+        MockEndpoint mock = getMockEndpoint("mock:request");
+        mock.expectedMessageCount(1);
+
+        Object[] body = new Object[]{"you", 2};
+        XmlRpcRequest result = template.requestBodyAndHeader("direct:request", body, XmlRpcConstants.METHOD_NAME, "greet", XmlRpcRequest.class);
+        assertNotNull(result);
+
+        assertEquals("Get a wrong request operation name", "greet", result.getMethodName());
+        assertEquals("Get a wrong request parameter size", 2, result.getParameterCount());
+        assertEquals("Get a wrong request parameter", 2, result.getParameter(1));
+        assertMockEndpointsSatisfied();
+    }
+
     @Test
     public void testResponseMessage() throws Exception {
         MockEndpoint mock = getMockEndpoint("mock:response");