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 ve...@apache.org on 2005/04/28 08:42:28 UTC

svn commit: r165108 [6/6] - in /webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance: ./ XMLConformanceTestingProject/ XMLConformanceTestingProject/bin/ XMLConformanceTestingProject/src/ XMLConformanceTestingProject/src/org/ XMLConformanceTestingProject/src/org/apache/ XMLConformanceTestingProject/src/org/apache/axis/ XMLConformanceTestingProject/src/org/apache/axis/om/ XMLConformanceTestingProject/src/org/apache/axis/om/impl/ XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/ XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/builder/ XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/exception/ XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/factory/ XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/serialize/ XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/traverse/ XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/util/ XMLConformanceTestingProject/test/ XMLConformanceTestingProject/test/junittesting/

Added: webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/factory/OMLinkedListImplFactory.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/factory/OMLinkedListImplFactory.java?rev=165108&view=auto
==============================================================================
--- webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/factory/OMLinkedListImplFactory.java (added)
+++ webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/factory/OMLinkedListImplFactory.java Wed Apr 27 23:42:26 2005
@@ -0,0 +1,327 @@
+/*
+ * 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.axis.om.impl.llom.factory;
+
+import org.apache.axis.om.OMComment;
+import org.apache.axis.om.OMConstants;
+import org.apache.axis.om.OMElement;
+import org.apache.axis.om.OMException;
+import org.apache.axis.om.OMFactory;
+import org.apache.axis.om.OMNamespace;
+import org.apache.axis.om.OMPI;
+import org.apache.axis.om.OMDTD;
+import org.apache.axis.om.OMText;
+import org.apache.axis.om.OMXMLParserWrapper;
+import org.apache.axis.om.SOAPBody;
+import org.apache.axis.om.SOAPEnvelope;
+import org.apache.axis.om.SOAPFault;
+import org.apache.axis.om.SOAPHeader;
+import org.apache.axis.om.SOAPHeaderBlock;
+import org.apache.axis.om.impl.llom.OMDocument;
+import org.apache.axis.om.impl.llom.OMCommentImpl;
+import org.apache.axis.om.impl.llom.OMElementImpl;
+import org.apache.axis.om.impl.llom.OMNamespaceImpl;
+import org.apache.axis.om.impl.llom.OMPIImpl;
+import org.apache.axis.om.impl.llom.OMDTDImpl;
+import org.apache.axis.om.impl.llom.OMTextImpl;
+import org.apache.axis.om.impl.llom.SOAPBodyImpl;
+import org.apache.axis.om.impl.llom.SOAPEnvelopeImpl;
+import org.apache.axis.om.impl.llom.SOAPFaultImpl;
+import org.apache.axis.om.impl.llom.SOAPHeaderBlockImpl;
+import org.apache.axis.om.impl.llom.SOAPHeaderImpl;
+
+import javax.xml.namespace.QName;
+
+/**
+ * Class OMLinkedListImplFactory
+ */
+public class OMLinkedListImplFactory extends OMFactory {
+    /**
+     * Field MAX_TO_POOL
+     */
+    public static final int MAX_TO_POOL = 100;
+
+    /**
+     * Method createOMElement
+     *
+     * @param localName
+     * @param ns
+     * @return
+     */
+    public OMElement createOMElement(String localName, OMNamespace ns) {
+        OMElementImpl element = new OMElementImpl(localName, ns);
+        return element;
+    }
+
+    /**
+     * Method createOMElement
+     *
+     * @param localName
+     * @param ns
+     * @param parent
+     * @param builder
+     * @return
+     */
+    public OMElement createOMElement(String localName, OMNamespace ns,
+                                     OMElement parent,
+                                     OMXMLParserWrapper builder) {
+        OMElementImpl element = new OMElementImpl(localName, ns, parent,
+                builder);
+        return element;
+    }
+
+    /**
+     * Method createOMElement
+     *
+     * @param localName
+     * @param namespaceURI
+     * @param namespacePrefix
+     * @return
+     */
+    public OMElement createOMElement(String localName, String namespaceURI,
+                                     String namespacePrefix) {
+        return this.createOMElement(localName,
+                this.createOMNamespace(namespaceURI,
+                        namespacePrefix));
+    }
+
+    /**
+     * Method createOMElement
+     *
+     * @param qname
+     * @param parent
+     * @return
+     * @throws OMException
+     */
+    public OMElement createOMElement(QName qname, OMElement parent)
+            throws OMException {
+        return new OMElementImpl(qname, parent);
+    }
+    
+    /**
+     * Method createOMDTD
+     * 
+     * @param parent
+     * @param content
+     * @return
+     */
+    /* */
+     //Actually this implementation is just a makeshift implementation of DTD.
+     //No validation checking, no processing of contents whatsoever. Just would
+     //capture all of the contents as text and wrap it as a OMDTD node.
+     public OMDTD createOMDTD(OMDocument parent, String content) {
+     	OMDTDImpl omDTD = new OMDTDImpl((OMElement)parent, content);
+     	return omDTD;
+     }
+    /**/
+
+    /**
+     * Method createOMPI
+     *
+     * @param parent
+     * @param piTarget
+     * @param piData
+     * @return
+     */
+    public OMPI createOMPI(OMElement parent, String piTarget, String piData) {
+    	OMPIImpl omPI = new OMPIImpl(parent, piTarget, piData);
+    	return omPI;
+    }
+
+    /**
+     * Method createOMNamespace
+     *
+     * @param uri
+     * @param prefix
+     * @return
+     */
+    public OMNamespace createOMNamespace(String uri, String prefix) {
+        return new OMNamespaceImpl(uri, prefix);
+    }
+
+    /**
+     * Method createText
+     *
+     * @param parent
+     * @param text
+     * @return
+     */
+    public OMText createText(OMElement parent, String text) {
+        OMTextImpl textNode = new OMTextImpl(parent, text);
+        return textNode;
+    }
+    
+    /**
+     * Method createOMComment
+     *
+     * @param parent
+     * @param content
+     * @return
+     */
+    public OMComment createOMComment(OMElement parent, String content) throws OMException{
+    	OMCommentImpl commentNode = new OMCommentImpl(parent,content);
+    	return commentNode;
+    }
+
+    /**
+     * Method createText
+     *
+     * @param s
+     * @return
+     */
+    public OMText createText(String s) {
+        OMTextImpl textNode = new OMTextImpl(s);
+    ;
+        return textNode;
+    }
+
+    /**
+     * Method createSOAPBody
+     *
+     * @param envelope
+     * @return
+     */
+    public SOAPBody createSOAPBody(SOAPEnvelope envelope) {
+        SOAPBody soapBody = new SOAPBodyImpl(envelope);
+        return soapBody;
+    }
+
+    /**
+     * Method createSOAPBody
+     *
+     * @param envelope
+     * @param builder
+     * @return
+     */
+    public SOAPBody createSOAPBody(SOAPEnvelope envelope,
+                                   OMXMLParserWrapper builder) {
+        return new SOAPBodyImpl(envelope, builder);
+    }
+
+    /**
+     * Method createSOAPEnvelope
+     *
+     * @param ns
+     * @param builder
+     * @return
+     */
+    public SOAPEnvelope createSOAPEnvelope(OMNamespace ns,
+                                           OMXMLParserWrapper builder) {
+        return new SOAPEnvelopeImpl(ns, builder);
+    }
+
+    /**
+     * Method createSOAPEnvelope
+     *
+     * @param ns
+     * @return
+     */
+    public SOAPEnvelope createSOAPEnvelope(OMNamespace ns) {
+        return new SOAPEnvelopeImpl(ns);
+    }
+
+    /**
+     * Method createSOAPHeader
+     *
+     * @param envelope
+     * @return
+     */
+    public SOAPHeader createSOAPHeader(SOAPEnvelope envelope) {
+        return new SOAPHeaderImpl(envelope);
+    }
+
+    /**
+     * Method createSOAPHeader
+     *
+     * @param envelope
+     * @param builder
+     * @return
+     */
+    public SOAPHeader createSOAPHeader(SOAPEnvelope envelope,
+                                       OMXMLParserWrapper builder) {
+        return new SOAPHeaderImpl(envelope, builder);
+    }
+
+    /**
+     * Method createSOAPHeaderBlock
+     *
+     * @param localName
+     * @param ns
+     * @return
+     */
+    public SOAPHeaderBlock createSOAPHeaderBlock(String localName,
+                                                 OMNamespace ns) {
+        return new SOAPHeaderBlockImpl(localName, ns);
+    }
+
+    /**
+     * Method createSOAPHeaderBlock
+     *
+     * @param localName
+     * @param ns
+     * @param parent
+     * @param builder
+     * @return
+     */
+    public SOAPHeaderBlock createSOAPHeaderBlock(String localName,
+                                                 OMNamespace ns, OMElement parent, OMXMLParserWrapper builder) {
+        return new SOAPHeaderBlockImpl(localName, ns, parent, builder);
+    }
+
+    /**
+     * Method createSOAPFault
+     *
+     * @param parent
+     * @param e
+     * @return
+     */
+    public SOAPFault createSOAPFault(SOAPBody parent, Exception e) {
+        return new SOAPFaultImpl(parent, e);
+    }
+
+    /**
+     * Method createSOAPFault
+     *
+     * @param ns
+     * @param parent
+     * @param builder
+     * @return
+     */
+    public SOAPFault createSOAPFault(OMNamespace ns, SOAPBody parent,
+                                     OMXMLParserWrapper builder) {
+        return new SOAPFaultImpl(ns, parent, builder);
+    }
+
+    /**
+     * Method getDefaultEnvelope
+     *
+     * @return
+     */
+    public SOAPEnvelope getDefaultEnvelope() {
+        // Create an envelope
+        OMNamespace ns =
+        new OMNamespaceImpl(OMConstants.SOAP_ENVELOPE_NAMESPACE_URI,
+                OMConstants.SOAPENVELOPE_NAMESPACE_PREFIX);
+        SOAPEnvelopeImpl env = new SOAPEnvelopeImpl(ns);
+        SOAPBodyImpl bodyImpl = new SOAPBodyImpl(env);
+        env.addChild(bodyImpl);
+
+        SOAPHeaderImpl headerImpl = new SOAPHeaderImpl(env);
+        headerImpl.setComplete(true);
+        env.addChild(headerImpl);
+        return env;
+    }
+}

Added: webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/factory/OMXMLBuilderFactory.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/factory/OMXMLBuilderFactory.java?rev=165108&view=auto
==============================================================================
--- webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/factory/OMXMLBuilderFactory.java (added)
+++ webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/factory/OMXMLBuilderFactory.java Wed Apr 27 23:42:26 2005
@@ -0,0 +1,71 @@
+/*
+ * 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.axis.om.impl.llom.factory;
+
+import org.apache.axis.om.OMFactory;
+import org.apache.axis.om.impl.llom.builder.StAXOMBuilder;
+import org.apache.axis.om.impl.llom.builder.StAXSOAPModelBuilder;
+
+import javax.xml.stream.XMLStreamReader;
+
+/**
+ * Class OMXMLBuilderFactory
+ */
+public class OMXMLBuilderFactory {
+    /**
+     * Field PARSER_XPP
+     */
+    public static final String PARSER_XPP = "XPP";
+
+    /**
+     * Field PARSER_STAX
+     */
+    public static final String PARSER_STAX = "StAX";
+
+    /**
+     * Field MODEL_SOAP_SPECIFIC
+     */
+    public static final String MODEL_SOAP_SPECIFIC = "SOAP_SPECIFIC";
+
+    /**
+     * Field MODEL_OM
+     */
+    public static final String MODEL_OM = "OM_ONLY";
+
+    /**
+     * Method createStAXSOAPModelBuilder
+     *
+     * @param ombuilderFactory
+     * @param parser
+     * @return
+     */
+    public static StAXSOAPModelBuilder createStAXSOAPModelBuilder(
+            OMFactory ombuilderFactory, XMLStreamReader parser) {
+        return new StAXSOAPModelBuilder(ombuilderFactory, parser);
+    }
+
+    /**
+     * Method createStAXOMBuilder
+     *
+     * @param ombuilderFactory
+     * @param parser
+     * @return
+     */
+    public static StAXOMBuilder createStAXOMBuilder(OMFactory ombuilderFactory,
+                                                    XMLStreamReader parser) {
+        return new StAXOMBuilder(ombuilderFactory, parser);
+    }
+}

Added: webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/serialize/StreamWriterToContentHandlerConverter.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/serialize/StreamWriterToContentHandlerConverter.java?rev=165108&view=auto
==============================================================================
--- webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/serialize/StreamWriterToContentHandlerConverter.java (added)
+++ webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/serialize/StreamWriterToContentHandlerConverter.java Wed Apr 27 23:42:26 2005
@@ -0,0 +1,229 @@
+/*
+ * 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.axis.om.impl.llom.serialize;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.xml.sax.Attributes;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+/**
+ * Class StreamWriterToContentHandlerConverter
+ */
+public class StreamWriterToContentHandlerConverter implements ContentHandler {
+    /**
+     * Field log
+     */
+    private Log log = LogFactory.getLog(getClass());
+
+    /**
+     * Field writer
+     */
+    private XMLStreamWriter writer;
+
+    /**
+     * Constructor StreamWriterToContentHandlerConverter
+     *
+     * @param writer
+     */
+    public StreamWriterToContentHandlerConverter(XMLStreamWriter writer) {
+        this.writer = writer;
+    }
+
+    /**
+     * Method endDocument
+     *
+     * @throws SAXException
+     */
+    public void endDocument() throws SAXException {
+
+        // do nothing
+    }
+
+    /**
+     * Method startDocument
+     *
+     * @throws SAXException
+     */
+    public void startDocument() throws SAXException {
+
+        // 
+    }
+
+    /**
+     * Method characters
+     *
+     * @param ch
+     * @param start
+     * @param length
+     * @throws SAXException
+     */
+    public void characters(char ch[], int start, int length)
+            throws SAXException {
+        try {
+            writer.writeCharacters(ch, start, length);
+        } catch (XMLStreamException e) {
+            throw new SAXException(e);
+        }
+    }
+
+    /**
+     * Method ignorableWhitespace
+     *
+     * @param ch
+     * @param start
+     * @param length
+     * @throws SAXException
+     */
+    public void ignorableWhitespace(char ch[], int start, int length)
+            throws SAXException {
+
+        // throw new UnsupportedOperationException();
+    }
+
+    /**
+     * Method endPrefixMapping
+     *
+     * @param prefix
+     * @throws SAXException
+     */
+    public void endPrefixMapping(String prefix) throws SAXException {
+
+        // throw new UnsupportedOperationException();
+    }
+
+    /**
+     * Method skippedEntity
+     *
+     * @param name
+     * @throws SAXException
+     */
+    public void skippedEntity(String name) throws SAXException {
+
+        // throw new UnsupportedOperationException();
+    }
+
+    /**
+     * Method setDocumentLocator
+     *
+     * @param locator
+     */
+    public void setDocumentLocator(Locator locator) {
+
+        // throw new UnsupportedOperationException();
+    }
+
+    /**
+     * Method processingInstruction
+     *
+     * @param target
+     * @param data
+     * @throws SAXException
+     */
+    public void processingInstruction(String target, String data)
+            throws SAXException {
+
+        // throw new UnsupportedOperationException();
+    }
+
+    /**
+     * Method startPrefixMapping
+     *
+     * @param prefix
+     * @param uri
+     * @throws SAXException
+     */
+    public void startPrefixMapping(String prefix, String uri)
+            throws SAXException {
+        try {
+            writer.writeNamespace(prefix, uri);
+            writer.setPrefix(prefix, uri);
+        } catch (XMLStreamException e) {
+            throw new SAXException(e);
+        }
+    }
+
+    /**
+     * Method endElement
+     *
+     * @param namespaceURI
+     * @param localName
+     * @param qName
+     * @throws SAXException
+     */
+    public void endElement(String namespaceURI, String localName, String qName)
+            throws SAXException {
+        try {
+            writer.writeEndElement();
+        } catch (XMLStreamException e) {
+            throw new SAXException(e);
+        }
+    }
+
+    /**
+     * Method getPrefix
+     *
+     * @param qName
+     * @return
+     */
+    private String getPrefix(String qName) {
+        if (qName != null) {
+            return qName.substring(0, qName.indexOf(":"));
+        }
+        return null;
+    }
+
+    /**
+     * Method startElement
+     *
+     * @param namespaceURI
+     * @param localName
+     * @param qName
+     * @param atts
+     * @throws SAXException
+     */
+    public void startElement(
+            String namespaceURI, String localName, String qName, Attributes atts)
+            throws SAXException {
+        try {
+            log.info("writing element {" + namespaceURI + '}' + localName
+                            + " directly to stream ");
+            String prefix = getPrefix(qName);
+
+            // it is only the prefix we want to learn from the QName! so we can get rid of the
+            // spliting QName
+            if (prefix == null) {
+                writer.writeStartElement(namespaceURI, localName);
+            } else {
+                writer.writeStartElement(prefix, localName, namespaceURI);
+            }
+            if (atts != null) {
+                int attCount = atts.getLength();
+                for (int i = 0; i < attCount; i++) {
+                    writer.writeAttribute(atts.getURI(i), localName,
+                            atts.getValue(i));
+                }
+            }
+        } catch (XMLStreamException e) {
+            throw new SAXException(e);
+        }
+    }
+}

Added: webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/serialize/StreamingOMSerializer.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/serialize/StreamingOMSerializer.java?rev=165108&view=auto
==============================================================================
--- webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/serialize/StreamingOMSerializer.java (added)
+++ webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/serialize/StreamingOMSerializer.java Wed Apr 27 23:42:26 2005
@@ -0,0 +1,230 @@
+/*
+ * 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.axis.om.impl.llom.serialize;
+
+import org.apache.axis.om.OMException;
+import org.apache.axis.om.OMSerializer;
+
+import javax.xml.stream.XMLStreamConstants;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLStreamWriter;
+
+/**
+ * Class StreamingOMSerializer
+ */
+public class StreamingOMSerializer implements XMLStreamConstants, OMSerializer {
+
+    /*
+     * The behavior of the serializer is such that it returns when it encounters the
+     * starting element for the second time. The depth variable tracks the depth of the
+     * serilizer and tells it when to return.
+     * Note that it is assumed that this serilization starts on an Element
+     */
+
+    /**
+     * Field depth
+     */
+    private int depth = 0;
+
+    /**
+     * Method serialize
+     *
+     * @param obj
+     * @param writer
+     * @throws XMLStreamException
+     */
+    public void serialize(Object obj, XMLStreamWriter writer)
+            throws XMLStreamException {
+        if (!(obj instanceof XMLStreamReader)) {
+            throw new UnsupportedOperationException(
+                    "Unsupported input object. Must be of the the type XMLStreamReader");
+        }
+        XMLStreamReader node = (XMLStreamReader) obj;
+        serializeNode(node, writer);
+    }
+
+    /**
+     * Method serializeNode
+     *
+     * @param reader
+     * @param writer
+     * @throws XMLStreamException
+     */
+    protected void serializeNode(XMLStreamReader reader, XMLStreamWriter writer)
+            throws XMLStreamException {
+        while (reader.hasNext()) {
+            int event = reader.next();
+            if (event == START_ELEMENT) {
+                serializeElement(reader, writer);
+                depth++;
+            } else if (event == ATTRIBUTE) {
+                serializeAttributes(reader, writer);
+            } else if (event == CHARACTERS) {
+                serializeText(reader, writer);
+            } else if (event == COMMENT) {
+                serializeComment(reader, writer);
+            } else if (event == CDATA) {
+                serializeCData(reader, writer);
+            } else if (event == END_ELEMENT) {
+                serializeEndElement(writer);
+                depth--;
+            } else if (event == END_DOCUMENT) {
+                try {
+                    serializeEndElement(writer);
+                } catch (Exception e) {
+                    //TODO: log exceptions
+                }
+            }
+            if (depth == 0) {
+                break;
+            }
+        }
+    }
+
+    /**
+     * @param reader
+     * @param writer
+     * @throws XMLStreamException
+     */
+    protected void serializeElement(
+            XMLStreamReader reader, XMLStreamWriter writer)
+            throws XMLStreamException {
+        String prefix = reader.getPrefix();
+        String nameSpaceName = reader.getNamespaceURI();
+        String writer_prefix = writer.getPrefix(nameSpaceName);
+        if (nameSpaceName != null) {
+            if (writer_prefix != null) {
+                writer.writeStartElement(nameSpaceName, reader.getLocalName());
+            } else {
+                if (prefix != null) {
+                    writer.writeStartElement(prefix, reader.getLocalName(),
+                            nameSpaceName);
+                    writer.writeNamespace(prefix, nameSpaceName);
+                    writer.setPrefix(prefix, nameSpaceName);
+                } else {
+                    writer.writeStartElement(nameSpaceName,
+                            reader.getLocalName());
+                    writer.writeDefaultNamespace(nameSpaceName);
+                    writer.setDefaultNamespace(nameSpaceName);
+                }
+            }
+        } else {
+            throw new OMException(
+                    "Non namespace qualified elements are not allowed");
+        }
+
+        // add attributes
+        serializeAttributes(reader, writer);
+
+        // add the namespaces
+        int count = reader.getNamespaceCount();
+        for (int i = 0; i < count; i++) {
+            serializeNamespace(reader.getNamespacePrefix(i),
+                    reader.getNamespaceURI(i), writer);
+        }
+    }
+
+    /**
+     * Method serializeEndElement
+     *
+     * @param writer
+     * @throws XMLStreamException
+     */
+    protected void serializeEndElement(XMLStreamWriter writer)
+            throws XMLStreamException {
+        writer.writeEndElement();
+    }
+
+    /**
+     * @param reader
+     * @param writer
+     * @throws XMLStreamException
+     */
+    protected void serializeText(XMLStreamReader reader, XMLStreamWriter writer)
+            throws XMLStreamException {
+        writer.writeCharacters(reader.getText());
+    }
+
+    /**
+     * Method serializeCData
+     *
+     * @param reader
+     * @param writer
+     * @throws XMLStreamException
+     */
+    protected void serializeCData(
+            XMLStreamReader reader, XMLStreamWriter writer)
+            throws XMLStreamException {
+        writer.writeCData(reader.getText());
+    }
+
+    /**
+     * Method serializeComment
+     *
+     * @param reader
+     * @param writer
+     * @throws XMLStreamException
+     */
+    protected void serializeComment(
+            XMLStreamReader reader, XMLStreamWriter writer)
+            throws XMLStreamException {
+        writer.writeComment(reader.getText());
+    }
+
+    /**
+     * @param reader
+     * @param writer
+     * @throws XMLStreamException
+     */
+    protected void serializeAttributes(
+            XMLStreamReader reader, XMLStreamWriter writer)
+            throws XMLStreamException {
+        int count = reader.getAttributeCount();
+        String prefix = null;
+        String namespaceName = null;
+        for (int i = 0; i < count; i++) {
+            prefix = reader.getAttributePrefix(i);
+            namespaceName = reader.getAttributeNamespace(i);
+            if ((prefix != null) && !namespaceName.equals("")) {
+                writer.writeAttribute(prefix, namespaceName,
+                        reader.getAttributeLocalName(i),
+                        reader.getAttributeValue(i));
+            } else {
+                writer.writeAttribute(reader.getAttributeLocalName(i),
+                        reader.getAttributeValue(i));
+            }
+        }
+    }
+
+    /**
+     * Method serializeNamespace
+     *
+     * @param prefix
+     * @param URI
+     * @param writer
+     * @throws XMLStreamException
+     */
+    private void serializeNamespace(
+            String prefix, String URI, XMLStreamWriter writer)
+            throws XMLStreamException {
+        String prefix1 = writer.getPrefix(URI);
+        if (prefix1 == null) {
+            writer.writeNamespace(prefix, URI);
+            writer.setPrefix(prefix, URI);
+        }
+    }
+}

Added: webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/traverse/OMChildrenIterator.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/traverse/OMChildrenIterator.java?rev=165108&view=auto
==============================================================================
--- webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/traverse/OMChildrenIterator.java (added)
+++ webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/traverse/OMChildrenIterator.java Wed Apr 27 23:42:26 2005
@@ -0,0 +1,115 @@
+/*
+ * 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.axis.om.impl.llom.traverse;
+
+import org.apache.axis.om.OMException;
+import org.apache.axis.om.OMNode;
+
+import java.util.Iterator;
+
+/**
+ * Class OMChildrenIterator
+ */
+public class OMChildrenIterator implements Iterator {
+    /**
+     * Field currentChild
+     */
+    protected OMNode currentChild;
+
+    /**
+     * Field lastChild
+     */
+    protected OMNode lastChild;
+
+    /**
+     * Field nextCalled
+     */
+    protected boolean nextCalled = false;
+
+    /**
+     * Field removeCalled
+     */
+    protected boolean removeCalled = false;
+
+    /**
+     * Constructor OMChildrenIterator
+     *
+     * @param currentChild
+     */
+    public OMChildrenIterator(OMNode currentChild) {
+        this.currentChild = currentChild;
+    }
+
+    /**
+     * Removes from the underlying collection the last element returned by the
+     * iterator (optional operation).  This method can be called only once per
+     * call to <tt>next</tt>.  The behavior of an iterator is unspecified if
+     * the underlying collection is modified while the iteration is in
+     * progress in any way other than by calling this method.
+     *
+     * @throws UnsupportedOperationException if the <tt>remove</tt>
+     *                                       operation is not supported by this Iterator.
+     * @throws IllegalStateException         if the <tt>next</tt> method has not
+     *                                       yet been called, or the <tt>remove</tt> method has already
+     *                                       been called after the last call to the <tt>next</tt>
+     *                                       method.
+     */
+    public void remove() {
+        if (!nextCalled) {
+            throw new IllegalStateException(
+                    "next method has not yet being called");
+        }
+        if (removeCalled) {
+            throw new IllegalStateException("remove has already being called");
+        }
+        removeCalled = true;
+
+        // since this acts on the last child there is no need to mess with the current child
+        if (lastChild == null) {
+            throw new OMException("cannot remove a child at this stage!");
+        }
+        lastChild.detach();
+    }
+
+    /**
+     * Returns <tt>true</tt> if the iteration has more elements. (In other
+     * words, returns <tt>true</tt> if <tt>next</tt> would return an element
+     * rather than throwing an exception.)
+     *
+     * @return <tt>true</tt> if the iterator has more elements.
+     */
+    public boolean hasNext() {
+        return (currentChild != null);
+    }
+
+    /**
+     * Returns the next element in the iteration.
+     *
+     * @return the next element in the iteration.
+     * @throws java.util.NoSuchElementException
+     *          iteration has no more elements.
+     */
+    public Object next() {
+        nextCalled = true;
+        removeCalled = false;
+        if (hasNext()) {
+            lastChild = currentChild;
+            currentChild = currentChild.getNextSibling();
+            return lastChild;
+        }
+        return null;
+    }
+}

Added: webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/traverse/OMChildrenQNameIterator.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/traverse/OMChildrenQNameIterator.java?rev=165108&view=auto
==============================================================================
--- webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/traverse/OMChildrenQNameIterator.java (added)
+++ webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/traverse/OMChildrenQNameIterator.java Wed Apr 27 23:42:26 2005
@@ -0,0 +1,135 @@
+/*
+ * 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.axis.om.impl.llom.traverse;
+
+import org.apache.axis.om.OMNode;
+import org.apache.axis.om.impl.llom.OMElementImpl;
+
+import javax.xml.namespace.QName;
+
+/**
+ * Class OMChildrenQNameIterator
+ */
+public class OMChildrenQNameIterator extends OMChildrenIterator {
+    /**
+     * Field givenQName
+     */
+    private QName givenQName;
+
+    /**
+     * Field needToMoveForward
+     */
+    private boolean needToMoveForward = true;
+
+    /**
+     * Field isMatchingNodeFound
+     */
+    private boolean isMatchingNodeFound = false;
+
+    /**
+     * Constructor OMChildrenQNameIterator
+     *
+     * @param currentChild
+     * @param givenQName
+     */
+    public OMChildrenQNameIterator(OMNode currentChild, QName givenQName) {
+        super(currentChild);
+        this.givenQName = givenQName;
+    }
+
+    /**
+     * Returns <tt>true</tt> if the iteration has more elements. (In other
+     * words, returns <tt>true</tt> if <tt>next</tt> would return an element
+     * rather than throwing an exception.)
+     *
+     * @return <tt>true</tt> if the iterator has more elements.
+     */
+    public boolean hasNext() {
+        while (needToMoveForward) {
+            if (currentChild != null) {
+
+                // check the current node for the criteria
+                if ((currentChild instanceof OMElementImpl)
+                        && (isQNamesMatch(
+                                   ((OMElementImpl) currentChild).getQName(),
+                                   this.givenQName))) {
+                    isMatchingNodeFound = true;
+                    needToMoveForward = false;
+                } else {
+
+                    // get the next named node
+                    currentChild = currentChild.getNextSibling();
+                    isMatchingNodeFound = needToMoveForward = !(currentChild
+                                                                           == null);
+                }
+            } else {
+                needToMoveForward = false;
+            }
+        }
+        return isMatchingNodeFound;
+    }
+
+    /**
+     * Returns the next element in the iteration.
+     *
+     * @return the next element in the iteration.
+     * @throws java.util.NoSuchElementException
+     *          iteration has no more elements.
+     */
+    public Object next() {
+
+        // reset the flags
+        needToMoveForward = true;
+        isMatchingNodeFound = false;
+        nextCalled = true;
+        removeCalled = false;
+        lastChild = currentChild;
+        currentChild = currentChild.getNextSibling();
+        return lastChild;
+    }
+
+    /**
+     * Here I can not use the overriden equals method of QName, as one might want to get
+     * some element just by giving the localname, even though a matching element has a namespace uri as well.
+     * This will not be supported in the equals method of the QName
+     *
+     * @param elementQName
+     * @param qNameToBeMatched
+     * @return
+     */
+    private boolean isQNamesMatch(QName elementQName, QName qNameToBeMatched) {
+
+        // if no QName was given, that means one needs all
+        if (qNameToBeMatched == null) {
+            return true;
+        }
+
+        // if the given localname is null, whatever value this.qname has, its a match
+        boolean localNameMatch =
+        (qNameToBeMatched.getLocalPart() == null)
+                || (qNameToBeMatched.getLocalPart() == "")
+                || ((elementQName != null)
+                               && elementQName.getLocalPart().equalsIgnoreCase(
+                                       qNameToBeMatched.getLocalPart()));
+        boolean namespaceURIMatch =
+        (qNameToBeMatched.getNamespaceURI() == null)
+                || (qNameToBeMatched.getNamespaceURI() == "")
+                || ((elementQName != null)
+                               && elementQName.getNamespaceURI().equalsIgnoreCase(
+                                       qNameToBeMatched.getNamespaceURI()));
+        return localNameMatch && namespaceURIMatch;
+    }
+}

Added: webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/traverse/OMChildrenWithSpecificAttributeIterator.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/traverse/OMChildrenWithSpecificAttributeIterator.java?rev=165108&view=auto
==============================================================================
--- webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/traverse/OMChildrenWithSpecificAttributeIterator.java (added)
+++ webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/traverse/OMChildrenWithSpecificAttributeIterator.java Wed Apr 27 23:42:26 2005
@@ -0,0 +1,112 @@
+/*
+ * 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.axis.om.impl.llom.traverse;
+
+import org.apache.axis.om.OMAttribute;
+import org.apache.axis.om.OMElement;
+import org.apache.axis.om.OMNode;
+
+import javax.xml.namespace.QName;
+
+/**
+ * Class OMChildrenWithSpecificAttributeIterator
+ */
+public class OMChildrenWithSpecificAttributeIterator
+        extends OMChildrenIterator {
+    /**
+     * Field attributeName
+     */
+    private QName attributeName;
+
+    /**
+     * Field attributeValue
+     */
+    private String attributeValue;
+
+    /**
+     * Field detach
+     */
+    private boolean detach;
+
+    /**
+     * Constructor OMChildrenWithSpecificAttributeIterator
+     *
+     * @param currentChild
+     * @param attributeName
+     * @param attributeValue
+     * @param detach
+     */
+    public OMChildrenWithSpecificAttributeIterator(OMNode currentChild,
+                                                   QName attributeName, String attributeValue, boolean detach) {
+        super(currentChild);
+        this.attributeName = attributeName;
+        this.attributeValue = attributeValue;
+        this.detach = detach;
+    }
+
+    /**
+     * Method hasNext
+     *
+     * @return
+     */
+    public boolean hasNext() {
+
+        // First check whether we have a child, using the super class
+        if (currentChild == null) {
+            return false;
+        }
+        boolean isMatchingNodeFound = false;
+        boolean needToMoveForward = true;
+
+        // now we have a child to check. If its an OMElement and matches the criteria, then we are done
+        while (needToMoveForward) {
+
+            // check the current node for the criteria
+            if (currentChild instanceof OMElement) {
+                OMAttribute attr =
+                        ((OMElement) currentChild).getAttributeWithQName(
+                        attributeName);
+                if ((attr != null)
+                        && attr.getValue().equalsIgnoreCase(attributeValue)) {
+                    isMatchingNodeFound = true;
+                    needToMoveForward = false;
+                } else {
+                    currentChild = currentChild.getNextSibling();
+                    needToMoveForward = !(currentChild == null);
+                }
+            } else {
+
+                // get the next named node
+                currentChild = currentChild.getNextSibling();
+                needToMoveForward = !(currentChild == null);
+            }
+        }
+        return isMatchingNodeFound;
+    }
+
+    /**
+     * Method next
+     *
+     * @return
+     */
+    public Object next() {
+        Object o = super.next();
+        if ((o != null) && detach) {
+            ((OMElement) o).detach();
+        }
+        return o;
+    }
+}

Added: webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/util/XMLComparator.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/util/XMLComparator.java?rev=165108&view=auto
==============================================================================
--- webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/util/XMLComparator.java (added)
+++ webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLConformanceTestingProject/src/org/apache/axis/om/impl/llom/util/XMLComparator.java Wed Apr 27 23:42:26 2005
@@ -0,0 +1,142 @@
+package org.apache.axis.om.impl.llom.util;
+
+import org.apache.axis.om.OMElement;
+import org.apache.axis.om.OMNamespace;
+import org.apache.axis.om.OMAttribute;
+import org.apache.axis.om.OMNode;
+import org.apache.axis.om.impl.llom.exception.XMLComparisonException;
+import org.apache.axis.om.impl.llom.exception.XMLComparisonException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.util.Iterator;
+
+/**
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * <p/>
+ * 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
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * 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.
+ * <p/>
+ */
+public class XMLComparator {
+    /**
+     * Eran Chinthaka (chinthaka@apache.org)
+     */
+    private Log log = LogFactory.getLog(getClass());
+
+
+    public boolean compare(OMElement elementOne, OMElement elementTwo) throws XMLComparisonException {
+        if(elementOne == null && elementTwo == null){
+            log.info("Both Elements are null.");
+            return true;
+        }
+        if(elementOne == null && elementTwo != null){
+            throw new XMLComparisonException("Element One is null and Element Two is not null");
+        }
+        if(elementOne != null && elementTwo == null){
+            throw new XMLComparisonException("Element Two is null and Element One is not null");
+        }
+
+        log.info("Now Checking "+ elementOne.getLocalName() + " and " + elementTwo.getLocalName() + "=============================");
+
+        log.info("Comparing Element Names .......");
+        compare("Elements names are not equal. ", elementOne.getLocalName(), elementTwo.getLocalName());
+
+        log.info("Comparing Namespaces .........");
+        compare("Element namespaces are not equal", elementOne.getNamespace(), elementTwo.getNamespace());
+
+        log.info("Comparing attributes .....");
+        compareAllAttributes(elementOne, elementTwo);
+
+        log.info("Comparing texts .....");
+        compare("Elements texts are not equal ", elementOne.getText(), elementTwo.getText());
+
+        log.info("Comparing Children ......");
+        compareAllChildren(elementOne, elementTwo);
+
+
+        return true;
+    }
+
+    private void compareAllAttributes(OMElement elementOne, OMElement elementTwo) throws XMLComparisonException {
+        compareAttibutes(elementOne, elementTwo);
+        compareAttibutes(elementTwo, elementOne);
+    }
+
+    private void compareAllChildren(OMElement elementOne, OMElement elementTwo) throws XMLComparisonException {
+        compareChildren(elementOne, elementTwo);
+        compareChildren(elementTwo, elementOne);
+    }
+
+    private void compareChildren(OMElement elementOne, OMElement elementTwo) throws XMLComparisonException {
+        Iterator elementOneChildren = elementOne.getChildren();
+        while (elementOneChildren.hasNext()) {
+            OMNode omNode = (OMNode) elementOneChildren.next();
+            if(omNode instanceof OMElement){
+                OMElement elementOneChild = (OMElement) omNode;
+                OMNode elementTwoChild = elementTwo.getChildWithName(elementOneChild.getQName());
+                if(elementTwoChild == null){
+                    throw new XMLComparisonException(" There is no " + elementOneChild.getLocalName() + " element under " + elementTwo.getLocalName());
+                }
+                compare(elementOneChild, (OMElement) elementTwoChild);
+            }
+        }
+    }
+
+
+    private void compareAttibutes(OMElement elementOne, OMElement elementTwo) throws XMLComparisonException {
+        int elementOneAtribCount = 0;
+        int elementTwoAtribCount = 0;
+        Iterator attributes = elementOne.getAttributes();
+        while (attributes.hasNext()) {
+            OMAttribute omAttribute = (OMAttribute) attributes.next();
+            OMAttribute attr = elementTwo.getAttributeWithQName(omAttribute.getQName());
+            if(attr == null){
+                throw new XMLComparisonException("Attributes are not the same in two elements. Attribute "+ omAttribute.getLocalName() + " != ");
+            }
+            elementOneAtribCount++;
+        }
+
+        Iterator elementTwoIter = elementTwo.getAttributes();
+        while (elementTwoIter.hasNext()) {
+           elementTwoIter.next();
+            elementTwoAtribCount++;
+
+        }
+
+        if(elementOneAtribCount != elementTwoAtribCount){
+             throw new XMLComparisonException("Attributes are not the same in two elements.");
+        }
+    }
+
+    private void compare(String failureNotice, String one, String two) throws XMLComparisonException {
+        if(!one.equals(two)){
+            throw new XMLComparisonException(failureNotice+ one + " != " + two);
+        }
+    }
+
+    private void compare(String failureNotice, OMNamespace one, OMNamespace two) throws XMLComparisonException {
+        if(one == null && two == null){
+            return;
+        }else if(one != null && two == null){
+            throw new XMLComparisonException("First Namespace is NOT null. But the second is null");
+        }else if(one == null && two != null){
+            throw new XMLComparisonException("First Namespace is null. But the second is NOT null");
+        }
+
+        if(!one.getName().equals(two.getName())){
+            throw new XMLComparisonException(failureNotice + one + " != " + two);
+        }
+
+        // Do we need to compare prefixes as well
+    }
+}

Added: webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLConformanceTestingProject/test/junittesting/XMLConformanceTest.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLConformanceTestingProject/test/junittesting/XMLConformanceTest.java?rev=165108&view=auto
==============================================================================
--- webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLConformanceTestingProject/test/junittesting/XMLConformanceTest.java (added)
+++ webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLConformanceTestingProject/test/junittesting/XMLConformanceTest.java Wed Apr 27 23:42:26 2005
@@ -0,0 +1,140 @@
+/*
+ * Created on Apr 8, 2005
+ *
+ * TODO To change the template for this generated file go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+package junittesting;
+
+import java.io.File;
+import org.custommonkey.xmlunit.XMLTestCase;
+import org.custommonkey.xmlunit.Diff;
+import org.apache.axis.om.OMElement;
+import org.apache.axis.om.impl.llom.factory.OMXMLBuilderFactory;
+import org.apache.axis.om.impl.llom.builder.StAXOMBuilder;
+import org.apache.axis.om.impl.llom.OMDocument;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamWriter;
+import javax.xml.stream.XMLStreamException;
+import org.apache.axis.om.OMFactory;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.FileInputStream;
+
+
+/**
+ * @author sunja07
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class XMLConformanceTest extends XMLTestCase {
+
+	private static int successCount=0;
+	private static int parsedCount=0;
+	private static int fileCount=0;
+	/**
+	 * @param name
+	 */
+	public XMLConformanceTest(String name) {
+		super(name);
+	}
+	
+	public void setUp() {		
+	}
+	
+	public void testXMLConformance() throws Exception{
+		File testSuiteDirectory = new File("C:\\Documents and Settings\\sunja07\\Desktop\\XMLConformanceWork\\XMLSuite");
+		//The following line is for checking any individual file behaviour rather than whole suite
+		//File testSuiteDirectory = new File("C:\\Documents and Settings\\sunja07\\Desktop\\XMLConformanceWork\\XMLSuite\\xmlconf\\ibm\\valid\\P10\\ibm10v05.xml");
+		ProcessDir(testSuiteDirectory);
+		System.out.println("File count is " + fileCount);
+		System.out.println("Parsed count is " + parsedCount +". This is just partial success");
+		System.out.println("Complete success count is " + successCount);
+	}
+	
+	public void ProcessDir(File dir) throws Exception
+	{
+		if (dir.isDirectory()) {
+			//System.out.println("Processing Directory: "+dir.getAbsolutePath() );
+			String[] children = dir.list();
+			for (int i=0; i<children.length; i++) {
+	           File child = (new File(dir, children[i]));	           
+	           	ProcessDir(child);
+	           }
+	    } else { //meaning you got a file
+           	//check if it's xml file
+           	String absPath = dir.getAbsolutePath();
+           	if(absPath.endsWith(".xml")) {
+           		//process it
+           		testSingleFileConformance(absPath);
+           		if((fileCount++)%100 == 0) //|| fileCount == 1000 || fileCount == 1500 || fileCount == 2000)
+    			{
+    				System.out.println("This line is just for pausing the stdout log and copying it\n");
+    			}
+    	        
+           	} else {
+           		//ignore non .xml files
+           	}
+        }		
+	}
+	
+	public void testSingleFileConformance(String absolutePath) throws Exception{
+		OMElement rootElement;
+		OMDocument document;
+		//fileCount++;
+		//get a stax om builder
+		try {
+		StAXOMBuilder staxOMBuilder = OMXMLBuilderFactory.createStAXOMBuilder(OMFactory.newInstance(), XMLInputFactory.newInstance().createXMLStreamReader(new FileInputStream(absolutePath) , "UTF-8"));
+
+		document = (OMDocument)staxOMBuilder.getDocument();
+		rootElement = staxOMBuilder.getDocumentElement();
+		} catch (Exception e) {
+			System.err.println("Exception trying to get hold of rootElement: " + e.getMessage());
+			System.err.println("in file: "+ absolutePath +"\n");
+			return;
+		}		
+
+		//we will write output into the file named TempOutputFile.txt in current directory
+		String tempFile = "TempOutputFile.txt";
+		XMLStreamWriter writer;
+		try {
+		writer = XMLOutputFactory.newInstance().
+                createXMLStreamWriter(new FileOutputStream(tempFile));		
+		document.serialize(writer, true); 
+//        rootElement.serialize(writer, true);
+		}catch(XMLStreamException e) {
+			System.err.println("Error in creating XMLStreamWriter to write parsed xml into");
+			return;
+		} catch (Exception e) {
+			System.err.println("Exception while serializing: " + e.getMessage());
+			System.err.println("in file: "+ absolutePath +"\n");
+			return;
+		}
+        writer.flush();
+        writer.close();        
+        parsedCount++;
+        //Comparing the equality of the TempOutputFile.txt and the input xml is due
+        /* */
+        Diff diff;
+        try {
+        diff = compareXML(new FileReader(absolutePath), new FileReader("TempOutputFile.txt"));
+        } catch (Exception e) {
+        	System.out.println("Error comparing original and generated files for: "+absolutePath);
+        	System.out.println("Error message is: "+e.getMessage());
+        	return;
+        }
+        try {
+        	assertXMLEqual(diff,true);
+        	successCount++;
+        } catch (Error e) {
+        	System.out.println("XMLEquality failed for file: "+absolutePath);        	
+        	return;
+        }
+        
+	}
+	public void tearDown() {		
+	}
+
+}

Added: webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLSuite.zip
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLSuite.zip?rev=165108&view=auto
==============================================================================
Binary file - no diff available.

Propchange: webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/xml_conformance/XMLSuite.zip
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream