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;