blob: 8ed11236b9880b87e6175930577050f8b8479735 [file] [log] [blame]
/*
* Copyright 2004,2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.axiom.om;
import org.apache.axiom.om.impl.builder.StAXOMBuilder;
import org.custommonkey.xmlunit.Diff;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
import javax.xml.namespace.QName;
import javax.xml.parsers.ParserConfigurationException;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.Iterator;
public class AttrNsTest extends AbstractOMSerializationTest {
private String attrNamespaceTestXML = "<?xml version='1.0' encoding='UTF-8'?>\n" +
"<foo xmlns:e=\"http://opensource.lk\">" +
" <bar1 b:attr=\"test attr value1\" xmlns:b=\"http://opensource.lk/ns1\">test1</bar1>" +
" <bar2 b:attr=\"test attr value2\" xmlns:b=\"http://opensource.lk/ns1\">test2</bar2>" +
"</foo>";
public void testAttributeNamespaces() throws Exception {
ignoreXMLDeclaration = true;
ignoreDocument = true;
Document document1 = newDocument(attrNamespaceTestXML);
String serializedOM = getSerializedOM(attrNamespaceTestXML);
Document document2 = newDocument(serializedOM);
Diff diff = compareXML(document1, document2);
assertXMLEqual(diff, true);
}
/**
* Test method to test the XML namespace
*
* @throws Exception
*/
public void testAttr() throws Exception {
String xml = "<wsp:Policy xml:base=\"uri:thisBase\" " +
"xmlns:wsp=\"http://schemas.xmlsoap.org/ws/2004/09/policy\">" +
"</wsp: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().getNamespaceURI());
}
/**
* 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().getNamespaceURI());
}
public void testAttributesWithProgrammaticalCreation() {
try {
String expectedXML = "<AttributeTester xmlns=\"\" xmlns:myAttr2NS=\"http://test-attributes-2.org\" " +
"xmlns:myAttr1NS=\"http://test-attributes-1.org\" myAttr2NS:attrNumber=\"2\" myAttr1NS:attrNumber=\"1\" />";
OMFactory omFactory = OMAbstractFactory.getOMFactory();
OMNamespace attrNS1 = omFactory.createOMNamespace("http://test-attributes-1.org", "myAttr1NS");
OMNamespace attrNS2 = omFactory.createOMNamespace("http://test-attributes-2.org", "myAttr2NS");
OMElement omElement = omFactory.createOMElement("AttributeTester", null);
omElement.addAttribute(omFactory.createOMAttribute("attrNumber", attrNS1, "1"));
omElement.addAttribute(omFactory.createOMAttribute("attrNumber", attrNS2, "2"));
int nsCount = 0;
for (Iterator iterator = omElement.getAllDeclaredNamespaces(); iterator.hasNext();) {
iterator.next();
nsCount++;
}
assertTrue(nsCount == 2);
Document document1 = newDocument(expectedXML);
Document document2 = newDocument(omElement.toString());
Diff diff = compareXML(document1, document2);
assertXMLEqual(diff, true);
} catch (ParserConfigurationException e) {
fail(e.getMessage());
} catch (SAXException e) {
fail(e.getMessage());
} catch (IOException e) {
fail(e.getMessage());
}
}
}