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/27 20:16:10 UTC
svn commit: r1732666 - in /webservices/axiom/trunk/aspects:
core-aspects/src/main/java/org/apache/axiom/core/impl/mixin/
core-aspects/src/main/java/org/apache/axiom/core/stream/
core-aspects/src/main/java/org/apache/axiom/core/stream/sax/ om-aspects/sr...
Author: veithen
Date: Sat Feb 27 19:16:09 2016
New Revision: 1732666
URL: http://svn.apache.org/viewvc?rev=1732666&view=rev
Log:
Realign the XmlHandler API with the structure of the core model.
Modified:
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/mixin/CoreCommentSupport.aj
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/mixin/CoreProcessingInstructionSupport.aj
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/DocumentElementExtractingFilterHandler.java
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/XmlHandler.java
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/XmlHandlerWrapper.java
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/sax/ContentHandlerXmlHandler.java
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/sax/XmlHandlerContentHandler.java
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/SAXResultContentHandler.java
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandler.java
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/Context.java
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/StAXHelper.java
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/serializer/push/stax/StAXSerializer.java
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/stream/stax/XmlHandlerStreamWriter.java
Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/mixin/CoreCommentSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/mixin/CoreCommentSupport.aj?rev=1732666&r1=1732665&r2=1732666&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/mixin/CoreCommentSupport.aj (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/mixin/CoreCommentSupport.aj Sat Feb 27 19:16:09 2016
@@ -34,7 +34,11 @@ public aspect CoreCommentSupport {
public final <T> void CoreComment.init(ClonePolicy<T> policy, T options, CoreNode other) {
}
- public final void CoreComment.internalSerialize(XmlHandler handler, boolean cache) throws CoreModelException, StreamException {
- handler.processComment(coreGetCharacterData().toString());
+ final void CoreComment.serializeStartEvent(XmlHandler handler) throws CoreModelException, StreamException {
+ handler.startComment();
+ }
+
+ final void CoreComment.serializeEndEvent(XmlHandler handler) throws StreamException {
+ handler.endComment();
}
}
Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/mixin/CoreProcessingInstructionSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/mixin/CoreProcessingInstructionSupport.aj?rev=1732666&r1=1732665&r2=1732666&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/mixin/CoreProcessingInstructionSupport.aj (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/mixin/CoreProcessingInstructionSupport.aj Sat Feb 27 19:16:09 2016
@@ -45,7 +45,11 @@ public aspect CoreProcessingInstructionS
target = ((CoreProcessingInstruction)other).target;
}
- public final void CoreProcessingInstruction.internalSerialize(XmlHandler handler, boolean cache) throws CoreModelException, StreamException {
- handler.processProcessingInstruction(coreGetTarget() + " ", coreGetCharacterData().toString());
+ final void CoreProcessingInstruction.serializeStartEvent(XmlHandler handler) throws CoreModelException, StreamException {
+ handler.startProcessingInstruction(coreGetTarget() + " ");
+ }
+
+ final void CoreProcessingInstruction.serializeEndEvent(XmlHandler handler) throws StreamException {
+ handler.endProcessingInstruction();
}
}
Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/DocumentElementExtractingFilterHandler.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/DocumentElementExtractingFilterHandler.java?rev=1732666&r1=1732665&r2=1732666&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/DocumentElementExtractingFilterHandler.java (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/DocumentElementExtractingFilterHandler.java Sat Feb 27 19:16:09 2016
@@ -57,16 +57,30 @@ public final class DocumentElementExtrac
}
@Override
- public void processProcessingInstruction(String piTarget, String piData) throws StreamException {
+ public void startProcessingInstruction(String target) throws StreamException {
if (depth > 0) {
- super.processProcessingInstruction(piTarget, piData);
+ super.startProcessingInstruction(target);
}
}
@Override
- public void processComment(String content) throws StreamException {
+ public void endProcessingInstruction() throws StreamException {
if (depth > 0) {
- super.processComment(content);
+ super.endProcessingInstruction();
+ }
+ }
+
+ @Override
+ public void startComment() throws StreamException {
+ if (depth > 0) {
+ super.startComment();
+ }
+ }
+
+ @Override
+ public void endComment() throws StreamException {
+ if (depth > 0) {
+ super.endComment();
}
}
}
Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/XmlHandler.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/XmlHandler.java?rev=1732666&r1=1732665&r2=1732666&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/XmlHandler.java (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/XmlHandler.java Sat Feb 27 19:16:09 2016
@@ -76,9 +76,39 @@ public interface XmlHandler {
void processCharacterData(Object data, boolean ignorable) throws StreamException;
- void processProcessingInstruction(String piTarget, String piData) throws StreamException;
+ /**
+ * Notify the handler of the beginning of a processing instruction.
+ *
+ * @param target
+ * the target of the processing instruction
+ * @throws StreamException
+ * if an error occurs when processing the event
+ */
+ void startProcessingInstruction(String target) throws StreamException;
+
+ /**
+ * Notify the handler of the end of a processing instruction.
+ *
+ * @throws StreamException
+ * if an error occurs when processing the event
+ */
+ void endProcessingInstruction() throws StreamException;
- void processComment(String content) throws StreamException;
+ /**
+ * Notify the handler of the beginning of a comment.
+ *
+ * @throws StreamException
+ * if an error occurs when processing the event
+ */
+ void startComment() throws StreamException;
+
+ /**
+ * Notify the handler of the end of a comment.
+ *
+ * @throws StreamException
+ * if an error occurs when processing the event
+ */
+ void endComment() throws StreamException;
/**
* Notify the handler of the beginning of a CDATA section.
Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/XmlHandlerWrapper.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/XmlHandlerWrapper.java?rev=1732666&r1=1732665&r2=1732666&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/XmlHandlerWrapper.java (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/XmlHandlerWrapper.java Sat Feb 27 19:16:09 2016
@@ -70,13 +70,20 @@ public class XmlHandlerWrapper implement
parent.processCharacterData(data, ignorable);
}
- public void processProcessingInstruction(String piTarget, String piData)
- throws StreamException {
- parent.processProcessingInstruction(piTarget, piData);
+ public void startProcessingInstruction(String target) throws StreamException {
+ parent.startProcessingInstruction(target);
}
- public void processComment(String content) throws StreamException {
- parent.processComment(content);
+ public void endProcessingInstruction() throws StreamException {
+ parent.endProcessingInstruction();
+ }
+
+ public void startComment() throws StreamException {
+ parent.startComment();
+ }
+
+ public void endComment() throws StreamException {
+ parent.endComment();
}
public void startCDATASection() throws StreamException {
Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/sax/ContentHandlerXmlHandler.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/sax/ContentHandlerXmlHandler.java?rev=1732666&r1=1732665&r2=1732666&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/sax/ContentHandlerXmlHandler.java (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/sax/ContentHandlerXmlHandler.java Sat Feb 27 19:16:09 2016
@@ -24,12 +24,15 @@ import java.util.Stack;
import org.apache.axiom.core.CharacterData;
import org.apache.axiom.core.stream.StreamException;
import org.apache.axiom.core.stream.XmlHandler;
+import org.apache.axiom.core.stream.util.CharacterDataAccumulator;
import org.xml.sax.ContentHandler;
import org.xml.sax.SAXException;
import org.xml.sax.ext.LexicalHandler;
import org.xml.sax.helpers.AttributesImpl;
public class ContentHandlerXmlHandler implements XmlHandler {
+ private enum CharacterDataMode { PASS_THROUGH, BUFFER, SKIP, ACCUMULATE };
+
private final ContentHandler contentHandler;
private final LexicalHandler lexicalHandler;
private String[] prefixStack = new String[16];
@@ -43,6 +46,11 @@ public class ContentHandlerXmlHandler im
private String elementLocalName;
private String elementQName;
private final AttributesImpl attributes = new AttributesImpl();
+ private CharacterDataMode characterDataMode = CharacterDataMode.PASS_THROUGH;
+ private char[] buffer = new char[4096];
+ private int bufferPos;
+ private CharacterDataAccumulator accumulator;
+ private String piTarget;
public ContentHandlerXmlHandler(ContentHandler contentHandler, LexicalHandler lexicalHandler) {
this.contentHandler = contentHandler;
@@ -151,27 +159,55 @@ public class ContentHandlerXmlHandler im
}
}
+ private void writeToBuffer(String data) {
+ int dataLen = data.length();
+ if (buffer.length-bufferPos < dataLen) {
+ int newLength = buffer.length;
+ do {
+ newLength *= 2;
+ } while (newLength-bufferPos < dataLen);
+ char[] newBuffer = new char[newLength];
+ System.arraycopy(buffer, 0, newBuffer, 0, bufferPos);
+ buffer = newBuffer;
+ }
+ data.getChars(0, dataLen, buffer, bufferPos);
+ bufferPos += dataLen;
+ }
+
public void processCharacterData(Object data, boolean ignorable) throws StreamException {
try {
- if (ignorable) {
- char[] ch = data.toString().toCharArray();
- contentHandler.ignorableWhitespace(ch, 0, ch.length);
- } 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;
+ switch (characterDataMode) {
+ case PASS_THROUGH:
+ if (ignorable) {
+ writeToBuffer(data.toString());
+ contentHandler.ignorableWhitespace(buffer, 0, bufferPos);
+ bufferPos = 0;
+ } 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 {
- saxException = new SAXException(ex);
+ writeToBuffer(data.toString());
+ contentHandler.characters(buffer, 0, bufferPos);
+ bufferPos = 0;
}
- throw new StreamException(saxException);
- }
- } else {
- char[] ch = data.toString().toCharArray();
- contentHandler.characters(ch, 0, ch.length);
+ break;
+ case BUFFER:
+ writeToBuffer(data.toString());
+ break;
+ case ACCUMULATE:
+ accumulator.append(data);
+ break;
+ case SKIP:
}
} catch (SAXException ex) {
throw new StreamException(ex);
@@ -200,20 +236,40 @@ public class ContentHandlerXmlHandler im
}
}
- public void processComment(String data) throws StreamException {
+ @Override
+ public void startComment() throws StreamException {
+ characterDataMode = lexicalHandler == null ? CharacterDataMode.SKIP : CharacterDataMode.BUFFER;
+ }
+
+ @Override
+ public void endComment() throws StreamException {
if (lexicalHandler != null) {
- char[] ch = data.toCharArray();
try {
- lexicalHandler.comment(ch, 0, ch.length);
+ lexicalHandler.comment(buffer, 0, bufferPos);
+ bufferPos = 0;
} catch (SAXException ex) {
throw new StreamException(ex);
}
}
+ characterDataMode = CharacterDataMode.PASS_THROUGH;
+ }
+
+ @Override
+ public void startProcessingInstruction(String target) throws StreamException {
+ if (accumulator == null) {
+ accumulator = new CharacterDataAccumulator();
+ }
+ piTarget = target;
+ characterDataMode = CharacterDataMode.ACCUMULATE;
}
- public void processProcessingInstruction(String target, String data) throws StreamException {
+ @Override
+ public void endProcessingInstruction() throws StreamException {
try {
- contentHandler.processingInstruction(target, data);
+ contentHandler.processingInstruction(piTarget, accumulator.toString());
+ accumulator.clear();
+ piTarget = null;
+ characterDataMode = CharacterDataMode.PASS_THROUGH;
} catch (SAXException ex) {
throw new StreamException(ex);
}
Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/sax/XmlHandlerContentHandler.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/sax/XmlHandlerContentHandler.java?rev=1732666&r1=1732665&r2=1732666&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/sax/XmlHandlerContentHandler.java (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/sax/XmlHandlerContentHandler.java Sat Feb 27 19:16:09 2016
@@ -350,7 +350,9 @@ public final class XmlHandlerContentHand
throws SAXException {
if (!inEntityReference) {
try {
- handler.processProcessingInstruction(piTarget, data);
+ handler.startProcessingInstruction(piTarget);
+ handler.processCharacterData(data, false);
+ handler.endProcessingInstruction();
} catch (StreamException ex) {
throw toSAXException(ex);
}
@@ -360,7 +362,9 @@ public final class XmlHandlerContentHand
public void comment(char[] ch, int start, int length) throws SAXException {
if (!inEntityReference) {
try {
- handler.processComment(new String(ch, start, length));
+ handler.startComment();
+ handler.processCharacterData(new String(ch, start, length), false);
+ handler.endComment();
} catch (StreamException ex) {
throw toSAXException(ex);
}
Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/SAXResultContentHandler.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/SAXResultContentHandler.java?rev=1732666&r1=1732665&r2=1732666&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/SAXResultContentHandler.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/SAXResultContentHandler.java Sat Feb 27 19:16:09 2016
@@ -36,6 +36,7 @@ public final class SAXResultContentHand
private OMContainer target;
private final CharacterDataAccumulator buffer = new CharacterDataAccumulator();
private boolean buffering;
+ private String piTarget;
public SAXResultContentHandler(OMContainer root) {
this.root = root;
@@ -121,12 +122,26 @@ public final class SAXResultContentHand
factory.createOMText(target, stopBuffering(), OMNode.CDATA_SECTION_NODE);
}
- public void processProcessingInstruction(String piTarget, String piData) {
- factory.createOMProcessingInstruction(target, piTarget, piData);
+ @Override
+ public void startProcessingInstruction(String target) throws StreamException {
+ buffering = true;
+ piTarget = target;
+ }
+
+ @Override
+ public void endProcessingInstruction() throws StreamException {
+ factory.createOMProcessingInstruction(target, piTarget, stopBuffering());
+ piTarget = null;
}
- public void processComment(String content) {
- factory.createOMComment(target, content);
+ @Override
+ public void startComment() throws StreamException {
+ buffering = true;
+ }
+
+ @Override
+ public void endComment() throws StreamException {
+ factory.createOMComment(target, stopBuffering());
}
public void processEntityReference(String name, String replacementText) {
Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandler.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandler.java?rev=1732666&r1=1732665&r2=1732666&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandler.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandler.java Sat Feb 27 19:16:09 2016
@@ -163,14 +163,26 @@ public final class BuilderHandler implem
context.processCharacterData(data, ignorable);
}
- public void processProcessingInstruction(String piTarget, String piData) throws StreamException {
+ @Override
+ public void startProcessingInstruction(String target) throws StreamException {
model.validateEventType(XMLStreamConstants.PROCESSING_INSTRUCTION);
- context.processProcessingInstruction(piTarget, piData);
+ context = context.startProcessingInstruction(target);
+ }
+
+ @Override
+ public void endProcessingInstruction() throws StreamException {
+ context = context.endProcessingInstruction();
}
- public void processComment(String content) throws StreamException {
+ @Override
+ public void startComment() throws StreamException {
model.validateEventType(XMLStreamConstants.COMMENT);
- context.processComment(content);
+ context = context.startComment();
+ }
+
+ @Override
+ public void endComment() throws StreamException {
+ context = context.endComment();
}
@Override
Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/Context.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/Context.java?rev=1732666&r1=1732665&r2=1732666&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/Context.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/Context.java Sat Feb 27 19:16:09 2016
@@ -228,24 +228,46 @@ public final class Context implements In
}
}
- public void processProcessingInstruction(String piTarget, String piData) throws StreamException {
+ public Context startProcessingInstruction(String piTarget) throws StreamException {
if (passThroughHandler != null) {
- passThroughHandler.processProcessingInstruction(piTarget, piData);
+ passThroughDepth++;
+ passThroughHandler.startProcessingInstruction(piTarget);
+ return this;
} else {
AxiomProcessingInstruction node = builderHandler.nodeFactory.createNode(AxiomProcessingInstruction.class);
node.coreSetTarget(piTarget);
- node.coreSetCharacterData(piData, AxiomSemantics.INSTANCE);
addChild(node);
+ return newContext(node);
}
}
- public void processComment(String content) throws StreamException {
+ public Context endProcessingInstruction() throws StreamException {
if (passThroughHandler != null) {
- passThroughHandler.processComment(content);
+ passThroughHandler.endProcessingInstruction();
+ return decrementPassThroughDepth();
+ } else {
+ return endContext();
+ }
+ }
+
+ public Context startComment() throws StreamException {
+ if (passThroughHandler != null) {
+ passThroughDepth++;
+ passThroughHandler.startComment();
+ return this;
} else {
AxiomComment node = builderHandler.nodeFactory.createNode(AxiomComment.class);
- node.coreSetCharacterData(content, AxiomSemantics.INSTANCE);
addChild(node);
+ return newContext(node);
+ }
+ }
+
+ public Context endComment() throws StreamException {
+ if (passThroughHandler != null) {
+ passThroughHandler.endComment();
+ return decrementPassThroughDepth();
+ } else {
+ return endContext();
}
}
Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/StAXHelper.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/StAXHelper.java?rev=1732666&r1=1732665&r2=1732666&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/StAXHelper.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/StAXHelper.java Sat Feb 27 19:16:09 2016
@@ -237,13 +237,17 @@ public class StAXHelper implements XmlRe
handler.endDocument();
break;
case XMLStreamConstants.COMMENT:
- handler.processComment(parser.getText());
+ handler.startComment();
+ handler.processCharacterData(parser.getText(), false);
+ handler.endComment();
break;
case XMLStreamConstants.DTD:
processDTD();
break;
case XMLStreamConstants.PROCESSING_INSTRUCTION:
- handler.processProcessingInstruction(parser.getPITarget(), parser.getPIData());
+ handler.startProcessingInstruction(parser.getPITarget());
+ handler.processCharacterData(parser.getPIData(), false);
+ handler.endProcessingInstruction();
break;
case XMLStreamConstants.ENTITY_REFERENCE:
handler.processEntityReference(parser.getLocalName(), parser.getText());
Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/serializer/push/stax/StAXSerializer.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/serializer/push/stax/StAXSerializer.java?rev=1732666&r1=1732665&r2=1732666&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/serializer/push/stax/StAXSerializer.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/serializer/push/stax/StAXSerializer.java Sat Feb 27 19:16:09 2016
@@ -36,6 +36,7 @@ public class StAXSerializer implements X
private DataHandlerWriter dataHandlerWriter;
private final CharacterDataAccumulator buffer = new CharacterDataAccumulator();
private boolean buffering;
+ private String piTarget;
public StAXSerializer(XMLStreamWriter writer) {
this.writer = writer;
@@ -154,17 +155,31 @@ public class StAXSerializer implements X
}
}
- public void processComment(String data) throws StreamException {
+ @Override
+ public void startComment() throws StreamException {
+ buffering = true;
+ }
+
+ @Override
+ public void endComment() throws StreamException {
try {
- writer.writeComment(data);
+ writer.writeComment(stopBuffering());
} catch (XMLStreamException ex) {
throw new StreamException(ex);
}
}
- public void processProcessingInstruction(String target, String data) throws StreamException {
+ @Override
+ public void startProcessingInstruction(String target) throws StreamException {
+ buffering = true;
+ piTarget = target;
+ }
+
+ @Override
+ public void endProcessingInstruction() throws StreamException {
try {
- writer.writeProcessingInstruction(target, data);
+ writer.writeProcessingInstruction(piTarget, stopBuffering());
+ piTarget = null;
} catch (XMLStreamException ex) {
throw new StreamException(ex);
}
Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/stream/stax/XmlHandlerStreamWriter.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/stream/stax/XmlHandlerStreamWriter.java?rev=1732666&r1=1732665&r2=1732666&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/stream/stax/XmlHandlerStreamWriter.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/stream/stax/XmlHandlerStreamWriter.java Sat Feb 27 19:16:09 2016
@@ -191,7 +191,9 @@ public class XmlHandlerStreamWriter exte
protected void doWriteComment(String data) throws XMLStreamException {
finishStartElement();
try {
- handler.processComment(data);
+ handler.startComment();
+ handler.processCharacterData(data, false);
+ handler.endComment();
} catch (StreamException ex) {
throw toXMLStreamException(ex);
}
@@ -209,7 +211,9 @@ public class XmlHandlerStreamWriter exte
protected void doWriteProcessingInstruction(String piTarget, String data) throws XMLStreamException {
finishStartElement();
try {
- handler.processProcessingInstruction(piTarget, data);
+ handler.startProcessingInstruction(piTarget);
+ handler.processCharacterData(data, false);
+ handler.endProcessingInstruction();
} catch (StreamException ex) {
throw toXMLStreamException(ex);
}