You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2009/03/03 22:39:30 UTC

svn commit: r749767 - /cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/Base64Type.java

Author: dkulp
Date: Tue Mar  3 21:39:29 2009
New Revision: 749767

URL: http://svn.apache.org/viewvc?rev=749767&view=rev
Log:
Fix aegis base64 types with different stax impls

Modified:
    cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/Base64Type.java

Modified: cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/Base64Type.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/Base64Type.java?rev=749767&r1=749766&r2=749767&view=diff
==============================================================================
--- cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/Base64Type.java (original)
+++ cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/Base64Type.java Tue Mar  3 21:39:29 2009
@@ -19,6 +19,8 @@
 package org.apache.cxf.aegis.type.basic;
 
 import java.io.ByteArrayOutputStream;
+import java.io.CharArrayWriter;
+import java.io.IOException;
 
 import javax.xml.stream.XMLStreamConstants;
 import javax.xml.stream.XMLStreamException;
@@ -80,20 +82,14 @@
                 return new byte[0];
             }
 
-            int length = reader.getTextLength();
-
-            char[] myBuffer = new char[length];
-            for (int sourceStart = 0;; sourceStart += length) {
-                int nCopied = reader.getTextCharacters(sourceStart, myBuffer, 0, length);
-
-                if (nCopied > 0) {
-                    Base64Utility.decode(myBuffer, 0, nCopied, bos);
-                }
-
-                if (nCopied < length) {
-                    break;
-                }
+            CharArrayWriter writer = new CharArrayWriter(2048);
+            while (reader.isCharacters()) {
+                writer.write(reader.getTextCharacters(),
+                             reader.getTextStart(),
+                             reader.getTextLength());
+                reader.next();
             }
+            Base64Utility.decode(writer.toCharArray(), 0, writer.size(), bos);
 
             while (reader.getEventType() != XMLStreamConstants.END_ELEMENT) {
                 reader.next();