blob: 14dfd76ce3620447c04795d60cbe646ab555f5aa [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 junit.framework.TestCase;
import org.apache.axiom.om.impl.OMNodeEx;
import org.apache.axiom.om.impl.builder.StAXOMBuilder;
import javax.xml.stream.XMLStreamException;
import java.io.ByteArrayInputStream;
/**
* Each of the following tests have a parent "person" and children "name", "age", "weight".
* The parent is defined as either:
* a) a qualified name (QParent)
* b) an unqualified name (UParent)
* c) a qualified name using the default namespace (DParent)
*
* Likewise the children are defined as either:
* a) qualified names (QChildren)
* b) unqualified children (UChildren)
* c) qualified using the default namespace (DChildren)
*
*
*/
public class SerializationTest extends TestCase {
private static final String NS = "http://ws.apache.org/axis2/apacheconasia/06";
private static final String PREFIX = "prefix";
public void testDParentDChildren() {
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace nsParent = fac.createOMNamespace(NS, "");
OMNamespace nsChildren = fac.createOMNamespace(NS, "");
OMElement personElem = fac.createOMElement("person", nsParent);
OMElement nameElem = fac.createOMElement("name", nsChildren);
nameElem.setText("John");
OMElement ageElem = fac.createOMElement("age", nsChildren);
ageElem.setText("34");
OMElement weightElem = fac.createOMElement("weight", nsChildren);
weightElem.setText("50");
//Add children to the person element
personElem.addChild(nameElem);
personElem.addChild(ageElem);
personElem.addChild(weightElem);
String xml = personElem.toString();
assertEquals("Incorrect namespace serialization",2, xml.split("http://ws.apache.org/axis2/apacheconasia/06").length);
}
public void testDParentUChildren() {
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace nsParent = fac.createOMNamespace(NS, "");
OMNamespace nsChildren = fac.createOMNamespace("", "");
OMElement personElem = fac.createOMElement("person", nsParent);
OMElement nameElem = fac.createOMElement("name", nsChildren);
nameElem.setText("John");
OMElement ageElem = fac.createOMElement("age", nsChildren);
ageElem.setText("34");
OMElement weightElem = fac.createOMElement("weight", nsChildren);
weightElem.setText("50");
//Add children to the person element
personElem.addChild(nameElem);
personElem.addChild(ageElem);
personElem.addChild(weightElem);
String xml = personElem.toString();
assertEquals("Incorrect namespace serialization",2, xml.split("http://ws.apache.org/axis2/apacheconasia/06").length);
assertEquals("Incorrect namespace serialization",4, xml.split("\"\"").length);
}
public void testDParentQChildren() {
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace nsParent = fac.createOMNamespace(NS, "");
OMNamespace nsChildren = fac.createOMNamespace(NS, PREFIX);
OMElement personElem = fac.createOMElement("person", nsParent);
OMElement nameElem = fac.createOMElement("name", nsChildren);
nameElem.setText("John");
OMElement ageElem = fac.createOMElement("age", nsChildren);
ageElem.setText("34");
OMElement weightElem = fac.createOMElement("weight", nsChildren);
weightElem.setText("50");
//Add children to the person element
personElem.addChild(nameElem);
personElem.addChild(ageElem);
personElem.addChild(weightElem);
String xml = personElem.toString();
assertEquals("Incorrect namespace serialization",5, xml.split("http://ws.apache.org/axis2/apacheconasia/06").length);
}
public void testQParentQChildren() {
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace nsParent = fac.createOMNamespace(NS, PREFIX);
OMNamespace nsChildren = fac.createOMNamespace(NS, PREFIX);
OMElement personElem = fac.createOMElement("person", nsParent);
OMElement nameElem = fac.createOMElement("name", nsChildren);
nameElem.setText("John");
OMElement ageElem = fac.createOMElement("age", nsChildren);
ageElem.setText("34");
OMElement weightElem = fac.createOMElement("weight", nsChildren);
weightElem.setText("50");
//Add children to the person element
personElem.addChild(nameElem);
personElem.addChild(ageElem);
personElem.addChild(weightElem);
String xml = personElem.toString();
assertEquals("Incorrect namespace serialization",2, xml.split("http://ws.apache.org/axis2/apacheconasia/06").length);
}
public void testQParentUChildren() {
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace nsParent = fac.createOMNamespace(NS, PREFIX);
OMNamespace nsChildren = fac.createOMNamespace("", "");
OMElement personElem = fac.createOMElement("person", nsParent);
OMElement nameElem = fac.createOMElement("name", nsChildren);
nameElem.setText("John");
OMElement ageElem = fac.createOMElement("age", nsChildren);
ageElem.setText("34");
OMElement weightElem = fac.createOMElement("weight", nsChildren);
weightElem.setText("50");
//Add children to the person element
personElem.addChild(nameElem);
personElem.addChild(ageElem);
personElem.addChild(weightElem);
String xml = personElem.toString();
assertEquals("Incorrect default namespace serialization",2, xml.split("http://ws.apache.org/axis2/apacheconasia/06").length);
assertEquals("Incorrect namespace serialization",1, xml.split("\"\"").length);
}
public void testQParentDChildren() {
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace nsParent = fac.createOMNamespace(NS, PREFIX);
OMNamespace nsChildren = fac.createOMNamespace(NS, "");
OMElement personElem = fac.createOMElement("person", nsParent);
OMElement nameElem = fac.createOMElement("name", nsChildren);
nameElem.setText("John");
OMElement ageElem = fac.createOMElement("age", nsChildren);
ageElem.setText("34");
OMElement weightElem = fac.createOMElement("weight", nsChildren);
weightElem.setText("50");
//Add children to the person element
personElem.addChild(nameElem);
personElem.addChild(ageElem);
personElem.addChild(weightElem);
String xml = personElem.toString();
assertEquals("Incorrect default namespace serialization",5, xml.split("http://ws.apache.org/axis2/apacheconasia/06").length);
}
public void testUParentUChildren() {
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace nsParent = fac.createOMNamespace("", "");
OMNamespace nsChildren = fac.createOMNamespace("", "");
OMElement personElem = fac.createOMElement("person", nsParent);
OMElement nameElem = fac.createOMElement("name", nsChildren);
nameElem.setText("John");
OMElement ageElem = fac.createOMElement("age", nsChildren);
ageElem.setText("34");
OMElement weightElem = fac.createOMElement("weight", nsChildren);
weightElem.setText("50");
//Add children to the person element
personElem.addChild(nameElem);
personElem.addChild(ageElem);
personElem.addChild(weightElem);
String xml = personElem.toString();
assertEquals("Incorrect default namespace serialization",1, xml.split("http://ws.apache.org/axis2/apacheconasia/06").length);
assertEquals("Incorrect namespace serialization",1, xml.split("\"\"").length);
}
public void testUParentQChildren() {
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace nsParent = fac.createOMNamespace("", "");
OMNamespace nsChildren = fac.createOMNamespace(NS, PREFIX);
OMElement personElem = fac.createOMElement("person", nsParent);
OMElement nameElem = fac.createOMElement("name", nsChildren);
nameElem.setText("John");
OMElement ageElem = fac.createOMElement("age", nsChildren);
ageElem.setText("34");
OMElement weightElem = fac.createOMElement("weight", nsChildren);
weightElem.setText("50");
//Add children to the person element
personElem.addChild(nameElem);
personElem.addChild(ageElem);
personElem.addChild(weightElem);
String xml = personElem.toString();
assertEquals("Incorrect default namespace serialization",4, xml.split("http://ws.apache.org/axis2/apacheconasia/06").length);
assertEquals("Incorrect namespace serialization",1, xml.split("\"\"").length);
}
public void testUParentDChildren() {
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace nsParent = fac.createOMNamespace("", "");
OMNamespace nsChildren = fac.createOMNamespace(NS, PREFIX);
OMElement personElem = fac.createOMElement("person", nsParent);
OMElement nameElem = fac.createOMElement("name", nsChildren);
nameElem.setText("John");
OMElement ageElem = fac.createOMElement("age", nsChildren);
ageElem.setText("34");
OMElement weightElem = fac.createOMElement("weight", nsChildren);
weightElem.setText("50");
//Add children to the person element
personElem.addChild(nameElem);
personElem.addChild(ageElem);
personElem.addChild(weightElem);
String xml = personElem.toString();
assertEquals("Incorrect namespace serialization",4, xml.split("http://ws.apache.org/axis2/apacheconasia/06").length);
assertEquals("Incorrect namespace serialization",1, xml.split("\"\"").length);
}
/**
* Special case when OMElement is created with a null OMNamespace.
* In this case, that element must always belongs to the default, default namespace
*/
public void testNullOMNamespace() {
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace ns = fac.createOMNamespace("http://ws.apache.org/axis2/apacheconasia/06", "");
OMElement personElem = fac.createOMElement("person", ns);
//Create and add using null namespace...this should pick up default namespace from parent
OMElement nameElem = fac.createOMElement("name", null);
nameElem.setText("John");
personElem.addChild(nameElem);
String xml = personElem.toString();
assertEquals("Incorrect namespace serialization",2, xml.split("http://ws.apache.org/axis2/apacheconasia/06").length);
assertEquals("Incorrect serialization", 2, xml.split("xmlns=\"\"").length);
}
public void testOMSerializationWithTwoNonBuiltOMElements(){
try {
String sampleXMLOne = "<ChildOne><Name>ChildName</Name></ChildOne>";
String sampleXMLTwo = "<ChildTwo><Name>ChildName</Name></ChildTwo>";
String expectedXML = "<Root><ChildOne><Name>ChildName</Name></ChildOne><ChildTwo><Name>ChildName</Name></ChildTwo></Root>";
OMFactory omFactory = OMAbstractFactory.getOMFactory();
OMElement rootElement = omFactory.createOMElement("Root", null);
OMElement childOne = new StAXOMBuilder(new ByteArrayInputStream(sampleXMLOne.getBytes())).getDocumentElement();
((OMNodeEx) childOne).setParent(null);
rootElement.addChild(childOne);
OMElement childTwo = new StAXOMBuilder(new ByteArrayInputStream(sampleXMLTwo.getBytes())).getDocumentElement();
((OMNodeEx) childTwo).setParent(null);
rootElement.addChild(childTwo);
assertTrue(expectedXML.equals(rootElement.toString()));
} catch (XMLStreamException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
}
}