Author: veithen
Date: Sat Mar 14 11:07:59 2009
New Revision: 753636

URL: http://svn.apache.org/viewvc?rev=753636&view=rev
Log:
* Moved NamespaceContextImpl from axiom-impl to axiom-api.
* Merged changes in r412440 (implementation of getNamespacePrefix) from 
OMStAXWrapper to DOMStAXWrapper.
* Added a unit test for getNamespacePrefix.

Added:
    
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/util/NamespaceContextImpl.java
      - copied, changed from r753622, 
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/util/NamespaceContextImpl.java
Removed:
    
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/util/NamespaceContextImpl.java
Modified:
    
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/om/impl/OMStAXWrapperTestBase.java
    
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DOMStAXWrapper.java
    
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMStAXWrapper.java

Copied: 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/util/NamespaceContextImpl.java
 (from r753622, 
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/util/NamespaceContextImpl.java)
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/util/NamespaceContextImpl.java?p2=webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/util/NamespaceContextImpl.java&p1=webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/util/NamespaceContextImpl.java&r1=753622&r2=753636&rev=753636&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/util/NamespaceContextImpl.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/util/NamespaceContextImpl.java
 Sat Mar 14 11:07:59 2009
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.axiom.om.impl.llom.util;
+package org.apache.axiom.om.impl.util;
 
 import javax.xml.XMLConstants;
 import javax.xml.namespace.NamespaceContext;

Modified: 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/om/impl/OMStAXWrapperTestBase.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/om/impl/OMStAXWrapperTestBase.java?rev=753636&r1=753635&r2=753636&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/om/impl/OMStAXWrapperTestBase.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/om/impl/OMStAXWrapperTestBase.java
 Sat Mar 14 11:07:59 2009
@@ -22,6 +22,7 @@
 import java.io.InputStream;
 import java.util.Arrays;
 
+import javax.xml.namespace.NamespaceContext;
 import javax.xml.stream.XMLInputFactory;
 import javax.xml.stream.XMLStreamReader;
 
@@ -176,4 +177,18 @@
         assertEquals(XMLStreamReader.START_ELEMENT, stream.getEventType());
         assertEquals("c", stream.getLocalName());
     }
+    
+    public void testGetNamespaceContext() throws Exception {
+        OMElement element = AXIOMUtil.stringToOM(omMetaFactory.getOMFactory(),
+                "<a xmlns='urn:ns1' xmlns:ns2='urn:ns2'><b 
xmlns:ns3='urn:ns3'/></a>");
+        XMLStreamReader stream = element.getXMLStreamReader();
+        stream.next();
+        assertEquals(XMLStreamReader.START_ELEMENT, stream.next());
+        assertEquals("b", stream.getLocalName());
+        NamespaceContext context = stream.getNamespaceContext();
+        assertEquals("urn:ns1", context.getNamespaceURI(""));
+        assertEquals("urn:ns2", context.getNamespaceURI("ns2"));
+        assertEquals("urn:ns3", context.getNamespaceURI("ns3"));
+        assertEquals("ns2", context.getPrefix("urn:ns2"));
+    }
 }

Modified: 
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DOMStAXWrapper.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DOMStAXWrapper.java?rev=753636&r1=753635&r2=753636&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DOMStAXWrapper.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DOMStAXWrapper.java
 Sat Mar 14 11:07:59 2009
@@ -23,6 +23,7 @@
 import org.apache.axiom.om.OMAttribute;
 import org.apache.axiom.om.OMComment;
 import org.apache.axiom.om.OMConstants;
+import org.apache.axiom.om.OMContainer;
 import org.apache.axiom.om.OMDocument;
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMException;
@@ -35,6 +36,7 @@
 import org.apache.axiom.om.impl.OMNavigator;
 import org.apache.axiom.om.impl.builder.StAXBuilder;
 import org.apache.axiom.om.impl.exception.OMStreamingException;
+import org.apache.axiom.om.impl.util.NamespaceContextImpl;
 import org.w3c.dom.Attr;
 
 import javax.activation.DataHandler;
@@ -44,7 +46,11 @@
 import javax.xml.stream.XMLStreamConstants;
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
+
+import java.util.HashMap;
 import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.Map;
 import java.util.Stack;
 
 /**
@@ -1022,7 +1028,7 @@
      * @return Returns NamespaceContext.
      */
     public NamespaceContext getNamespaceContext() {
-        throw new UnsupportedOperationException();
+        return new NamespaceContextImpl(getAllNamespaces(lastNode));
     }
 
     /**
@@ -1274,6 +1280,40 @@
         this.parser = parser;
     }
 
+    private Map getAllNamespaces(OMNode contextNode) {
+        if (!(contextNode instanceof OMContainer &&
+                contextNode instanceof OMElement)) {
+            return new HashMap();
+        }
+        Map nsMap = new LinkedHashMap();
+        for (OMContainer context = (OMContainer) contextNode;
+             context != null && !(context instanceof OMDocument);
+             context = ((OMElement) context).getParent()) {
+            OMElement element = (OMElement) context;
+            Iterator i = element.getAllDeclaredNamespaces();
+            while (i != null && i.hasNext()) {
+                addNamespaceToMap((OMNamespace) i.next(), nsMap);
+            }
+            if (element.getNamespace() != null) {
+                addNamespaceToMap(element.getNamespace(), nsMap);
+            }
+            for (Iterator iter = element.getAllAttributes();
+                 iter != null && iter.hasNext();) {
+                OMAttribute attr = (OMAttribute) iter.next();
+                if (attr.getNamespace() != null) {
+                    addNamespaceToMap(attr.getNamespace(), nsMap);
+                }
+            }
+        }
+        return nsMap;
+    }
+
+    private void addNamespaceToMap(OMNamespace ns, Map map) {
+        if (map.get(ns.getPrefix()) == null) {
+            map.put(ns.getPrefix(), ns.getNamespaceURI());
+        }
+    }
+
     public DataHandler getDataHandler(String blobcid) {
         DataHandler dh = null;
         if (builder != null && 

Modified: 
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMStAXWrapper.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMStAXWrapper.java?rev=753636&r1=753635&r2=753636&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMStAXWrapper.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMStAXWrapper.java
 Sat Mar 14 11:07:59 2009
@@ -50,7 +50,7 @@
 import org.apache.axiom.om.impl.OMNavigator;
 import org.apache.axiom.om.impl.builder.StAXBuilder;
 import org.apache.axiom.om.impl.exception.OMStreamingException;
-import org.apache.axiom.om.impl.llom.util.NamespaceContextImpl;
+import org.apache.axiom.om.impl.util.NamespaceContextImpl;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 


Reply via email to