You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2012/08/13 04:40:32 UTC
svn commit: r1372245 - in /camel/trunk/components/camel-cxf/src:
main/java/org/apache/camel/component/cxf/converter/CxfConverter.java
test/java/org/apache/camel/component/cxf/converter/ConverterTest.java
Author: ningjiang
Date: Mon Aug 13 02:40:32 2012
New Revision: 1372245
URL: http://svn.apache.org/viewvc?rev=1372245&view=rev
Log:
CAMEL-5499 Fixed the Cxf fallback converter issue of return null instead of Void.value
Modified:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfConverter.java
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/converter/ConverterTest.java
Modified: camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfConverter.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfConverter.java?rev=1372245&r1=1372244&r2=1372245&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfConverter.java (original)
+++ camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfConverter.java Mon Aug 13 02:40:32 2012
@@ -142,7 +142,8 @@ public final class CxfConverter {
// CXF-WS MessageContentsList class
if (MessageContentsList.class.isAssignableFrom(value.getClass())) {
MessageContentsList list = (MessageContentsList)value;
-
+
+ // try to turn the first array element into the object that we want
for (Object embedded : list) {
if (embedded != null) {
if (type.isInstance(embedded)) {
@@ -150,7 +151,12 @@ public final class CxfConverter {
} else {
TypeConverter tc = registry.lookup(type, embedded.getClass());
if (tc != null) {
- return tc.convertTo(type, exchange, embedded);
+ Object result = tc.convertTo(type, exchange, embedded);
+ if (result != null) {
+ return (T)result;
+ }
+ // there is no suitable result will be return
+ break;
}
}
}
Modified: camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/converter/ConverterTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/converter/ConverterTest.java?rev=1372245&r1=1372244&r2=1372245&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/converter/ConverterTest.java (original)
+++ camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/converter/ConverterTest.java Mon Aug 13 02:40:32 2012
@@ -17,19 +17,29 @@
package org.apache.camel.component.cxf.converter;
import java.io.ByteArrayInputStream;
+import java.io.File;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
+
import javax.ws.rs.core.Response;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
import org.apache.camel.CamelContext;
import org.apache.camel.Exchange;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.impl.DefaultExchange;
+import org.apache.cxf.message.MessageContentsList;
import org.easymock.EasyMock;
import org.junit.Assert;
import org.junit.Test;
+
public class ConverterTest extends Assert {
@Test
@@ -67,5 +77,32 @@ public class ConverterTest extends Asser
assertTrue("We should get the inputStream here ", result instanceof ByteArrayInputStream);
EasyMock.verify(response);
}
+
+ @Test
+ public void testFallbackConverter() throws Exception {
+ CamelContext context = new DefaultCamelContext();
+ Exchange exchange = new DefaultExchange(context);
+ MessageContentsList list = new MessageContentsList();
+ NodeListWrapper nl = new NodeListWrapper(new ArrayList<Element>());
+ list.add(nl);
+ exchange.getIn().setBody(list);
+ Node node = exchange.getIn().getBody(Node.class);
+ assertNull(node);
+
+ File file = new File("src/test/resources/org/apache/camel/component/cxf/converter/test.xml");
+ DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
+ documentBuilderFactory.setNamespaceAware(true);
+ DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
+ Document document = documentBuilder.parse(file);
+ document.getDocumentElement().normalize();
+ List<Element> elements = new ArrayList<Element>();
+ elements.add(document.getDocumentElement());
+ nl = new NodeListWrapper(elements);
+ list.clear();
+ list.add(nl);
+ exchange.getIn().setBody(list);
+ node = exchange.getIn().getBody(Node.class);
+ assertNotNull(node);
+ }
}