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 20:21:34 UTC
svn commit: r1731722 - in
/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl:
common/serializer/push/ common/serializer/push/sax/
common/serializer/push/stax/ mixin/
Author: veithen
Date: Mon Feb 22 19:21:34 2016
New Revision: 1731722
URL: http://svn.apache.org/viewvc?rev=1731722&view=rev
Log:
Some cleanup of SerializerImpl.
Modified:
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/serializer/push/NamespaceHelper.java
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/serializer/push/SerializerImpl.java
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/serializer/push/sax/XMLReaderImpl.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/mixin/AxiomContainerSupport.aj
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomDocumentSupport.aj
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomElementSupport.aj
Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/serializer/push/NamespaceHelper.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/serializer/push/NamespaceHelper.java?rev=1731722&r1=1731721&r2=1731722&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/serializer/push/NamespaceHelper.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/serializer/push/NamespaceHelper.java Mon Feb 22 19:21:34 2016
@@ -22,10 +22,10 @@ import org.apache.axiom.core.stream.Stre
import org.apache.axiom.core.stream.XmlHandler;
import org.apache.axiom.core.stream.XmlHandlerWrapper;
-final class NamespaceHelper extends XmlHandlerWrapper {
+public final class NamespaceHelper extends XmlHandlerWrapper {
private final SerializerImpl serializer;
- NamespaceHelper(SerializerImpl serializer, XmlHandler handler) {
+ public NamespaceHelper(SerializerImpl serializer, XmlHandler handler) {
super(handler);
this.serializer = serializer;
}
Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/serializer/push/SerializerImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/serializer/push/SerializerImpl.java?rev=1731722&r1=1731721&r2=1731722&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/serializer/push/SerializerImpl.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/serializer/push/SerializerImpl.java Mon Feb 22 19:21:34 2016
@@ -18,53 +18,9 @@
*/
package org.apache.axiom.om.impl.common.serializer.push;
-import org.apache.axiom.core.CoreElement;
import org.apache.axiom.core.stream.StreamException;
import org.apache.axiom.core.stream.XmlHandler;
-import org.apache.axiom.om.OMContainer;
-import org.apache.axiom.om.OMElement;
-import org.apache.axiom.om.OMNode;
-import org.apache.axiom.om.OMSerializable;
public abstract class SerializerImpl implements XmlHandler {
- /**
- * Constructor.
- *
- * @param root
- * the root node of the object model subtree that is being serialized; this
- * information is used by the serializer in scenarios that require access to the
- * namespace context of the parent of the root node
- * @param namespaceRepairing
- * indicates if the serializer should perform namespace repairing
- * @param preserveNamespaceContext
- * indicates if the namespace context determined by the ancestors of the root node
- * should be strictly preserved in the output
- */
- public XmlHandler buildHandler(OMSerializable root, boolean namespaceRepairing, boolean preserveNamespaceContext) {
- OMElement contextElement;
- if (root instanceof OMNode) {
- OMContainer parent = ((OMNode)root).getParent();
- if (parent instanceof OMElement) {
- contextElement = (OMElement)parent;
- } else {
- contextElement = null;
- }
- } else {
- contextElement = null;
- }
- XmlHandler handler = this;
- if (contextElement != null) {
- if (preserveNamespaceContext) {
- handler = new NamespaceContextPreservationFilterHandler(handler, (CoreElement)contextElement);
- } else {
- handler = new XsiTypeFilterHandler(handler, (CoreElement)contextElement);
- }
- }
- if (namespaceRepairing) {
- handler = new NamespaceHelper(this, handler);
- }
- return handler;
- }
-
protected abstract boolean isAssociated(String prefix, String namespace) throws StreamException;
}
Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/serializer/push/sax/XMLReaderImpl.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/XMLReaderImpl.java?rev=1731722&r1=1731721&r2=1731722&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/serializer/push/sax/XMLReaderImpl.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/serializer/push/sax/XMLReaderImpl.java Mon Feb 22 19:21:34 2016
@@ -20,8 +20,11 @@ package org.apache.axiom.om.impl.common.
import java.io.IOException;
+import org.apache.axiom.core.CoreElement;
import org.apache.axiom.core.stream.StreamException;
+import org.apache.axiom.core.stream.XmlHandler;
import org.apache.axiom.om.OMOutputFormat;
+import org.apache.axiom.om.impl.common.serializer.push.NamespaceContextPreservationFilterHandler;
import org.apache.axiom.om.impl.intf.AxiomContainer;
import org.apache.axiom.util.sax.AbstractXMLReader;
import org.xml.sax.InputSource;
@@ -45,9 +48,13 @@ public class XMLReaderImpl extends Abstr
}
private void parse() throws SAXException {
+ XmlHandler handler = new SAXSerializer(contentHandler, lexicalHandler);
+ CoreElement contextElement = root.getContextElement();
+ if (contextElement != null) {
+ handler = new NamespaceContextPreservationFilterHandler(handler, contextElement);
+ }
try {
- root.internalSerialize(new SAXSerializer(contentHandler, lexicalHandler).buildHandler(root, false, true),
- new OMOutputFormat(), cache);
+ root.internalSerialize(handler, new OMOutputFormat(), cache);
} catch (StreamException ex) {
throw (SAXException)ex.getCause();
}
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=1731722&r1=1731721&r2=1731722&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 Mon Feb 22 19:21:34 2016
@@ -21,11 +21,9 @@ package org.apache.axiom.om.impl.common.
import java.io.IOException;
import org.apache.axiom.core.stream.StreamException;
-import org.apache.axiom.core.stream.XmlHandler;
import org.apache.axiom.ext.stax.datahandler.DataHandlerProvider;
import org.apache.axiom.ext.stax.datahandler.DataHandlerWriter;
import org.apache.axiom.om.OMException;
-import org.apache.axiom.om.OMSerializable;
import org.apache.axiom.om.impl.common.serializer.push.SerializerImpl;
import org.apache.axiom.om.impl.intf.TextContent;
import org.apache.axiom.util.stax.XMLStreamWriterUtils;
@@ -46,10 +44,6 @@ public class StAXSerializer extends Seri
this.writer = writer;
}
- public XmlHandler buildHandler(OMSerializable root) {
- return buildHandler(root, true, false);
- }
-
public XMLStreamWriter getWriter() {
return writer;
}
Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomContainerSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomContainerSupport.aj?rev=1731722&r1=1731721&r2=1731722&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomContainerSupport.aj (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomContainerSupport.aj Mon Feb 22 19:21:34 2016
@@ -31,6 +31,7 @@ import javax.xml.transform.sax.SAXSource
import org.apache.axiom.core.Axis;
import org.apache.axiom.core.Builder;
+import org.apache.axiom.core.CoreElement;
import org.apache.axiom.core.CoreModelException;
import org.apache.axiom.core.CoreNSAwareElement;
import org.apache.axiom.core.CoreNode;
@@ -58,6 +59,8 @@ import org.apache.axiom.om.impl.common.S
import org.apache.axiom.om.impl.common.builder.StAXHelper;
import org.apache.axiom.om.impl.common.serializer.pull.OMXMLStreamReaderExAdapter;
import org.apache.axiom.om.impl.common.serializer.pull.PullSerializer;
+import org.apache.axiom.om.impl.common.serializer.push.NamespaceHelper;
+import org.apache.axiom.om.impl.common.serializer.push.XsiTypeFilterHandler;
import org.apache.axiom.om.impl.common.serializer.push.sax.XMLReaderImpl;
import org.apache.axiom.om.impl.common.serializer.push.stax.StAXSerializer;
import org.apache.axiom.om.impl.intf.AxiomChildNode;
@@ -263,13 +266,25 @@ public aspect AxiomContainerSupport {
return result;
}
+ private XmlHandler AxiomContainer.createSerializer(XMLStreamWriter writer) {
+ StAXSerializer serializer = new StAXSerializer(writer);
+ XmlHandler handler = serializer;
+ CoreElement contextElement = getContextElement();
+ if (contextElement != null) {
+ handler = new XsiTypeFilterHandler(handler, contextElement);
+ }
+ return new NamespaceHelper(serializer, handler);
+ }
+
+ public abstract CoreElement AxiomContainer.getContextElement();
+
public final void AxiomContainer.serialize(XMLStreamWriter xmlWriter, boolean cache) throws XMLStreamException {
// If the input xmlWriter is not an MTOMXMLStreamWriter, then wrapper it
MTOMXMLStreamWriter writer = xmlWriter instanceof MTOMXMLStreamWriter ?
(MTOMXMLStreamWriter) xmlWriter :
new MTOMXMLStreamWriter(xmlWriter);
try {
- internalSerialize(new StAXSerializer(writer).buildHandler(this), writer.getOutputFormat(), cache);
+ internalSerialize(createSerializer(writer), writer.getOutputFormat(), cache);
} catch (StreamException ex) {
throw AxiomExceptionTranslator.toXMLStreamException(ex);
}
@@ -306,7 +321,7 @@ public aspect AxiomContainerSupport {
MTOMXMLStreamWriter writer = new MTOMXMLStreamWriter(output, format, true);
try {
try {
- internalSerialize(new StAXSerializer(writer).buildHandler(this), format, true);
+ internalSerialize(createSerializer(writer), format, true);
} catch (StreamException ex) {
throw AxiomExceptionTranslator.toXMLStreamException(ex);
}
@@ -321,7 +336,7 @@ public aspect AxiomContainerSupport {
writer.setOutputFormat(format);
try {
try {
- internalSerialize(new StAXSerializer(writer).buildHandler(this), format, true);
+ internalSerialize(createSerializer(writer), format, true);
} catch (StreamException ex) {
throw AxiomExceptionTranslator.toXMLStreamException(ex);
}
@@ -335,7 +350,7 @@ public aspect AxiomContainerSupport {
MTOMXMLStreamWriter writer = new MTOMXMLStreamWriter(output, format, false);
try {
try {
- internalSerialize(new StAXSerializer(writer).buildHandler(this), format, false);
+ internalSerialize(createSerializer(writer), format, false);
} catch (StreamException ex) {
throw AxiomExceptionTranslator.toXMLStreamException(ex);
}
@@ -351,7 +366,7 @@ public aspect AxiomContainerSupport {
writer.setOutputFormat(format);
try {
try {
- internalSerialize(new StAXSerializer(writer).buildHandler(this), format, false);
+ internalSerialize(createSerializer(writer), format, false);
} catch (StreamException ex) {
throw AxiomExceptionTranslator.toXMLStreamException(ex);
}
Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomDocumentSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomDocumentSupport.aj?rev=1731722&r1=1731721&r2=1731722&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomDocumentSupport.aj (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomDocumentSupport.aj Mon Feb 22 19:21:34 2016
@@ -18,6 +18,7 @@
*/
package org.apache.axiom.om.impl.mixin;
+import org.apache.axiom.core.CoreElement;
import org.apache.axiom.core.CoreModelException;
import org.apache.axiom.core.stream.StreamException;
import org.apache.axiom.core.stream.XmlHandler;
@@ -128,4 +129,8 @@ public aspect AxiomDocumentSupport {
public void AxiomDocument.checkDocumentElement(OMElement element) {
}
+
+ public final CoreElement AxiomDocument.getContextElement() {
+ return null;
+ }
}
Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomElementSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomElementSupport.aj?rev=1731722&r1=1731721&r2=1731722&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomElementSupport.aj (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomElementSupport.aj Mon Feb 22 19:21:34 2016
@@ -618,4 +618,9 @@ public aspect AxiomElementSupport {
public final int AxiomElement.getLineNumber() {
return 0;
}
+
+ public final CoreElement AxiomElement.getContextElement() {
+ CoreParentNode parent = coreGetParent();
+ return parent instanceof CoreElement ? (CoreElement)parent : null;
+ }
}