[jboss-svn-commits] JBoss Common SVN: r1927 - trunk/src/main/org/jboss/util/xml

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Aug 10 09:33:23 EDT 2006


Author: thomas.diesler at jboss.com
Date: 2006-08-10 09:33:20 -0400 (Thu, 10 Aug 2006)
New Revision: 1927

Modified:
   trunk/src/main/org/jboss/util/xml/DOMUtils.java
Log:
Fix DomUtils.parse(Reader)

Modified: trunk/src/main/org/jboss/util/xml/DOMUtils.java
===================================================================
--- trunk/src/main/org/jboss/util/xml/DOMUtils.java	2006-08-10 12:09:37 UTC (rev 1926)
+++ trunk/src/main/org/jboss/util/xml/DOMUtils.java	2006-08-10 13:33:20 UTC (rev 1927)
@@ -118,11 +118,28 @@
      */
     public static Element parse(Reader xmlReader) throws IOException
     {
-     	CharBuffer target = CharBuffer.allocate(1024);
-       	xmlReader.read(target);
-       	return parse (new ByteArrayInputStream (target.toString().getBytes()));
+       return DOMUtils.parse(transformReader(xmlReader));
     }
 
+    /**
+     * Transform a Reader to an InputStream
+     * Background is that DocumentBuilder.parse() cannot take the Reader directly 
+     */
+    private static InputStream transformReader(Reader reader) throws IOException
+    {
+       int capacity = 1024;
+       char[] charBuffer = new char[capacity];
+       StringBuffer strBuffer = new StringBuffer(capacity);
+       
+       int len = reader.read(charBuffer, 0, capacity);
+       while (len > 0)
+       {
+          strBuffer.append(charBuffer, 0, len);
+          len = reader.read(charBuffer, 0, capacity);
+       }
+       return new ByteArrayInputStream(strBuffer.toString().getBytes());
+    }
+    
     /** Create an Element for a given name
      */
     public static Element createElement(String localPart)




More information about the jboss-svn-commits mailing list