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/14 02:27:25 UTC
svn commit: r1730285 - in
/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/serializer/push:
NamespaceContextPreservationFilterHandler.java SerializerImpl.java
Author: veithen
Date: Sun Feb 14 01:27:24 2016
New Revision: 1730285
URL: http://svn.apache.org/viewvc?rev=1730285&view=rev
Log:
Rewrite NamespaceContextPreservationFilterHandler using the core model API.
Modified:
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/serializer/push/NamespaceContextPreservationFilterHandler.java
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/serializer/push/SerializerImpl.java
Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/serializer/push/NamespaceContextPreservationFilterHandler.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/serializer/push/NamespaceContextPreservationFilterHandler.java?rev=1730285&r1=1730284&r2=1730285&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/serializer/push/NamespaceContextPreservationFilterHandler.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/serializer/push/NamespaceContextPreservationFilterHandler.java Sun Feb 14 01:27:24 2016
@@ -19,25 +19,26 @@
package org.apache.axiom.om.impl.common.serializer.push;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.Set;
-import org.apache.axiom.om.OMContainer;
-import org.apache.axiom.om.OMElement;
-import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.core.CoreAttribute;
+import org.apache.axiom.core.CoreElement;
+import org.apache.axiom.core.CoreModelException;
+import org.apache.axiom.core.CoreNamespaceDeclaration;
+import org.apache.axiom.core.CoreParentNode;
import org.apache.axiom.om.impl.stream.StreamException;
import org.apache.axiom.om.impl.stream.XmlHandler;
import org.apache.axiom.om.impl.stream.XmlHandlerWrapper;
public final class NamespaceContextPreservationFilterHandler extends XmlHandlerWrapper {
- private final OMElement contextElement;
+ private final CoreElement contextElement;
// Maintain a set of the prefixes we have already seen. This is required to take into
// account that a namespace mapping declared on an element can hide another one declared
// for the same prefix on an ancestor of the element.
private Set<String> prefixesAlreadyBound;
private boolean done = false;
- public NamespaceContextPreservationFilterHandler(XmlHandler parent, OMElement contextElement) {
+ public NamespaceContextPreservationFilterHandler(XmlHandler parent, CoreElement contextElement) {
super(parent);
this.contextElement = contextElement;
}
@@ -61,22 +62,31 @@ public final class NamespaceContextPrese
@Override
public void attributesCompleted() throws StreamException {
if (!done) {
- OMElement current = contextElement;
- while (true) {
- for (Iterator<OMNamespace> it = current.getAllDeclaredNamespaces(); it.hasNext(); ) {
- OMNamespace ns = it.next();
- if (prefixesAlreadyBound.add(ns.getPrefix())) {
- super.processNamespaceDeclaration(ns.getPrefix(), ns.getNamespaceURI());
+ try {
+ CoreElement current = contextElement;
+ while (true) {
+ CoreAttribute attr = current.coreGetFirstAttribute();
+ while (attr != null) {
+ if (attr instanceof CoreNamespaceDeclaration) {
+ CoreNamespaceDeclaration decl = (CoreNamespaceDeclaration)attr;
+ String prefix = decl.coreGetDeclaredPrefix();
+ if (prefixesAlreadyBound.add(prefix)) {
+ super.processNamespaceDeclaration(prefix, decl.coreGetCharacterData().toString());
+ }
+ }
+ attr = attr.coreGetNextAttribute();
}
+ CoreParentNode parent = current.coreGetParent();
+ if (!(parent instanceof CoreElement)) {
+ break;
+ }
+ current = (CoreElement)parent;
}
- OMContainer parent = current.getParent();
- if (!(parent instanceof OMElement)) {
- break;
- }
- current = (OMElement)parent;
+ prefixesAlreadyBound = null;
+ done = true;
+ } catch (CoreModelException ex) {
+ throw new StreamException(ex);
}
- prefixesAlreadyBound = null;
- done = true;
}
super.attributesCompleted();
}
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=1730285&r1=1730284&r2=1730285&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 Sun Feb 14 01:27:24 2016
@@ -23,6 +23,7 @@ import javax.xml.stream.XMLStreamExcepti
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.XMLStreamWriter;
+import org.apache.axiom.core.CoreElement;
import org.apache.axiom.ext.stax.datahandler.DataHandlerProvider;
import org.apache.axiom.om.DeferredParsingException;
import org.apache.axiom.om.OMContainer;
@@ -64,7 +65,7 @@ public abstract class SerializerImpl imp
}
XmlHandler handler = this;
if (preserveNamespaceContext && contextElement != null) {
- handler = new NamespaceContextPreservationFilterHandler(handler, contextElement);
+ handler = new NamespaceContextPreservationFilterHandler(handler, (CoreElement)contextElement);
}
if (namespaceRepairing) {
handler = new NamespaceHelper(this, handler, contextElement);