You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by ru...@apache.org on 2005/12/09 11:16:27 UTC

svn commit: r355435 - in /webservices/axis2/trunk/java/modules/xml: src/org/apache/axis2/om/impl/llom/OMElementImpl.java test/org/apache/axis2/om/AttrNsTest.java

Author: ruchithf
Date: Fri Dec  9 02:16:15 2005
New Revision: 355435

URL: http://svn.apache.org/viewcvs?rev=355435&view=rev
Log:
Earlier fix to Axis2-329 didn't work with unqualified elements with qualified attrs of the xml namespace E.g. <Policy xml:base=\"uri:thisBase\"></Policy>
Fixed it and added another test method to test it


Modified:
    webservices/axis2/trunk/java/modules/xml/src/org/apache/axis2/om/impl/llom/OMElementImpl.java
    webservices/axis2/trunk/java/modules/xml/test/org/apache/axis2/om/AttrNsTest.java

Modified: webservices/axis2/trunk/java/modules/xml/src/org/apache/axis2/om/impl/llom/OMElementImpl.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/xml/src/org/apache/axis2/om/impl/llom/OMElementImpl.java?rev=355435&r1=355434&r2=355435&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/xml/src/org/apache/axis2/om/impl/llom/OMElementImpl.java (original)
+++ webservices/axis2/trunk/java/modules/xml/src/org/apache/axis2/om/impl/llom/OMElementImpl.java Fri Dec  9 02:16:15 2005
@@ -352,9 +352,21 @@
      * This can also be used to retrieve the prefix of a known namespace URI
      */
     private OMNamespace findDeclaredNamespace(String uri, String prefix) {
-        if (namespaces == null || uri == null) {
+        
+    	
+    	if(uri == null) {
+    		return null;
+    	}
+    	
+    	//If the prefix is available and uri is available and its the xml namespace
+    	if(prefix != null && prefix.equals(OMConstants.XMLNS_PREFIX) && uri.equals(OMConstants.XMLNS_URI)) {
+    		return new OMNamespaceImpl(uri, prefix);
+    	}
+    	
+    	if (namespaces == null) {
             return null;
         }
+	        
         if (prefix == null || "".equals(prefix)) {
             Iterator namespaceListIterator = namespaces.values().iterator();
             while (namespaceListIterator.hasNext()) {
@@ -371,16 +383,11 @@
             if (namespace != null && uri.equalsIgnoreCase(namespace.getName())) {
                 return namespace;
             } else {
-            	//Check whether the given prefix and uri is XML prefix and ns
-            	if(prefix.equals(OMConstants.XMLNS_PREFIX) && uri.equals(OMConstants.XMLNS_URI)) {
-            		return new OMNamespaceImpl(uri, prefix);
-            	} else {
-            		return null;
-            	}
+            	return null;
             }
-//            return (OMNamespace) namespaces.get(prefix);
         }
-    }
+	}
+    
 
     /**
      * Method getAllDeclaredNamespaces

Modified: webservices/axis2/trunk/java/modules/xml/test/org/apache/axis2/om/AttrNsTest.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/xml/test/org/apache/axis2/om/AttrNsTest.java?rev=355435&r1=355434&r2=355435&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/xml/test/org/apache/axis2/om/AttrNsTest.java (original)
+++ webservices/axis2/trunk/java/modules/xml/test/org/apache/axis2/om/AttrNsTest.java Fri Dec  9 02:16:15 2005
@@ -65,5 +65,23 @@
 		assertEquals("Attribute namespace mismatch", OMConstants.XMLNS_URI, attr.getNamespace().getName());
 	}
 
+    /**
+     * Test method to test the XML namespace of an attr without
+     * any other ns declarations in the element
+     * @throws Exception
+     */
+	public void testAttrWithoutElementNS() throws Exception{
+		String xml = "<Policy xml:base=\"uri:thisBase\"></Policy>";
+		
+		ByteArrayInputStream bais = new ByteArrayInputStream(xml.getBytes());
+		StAXOMBuilder builder = new StAXOMBuilder(bais);
+		OMElement elem = builder.getDocumentElement();
+		elem.build();
+		assertEquals("Attribute value mismatch", "uri:thisBase", elem.getAttributeValue(new QName(OMConstants.XMLNS_URI,"base")));
+		
+		OMAttribute attr = elem.getAttribute(new QName(OMConstants.XMLNS_URI,"base"));
+		
+		assertEquals("Attribute namespace mismatch", OMConstants.XMLNS_URI, attr.getNamespace().getName());
+	}
 
 }