package au.edu.swin.ict.road.tester;

import javax.xml.stream.FactoryConfigurationError;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;

import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.neethi.Assertion;
import org.apache.neethi.AssertionBuilderFactory;
import org.apache.neethi.Policy;

public class Tester5 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		AssertionBuilderFactory factory = new AssertionBuilderFactory();

		OMFactory omFactory = OMAbstractFactory.getOMFactory();
		OMNamespace ns1 = omFactory.createOMNamespace(
				"http://www.example.org/Rule", "x");
		OMElement rootElement = omFactory.createOMElement("root", ns1);
		OMElement childElement = omFactory.createOMElement("child", ns1);
		childElement.setText("Some Text");
		rootElement.addChild(childElement);

		try {
			Assertion assertionComponent = factory.build(rootElement);
			XMLStreamWriter writer = XMLOutputFactory.newInstance()
					.createXMLStreamWriter(System.out);
			Policy p = new Policy();

			p.addAssertion(assertionComponent);
			p.setId("ID001");
			p.setName("MyPolicy");

			p = (Policy) p.normalize(true);
			if (p.isEmpty()) {
				System.out.println("The policy is empty");
			} else {
				p.serialize(writer);
				writer.flush();
			}

		} catch (XMLStreamException e) {
			e.printStackTrace();
		} catch (FactoryConfigurationError e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}