Return-Path: X-Original-To: apmail-camel-commits-archive@www.apache.org Delivered-To: apmail-camel-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 1841DD68F for ; Tue, 18 Dec 2012 21:12:50 +0000 (UTC) Received: (qmail 1959 invoked by uid 500); 18 Dec 2012 21:12:50 -0000 Delivered-To: apmail-camel-commits-archive@camel.apache.org Received: (qmail 1917 invoked by uid 500); 18 Dec 2012 21:12:50 -0000 Mailing-List: contact commits-help@camel.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@camel.apache.org Delivered-To: mailing list commits@camel.apache.org Received: (qmail 1910 invoked by uid 99); 18 Dec 2012 21:12:49 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 18 Dec 2012 21:12:49 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 18 Dec 2012 21:12:48 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 4CAE22388B75; Tue, 18 Dec 2012 21:12:28 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1423651 - in /camel/branches/camel-2.10.x/components/camel-cxf/src: main/java/org/apache/camel/component/cxf/ main/java/org/apache/camel/component/cxf/converter/ test/java/org/apache/camel/component/cxf/converter/ Date: Tue, 18 Dec 2012 21:12:27 -0000 To: commits@camel.apache.org From: dkulp@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20121218211228.4CAE22388B75@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: dkulp Date: Tue Dec 18 21:12:27 2012 New Revision: 1423651 URL: http://svn.apache.org/viewvc?rev=1423651&view=rev Log: Merged revisions 1423645 via git cherry-pick from https://svn.apache.org/repos/asf/camel/trunk ........ r1423645 | dkulp | 2012-12-18 15:58:07 -0500 (Tue, 18 Dec 2012) | 3 lines [CAMEL-5877] Fix some issues converting to Source for CxfPayload Modified patch from Aki Yoshida applied ........ Modified: camel/branches/camel-2.10.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java camel/branches/camel-2.10.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfPayloadConverter.java camel/branches/camel-2.10.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/converter/CxfPayloadConverterTest.java Modified: camel/branches/camel-2.10.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java?rev=1423651&r1=1423650&r2=1423651&view=diff ============================================================================== --- camel/branches/camel-2.10.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java (original) +++ camel/branches/camel-2.10.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java Tue Dec 18 21:12:27 2012 @@ -29,6 +29,7 @@ import javax.xml.stream.XMLStreamExcepti import javax.xml.stream.XMLStreamReader; import javax.xml.transform.Source; import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.sax.SAXSource; import javax.xml.transform.stax.StAXSource; import javax.xml.transform.stream.StreamSource; import javax.xml.ws.WebServiceProvider; @@ -931,7 +932,7 @@ public class CxfEndpoint extends Default } else if (source instanceof StAXSource) { StAXSource s = (StAXSource)source; r = s.getXMLStreamReader(); - } else if (source instanceof StreamSource) { + } else if (source instanceof StreamSource || source instanceof SAXSource) { //flip to stax so we can get the name r = StaxUtils.createXMLStreamReader(source); StaxSource src2 = new StaxSource(r); Modified: camel/branches/camel-2.10.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfPayloadConverter.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfPayloadConverter.java?rev=1423651&r1=1423650&r2=1423651&view=diff ============================================================================== --- camel/branches/camel-2.10.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfPayloadConverter.java (original) +++ camel/branches/camel-2.10.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfPayloadConverter.java Tue Dec 18 21:12:27 2012 @@ -17,6 +17,8 @@ package org.apache.camel.component.cxf.converter; import java.io.InputStream; +import java.io.Reader; +import java.io.StringReader; import java.util.ArrayList; import java.util.List; @@ -113,11 +115,32 @@ public final class CxfPayloadConverter { // CxfPayloads from other types if (type.isAssignableFrom(CxfPayload.class)) { if (!value.getClass().isArray()) { - TypeConverter tc = registry.lookup(Source.class, value.getClass()); - if (tc != null) { - Source src = tc.convertTo(Source.class, exchange, value); + Source src = null; + // many of the common format that can have a Source created directly + if (value instanceof InputStream) { + src = new StreamSource((InputStream)value); + } else if (value instanceof Reader) { + src = new StreamSource((Reader)value); + } else if (value instanceof String) { + src = new StreamSource(new StringReader((String)value)); + } else if (value instanceof Node) { + src = new DOMSource((Node)value); + } else if (value instanceof Source) { + src = (Source)src; + } + if (src == null) { + // assuming staxsource is preferred, otherwise use the one preferred + TypeConverter tc = registry.lookup(javax.xml.transform.stax.StAXSource.class, value.getClass()); + if (tc == null) { + tc = registry.lookup(Source.class, value.getClass()); + } + if (tc != null) { + src = tc.convertTo(Source.class, exchange, value); + } + } + if (src != null) { return (T) sourceToCxfPayload(src, exchange); - } + } } TypeConverter tc = registry.lookup(NodeList.class, value.getClass()); if (tc != null) { Modified: camel/branches/camel-2.10.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/converter/CxfPayloadConverterTest.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/converter/CxfPayloadConverterTest.java?rev=1423651&r1=1423650&r2=1423651&view=diff ============================================================================== --- camel/branches/camel-2.10.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/converter/CxfPayloadConverterTest.java (original) +++ camel/branches/camel-2.10.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/converter/CxfPayloadConverterTest.java Tue Dec 18 21:12:27 2012 @@ -93,7 +93,10 @@ public class CxfPayloadConverterTest ext exchange.getIn().setBody(inputStream); CxfPayload payload = exchange.getIn().getBody(CxfPayload.class); assertTrue(payload instanceof CxfPayload); + assertEquals("Get a wrong size of body", 1, payload.getBodySources().size()); assertEquals("Get a wrong size of body", 1, payload.getBody().size()); + assertEquals("expects stream source", "streamsource", payload.getBodySources().get(0).getClass().getSimpleName().toLowerCase()); + } @Test