Author: ningjiang
Date: Thu Jan 28 06:32:57 2010
New Revision: 903970

URL: http://svn.apache.org/viewvc?rev=903970&view=rev
Log:
CAMEL-2407 support character encoding in XStreamDataFormat

Modified:
    
camel/trunk/camel-core/src/main/java/org/apache/camel/converter/jaxp/StaxConverter.java
    
camel/trunk/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/XStreamDataFormat.java
    
camel/trunk/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectTest.java
    
camel/trunk/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalListTest.java

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/converter/jaxp/StaxConverter.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/jaxp/StaxConverter.java?rev=903970&r1=903969&r2=903970&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/converter/jaxp/StaxConverter.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/converter/jaxp/StaxConverter.java
 Thu Jan 28 06:32:57 2010
@@ -32,6 +32,8 @@
 import javax.xml.transform.Source;
 
 import org.apache.camel.Converter;
+import org.apache.camel.Exchange;
+import org.apache.camel.converter.IOConverter;
 
 /**
  * A converter of StAX objects
@@ -44,6 +46,11 @@
     private XMLOutputFactory outputFactory;
 
     @Converter
+    public XMLEventWriter createXMLEventWriter(OutputStream out, Exchange 
exchange) throws XMLStreamException {
+        return getOutputFactory().createXMLEventWriter(out, 
IOConverter.getCharsetName(exchange));
+    }
+    
+    @Converter
     public XMLEventWriter createXMLEventWriter(OutputStream out) throws 
XMLStreamException {
         return getOutputFactory().createXMLEventWriter(out);
     }
@@ -57,13 +64,18 @@
     public XMLEventWriter createXMLEventWriter(Result result) throws 
XMLStreamException {
         return getOutputFactory().createXMLEventWriter(result);
     }
-
+    
     @Converter
     public XMLStreamWriter createXMLStreamWriter(OutputStream outputStream) 
throws XMLStreamException {
         return getOutputFactory().createXMLStreamWriter(outputStream);
     }
 
     @Converter
+    public XMLStreamWriter createXMLStreamWriter(OutputStream outputStream, 
Exchange exchange) throws XMLStreamException {
+        return getOutputFactory().createXMLStreamWriter(outputStream, 
IOConverter.getCharsetName(exchange));
+    }
+
+    @Converter
     public XMLStreamWriter createXMLStreamWriter(Writer writer) throws 
XMLStreamException {
         return getOutputFactory().createXMLStreamWriter(writer);
     }
@@ -77,6 +89,11 @@
     public XMLStreamReader createXMLStreamReader(InputStream in) throws 
XMLStreamException {
         return getInputFactory().createXMLStreamReader(in);
     }
+    
+    @Converter
+    public XMLStreamReader createXMLStreamReader(InputStream in, Exchange 
exchange) throws XMLStreamException {
+        return getInputFactory().createXMLStreamReader(in, 
IOConverter.getCharsetName(exchange));
+    }
 
     @Converter
     public XMLStreamReader createXMLStreamReader(Reader in) throws 
XMLStreamException {
@@ -87,13 +104,18 @@
     public XMLStreamReader createXMLStreamReader(Source in) throws 
XMLStreamException {
         return getInputFactory().createXMLStreamReader(in);
     }
-
+    
     @Converter
     public XMLEventReader createXMLEventReader(InputStream in) throws 
XMLStreamException {
         return getInputFactory().createXMLEventReader(in);
     }
 
     @Converter
+    public XMLEventReader createXMLEventReader(InputStream in, Exchange 
exchange) throws XMLStreamException {
+        return getInputFactory().createXMLEventReader(in, 
IOConverter.getCharsetName(exchange));
+    }
+
+    @Converter
     public XMLEventReader createXMLEventReader(Reader in) throws 
XMLStreamException {
         return getInputFactory().createXMLEventReader(in);
     }

Modified: 
camel/trunk/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/XStreamDataFormat.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/XStreamDataFormat.java?rev=903970&r1=903969&r2=903970&view=diff
==============================================================================
--- 
camel/trunk/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/XStreamDataFormat.java
 (original)
+++ 
camel/trunk/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/XStreamDataFormat.java
 Thu Jan 28 06:32:57 2010
@@ -73,12 +73,12 @@
     }    
 
     protected HierarchicalStreamWriter createHierarchicalStreamWriter(Exchange 
exchange, Object body, OutputStream stream) throws XMLStreamException {
-        XMLStreamWriter xmlWriter = 
getStaxConverter().createXMLStreamWriter(stream);
+        XMLStreamWriter xmlWriter = 
getStaxConverter().createXMLStreamWriter(stream, exchange);
         return new StaxWriter(new QNameMap(), xmlWriter);
     }
 
     protected HierarchicalStreamReader createHierarchicalStreamReader(Exchange 
exchange, InputStream stream) throws XMLStreamException {
-        XMLStreamReader xmlReader = 
getStaxConverter().createXMLStreamReader(stream);
+        XMLStreamReader xmlReader = 
getStaxConverter().createXMLStreamReader(stream, exchange);
         return new StaxReader(new QNameMap(), xmlReader);
     }
 }

Modified: 
camel/trunk/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectTest.java?rev=903970&r1=903969&r2=903970&view=diff
==============================================================================
--- 
camel/trunk/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectTest.java
 (original)
+++ 
camel/trunk/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectTest.java
 Thu Jan 28 06:32:57 2010
@@ -86,7 +86,7 @@
             public void configure() throws Exception {
                 from("direct:in").marshal().xstream().to("mock:result");
 
-                // just used for helping to marhsal
+                // just used for helping to marshal
                 from("direct:marshal").marshal().xstream();
 
                 
from("direct:reverse").unmarshal().xstream().to("mock:reverse");

Modified: 
camel/trunk/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalListTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalListTest.java?rev=903970&r1=903969&r2=903970&view=diff
==============================================================================
--- 
camel/trunk/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalListTest.java
 (original)
+++ 
camel/trunk/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalListTest.java
 Thu Jan 28 06:32:57 2010
@@ -21,6 +21,7 @@
 import java.util.List;
 import java.util.Map;
 
+import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
@@ -35,13 +36,13 @@
     public void testMarshalList() throws Exception {
         MockEndpoint mock = getMockEndpoint("mock:result");
         mock.expectedMessageCount(1);
-        mock.expectedBodiesReceived("<?xml version='1.0' encoding='UTF-8'?>"
+        mock.expectedBodiesReceived("<?xml version='1.0' 
encoding='ISO-8859-1'?>"
             + "<list><string>Hello World</string></list>");
 
         List<String> body = new ArrayList<String>();
         body.add("Hello World");
 
-        template.sendBody("direct:in", body);
+        template.sendBodyAndProperty("direct:in", body, Exchange.CHARSET_NAME, 
"ISO-8859-1");
 
         mock.assertIsSatisfied();
     }
@@ -52,14 +53,14 @@
         mock.expectedMessageCount(1);
         mock.expectedBodiesReceived(
             "<?xml version='1.0' 
encoding='UTF-8'?><list><map><entry><string>city</string>"
-                + "<string>London</string></entry></map></list>");
+                + "<string>London\u0E08</string></entry></map></list>");
 
         List<Map<Object, String>> body = new ArrayList<Map<Object, String>>();
         Map<Object, String> row = new HashMap<Object, String>();
-        row.put("city", "London");
+        row.put("city", "London\u0E08");
         body.add(row);
 
-        template.sendBody("direct:in", body);
+        template.sendBodyAndProperty("direct:in", body, Exchange.CHARSET_NAME, 
"UTF-8");
 
         mock.assertIsSatisfied();
     }


Reply via email to