You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ws.apache.org by ve...@apache.org on 2016/02/22 22:14:40 UTC

svn commit: r1731741 - in /webservices/axiom/trunk/aspects: core-aspects/src/main/java/org/apache/axiom/core/ om-aspects/src/main/java/org/apache/axiom/om/impl/common/serializer/push/sax/ om-aspects/src/main/java/org/apache/axiom/om/impl/intf/

Author: veithen
Date: Mon Feb 22 21:14:40 2016
New Revision: 1731741

URL: http://svn.apache.org/viewvc?rev=1731741&view=rev
Log:
Decouple SAXSerializer from the TextContent API.

Modified:
    webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CharacterData.java
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/serializer/push/sax/SAXSerializer.java
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/intf/TextContent.java

Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CharacterData.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CharacterData.java?rev=1731741&r1=1731740&r2=1731741&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CharacterData.java (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CharacterData.java Mon Feb 22 21:14:40 2016
@@ -18,6 +18,9 @@
  */
 package org.apache.axiom.core;
 
+import java.io.IOException;
+import java.io.Writer;
+
 /**
  * Represents character data stored by a {@link CoreCharacterDataNode} instance. The content of a
  * {@link CoreCharacterDataNode} is either a {@link String} object or an instance of this interface.
@@ -25,4 +28,5 @@ package org.apache.axiom.core;
 public interface CharacterData {
     <T> CharacterData clone(ClonePolicy<T> policy, T options);
     String toString();
+    void writeTo(Writer writer) throws IOException;
 }

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/serializer/push/sax/SAXSerializer.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/serializer/push/sax/SAXSerializer.java?rev=1731741&r1=1731740&r2=1731741&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/serializer/push/sax/SAXSerializer.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/serializer/push/sax/SAXSerializer.java Mon Feb 22 21:14:40 2016
@@ -21,12 +21,9 @@ package org.apache.axiom.om.impl.common.
 import java.io.IOException;
 import java.util.Stack;
 
-import javax.activation.DataHandler;
-
+import org.apache.axiom.core.CharacterData;
 import org.apache.axiom.core.stream.StreamException;
 import org.apache.axiom.core.stream.XmlHandler;
-import org.apache.axiom.om.impl.intf.TextContent;
-import org.apache.axiom.util.base64.Base64EncodingWriterOutputStream;
 import org.apache.axiom.util.namespace.ScopedNamespaceContext;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.SAXException;
@@ -149,28 +146,20 @@ public class SAXSerializer implements Xm
             if (ignorable) {
                 char[] ch = data.toString().toCharArray();
                 contentHandler.ignorableWhitespace(ch, 0, ch.length);
-            } else {
-                if (data instanceof TextContent) {
-                    TextContent textContent = (TextContent)data;
-                    if (textContent.isBinary()) {
-                        DataHandler dataHandler = textContent.getDataHandler();
-                        Base64EncodingWriterOutputStream out = new Base64EncodingWriterOutputStream(new ContentHandlerWriter(contentHandler), 4096, true);
-                        try {
-                            dataHandler.writeTo(out);
-                            out.complete();
-                        } catch (IOException ex) {
-                            Throwable cause = ex.getCause();
-                            SAXException saxException;
-                            if (cause instanceof SAXException) {
-                                saxException = (SAXException)cause;
-                            } else {
-                                saxException = new SAXException(ex);
-                            }
-                            throw new StreamException(saxException);
-                        }
-                        return;
+            } else if (data instanceof CharacterData) {
+                try {
+                    ((CharacterData)data).writeTo(new ContentHandlerWriter(contentHandler));
+                } catch (IOException ex) {
+                    Throwable cause = ex.getCause();
+                    SAXException saxException;
+                    if (cause instanceof SAXException) {
+                        saxException = (SAXException)cause;
+                    } else {
+                        saxException = new SAXException(ex);
                     }
+                    throw new StreamException(saxException);
                 }
+            } else {
                 char[] ch = data.toString().toCharArray();
                 contentHandler.characters(ch, 0, ch.length);
             }

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/intf/TextContent.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/intf/TextContent.java?rev=1731741&r1=1731740&r2=1731741&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/intf/TextContent.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/intf/TextContent.java Mon Feb 22 21:14:40 2016
@@ -19,6 +19,7 @@
 package org.apache.axiom.om.impl.intf;
 
 import java.io.IOException;
+import java.io.Writer;
 
 import javax.activation.DataHandler;
 
@@ -29,6 +30,7 @@ import org.apache.axiom.ext.stax.datahan
 import org.apache.axiom.om.OMCloneOptions;
 import org.apache.axiom.om.OMException;
 import org.apache.axiom.util.UIDGenerator;
+import org.apache.axiom.util.base64.Base64EncodingWriterOutputStream;
 import org.apache.axiom.util.base64.Base64Utils;
 
 public final class TextContent implements CharacterData {
@@ -162,4 +164,15 @@ public final class TextContent implement
         }
         return new TextContent(this);
     }
+
+    @Override
+    public void writeTo(Writer writer) throws IOException {
+        if (binary) {
+            Base64EncodingWriterOutputStream out = new Base64EncodingWriterOutputStream(writer, 4096, true);
+            getDataHandler().writeTo(out);
+            out.complete();
+        } else {
+            writer.write(value);
+        }
+    }
 }