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