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);
+ }
+ }
}