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.
}
}