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/19 00:41:51 UTC
svn commit: r1731170 - in
/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/serializer/push/sax:
SAXHelper.java SAXSerializer.java
Author: veithen
Date: Thu Feb 18 23:41:50 2016
New Revision: 1731170
URL: http://svn.apache.org/viewvc?rev=1731170&view=rev
Log:
Merge SAXHelper back into SAXSerializer; it is only used there.
Removed:
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/serializer/push/sax/SAXHelper.java
Modified:
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/serializer/push/sax/SAXSerializer.java
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=1731170&r1=1731169&r2=1731170&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 Thu Feb 18 23:41:50 2016
@@ -19,6 +19,7 @@
package org.apache.axiom.om.impl.common.serializer.push.sax;
import java.io.IOException;
+import java.util.Stack;
import javax.activation.DataHandler;
@@ -31,6 +32,7 @@ import org.apache.axiom.util.namespace.S
import org.xml.sax.ContentHandler;
import org.xml.sax.SAXException;
import org.xml.sax.ext.LexicalHandler;
+import org.xml.sax.helpers.AttributesImpl;
public class SAXSerializer extends SerializerImpl {
private final ContentHandler contentHandler;
@@ -39,13 +41,25 @@ public class SAXSerializer extends Seria
private boolean startDocumentWritten;
private boolean autoStartDocument;
private int depth;
- private final SAXHelper helper = new SAXHelper();
+ private Stack<String> elementNameStack = new Stack<String>();
+ private String elementURI;
+ private String elementLocalName;
+ private String elementQName;
+ private final AttributesImpl attributes = new AttributesImpl();
public SAXSerializer(ContentHandler contentHandler, LexicalHandler lexicalHandler) {
this.contentHandler = contentHandler;
this.lexicalHandler = lexicalHandler;
}
+ private static String getQName(String prefix, String localName) {
+ if (prefix.length() == 0) {
+ return localName;
+ } else {
+ return prefix + ":" + localName;
+ }
+ }
+
protected boolean isAssociated(String prefix, String namespace) throws StreamException {
return nsContext.getNamespaceURI(prefix).equals(namespace);
}
@@ -81,7 +95,9 @@ public class SAXSerializer extends Seria
writeStartDocument();
autoStartDocument = true;
}
- helper.beginStartElement(prefix, namespaceURI, localName);
+ elementURI = namespaceURI;
+ elementLocalName = localName;
+ elementQName = getQName(prefix, localName);
nsContext.startScope();
depth++;
}
@@ -97,12 +113,19 @@ public class SAXSerializer extends Seria
}
public void processAttribute(String namespaceURI, String localName, String prefix, String value, String type, boolean specified) throws StreamException {
- helper.addAttribute(prefix, namespaceURI, localName, type, value);
+ attributes.addAttribute(namespaceURI, localName, getQName(prefix, localName), type, value);
}
public void attributesCompleted() throws StreamException {
try {
- helper.finishStartElement(contentHandler);
+ contentHandler.startElement(elementURI, elementLocalName, elementQName, attributes);
+ elementNameStack.push(elementURI);
+ elementNameStack.push(elementLocalName);
+ elementNameStack.push(elementQName);
+ elementURI = null;
+ elementLocalName = null;
+ elementQName = null;
+ attributes.clear();
} catch (SAXException ex) {
throw new StreamException(ex);
}
@@ -110,7 +133,14 @@ public class SAXSerializer extends Seria
public void endElement() throws StreamException {
try {
- helper.writeEndElement(contentHandler, nsContext);
+ String elementQName = elementNameStack.pop();
+ String elementLocalName = elementNameStack.pop();
+ String elementURI = elementNameStack.pop();
+ contentHandler.endElement(elementURI, elementLocalName, elementQName);
+ for (int i=nsContext.getBindingsCount()-1; i>=nsContext.getFirstBindingInCurrentScope(); i--) {
+ contentHandler.endPrefixMapping(nsContext.getPrefix(i));
+ }
+ nsContext.endScope();
if (--depth == 0 && autoStartDocument) {
contentHandler.endDocument();
}