You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by gn...@apache.org on 2006/04/28 10:13:01 UTC

svn commit: r397796 - in /incubator/servicemix/trunk/servicemix-core/src: main/java/org/apache/servicemix/jbi/jaxp/SourceTransformer.java test/java/org/apache/servicemix/jbi/jaxp/SourceTransformerTest.java

Author: gnodet
Date: Fri Apr 28 01:12:59 2006
New Revision: 397796

URL: http://svn.apache.org/viewcvs?rev=397796&view=rev
Log:
SM-414: SourceTransformer cant transform to DOM with non US ASCII characters
Patch provided by Juergen Mayrbaeurl, thx !

Modified:
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/jaxp/SourceTransformer.java
    incubator/servicemix/trunk/servicemix-core/src/test/java/org/apache/servicemix/jbi/jaxp/SourceTransformerTest.java

Modified: incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/jaxp/SourceTransformer.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/jaxp/SourceTransformer.java?rev=397796&r1=397795&r2=397796&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/jaxp/SourceTransformer.java (original)
+++ incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/jaxp/SourceTransformer.java Fri Apr 28 01:12:59 2006
@@ -48,6 +48,7 @@
 import java.io.InputStreamReader;
 import java.io.Reader;
 import java.io.StringWriter;
+import java.nio.charset.Charset;
 
 /**
  * A helper class to transform from one type of {@link Source} to another
@@ -62,6 +63,15 @@
     private DocumentBuilderFactory documentBuilderFactory;
     private TransformerFactory transformerFactory;
 
+    public static final String defaultCharEncodingName;
+    
+    static {
+        String canonName = new java.io.OutputStreamWriter( 
+                new java.io.ByteArrayOutputStream()).getEncoding();
+        
+        defaultCharEncodingName = Charset.forName(canonName).displayName();
+    }
+    
     public SourceTransformer() {
     }
 
@@ -190,7 +200,7 @@
         return new StreamSource(new ByteArrayInputStream(result.getBytes()));
     }
 
-	public StreamSource toStreamSourceFromDOM(DOMSource source) throws TransformerException {
+    public StreamSource toStreamSourceFromDOM(DOMSource source) throws TransformerException {
         String result = toString(source);
         return new StreamSource(new ByteArrayInputStream(result.getBytes()));
     }
@@ -218,7 +228,10 @@
         Document document = null;
         InputStream inputStream = source.getInputStream();
         if (inputStream != null) {
-            document = builder.parse(inputStream, systemId);
+            InputSource inputsource = new InputSource(inputStream);
+            inputsource.setSystemId(systemId);
+            inputsource.setEncoding(defaultCharEncodingName);
+            document = builder.parse(inputsource);
         }
         else {
             Reader reader = source.getReader();

Modified: incubator/servicemix/trunk/servicemix-core/src/test/java/org/apache/servicemix/jbi/jaxp/SourceTransformerTest.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-core/src/test/java/org/apache/servicemix/jbi/jaxp/SourceTransformerTest.java?rev=397796&r1=397795&r2=397796&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-core/src/test/java/org/apache/servicemix/jbi/jaxp/SourceTransformerTest.java (original)
+++ incubator/servicemix/trunk/servicemix-core/src/test/java/org/apache/servicemix/jbi/jaxp/SourceTransformerTest.java Fri Apr 28 01:12:59 2006
@@ -16,6 +16,7 @@
 package org.apache.servicemix.jbi.jaxp;
 
 import javax.xml.namespace.QName;
+import javax.xml.transform.dom.DOMSource;
 
 import junit.framework.TestCase;
 
@@ -41,6 +42,15 @@
         Element e = (Element) doc.getDocumentElement().getFirstChild();
         QName q = DOMUtil.createQName(e, e.getFirstChild().getNodeValue());
         assertEquals("http://foo.bar.com", q.getNamespaceURI());
+    }
+    
+    public void testToDOMSourceFromStream() throws Exception {
+        DOMSource domsource = transformer.toDOMSourceFromStream(new StringSource(
+            "<definition xmlns:tns='http://foo.bar.com'><value>Jürgen</value></definition>"));
+        assertNotNull(domsource);
+        
+        // 2006-04-28 JMa: You'll get a SAXParseException:
+        // [Fatal Error] :1:51: Invalid byte 1 of 1-byte UTF-8 sequence.
     }
 
 }