Return-Path: Delivered-To: apmail-ws-axis-dev-archive@www.apache.org Received: (qmail 65819 invoked from network); 15 Oct 2004 18:11:15 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur-2.apache.org with SMTP; 15 Oct 2004 18:11:15 -0000 Received: (qmail 86240 invoked by uid 500); 15 Oct 2004 18:11:08 -0000 Delivered-To: apmail-ws-axis-dev-archive@ws.apache.org Received: (qmail 86179 invoked by uid 500); 15 Oct 2004 18:11:08 -0000 Mailing-List: contact axis-cvs-help@ws.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: list-post: Delivered-To: mailing list axis-cvs@ws.apache.org Received: (qmail 86165 invoked by uid 99); 15 Oct 2004 18:11:07 -0000 X-ASF-Spam-Status: No, hits=-10.0 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [209.237.227.194] (HELO minotaur.apache.org) (209.237.227.194) by apache.org (qpsmtpd/0.28) with SMTP; Fri, 15 Oct 2004 11:11:07 -0700 Received: (qmail 65743 invoked by uid 65534); 15 Oct 2004 18:11:05 -0000 Date: 15 Oct 2004 18:11:05 -0000 Message-ID: <20041015181105.65733.qmail@minotaur.apache.org> From: aslom@apache.org To: axis-cvs@ws.apache.org Subject: svn commit: rev 54859 - in webservices/axis/trunk/java/dev/scratch/chinthaka/OMAPI_with_Impl/src: java/org/apache/axis/om/impl java/org/apache/axis/om/impl/util test/org/apache/axis/om test/org/apache/axis/om/util X-Virus-Checked: Checked X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N Author: aslom Date: Fri Oct 15 11:11:04 2004 New Revision: 54859 Added: webservices/axis/trunk/java/dev/scratch/chinthaka/OMAPI_with_Impl/src/test/org/apache/axis/om/OMElementTest.java webservices/axis/trunk/java/dev/scratch/chinthaka/OMAPI_with_Impl/src/test/org/apache/axis/om/util/ webservices/axis/trunk/java/dev/scratch/chinthaka/OMAPI_with_Impl/src/test/org/apache/axis/om/util/OMNodeBuilder.java Modified: webservices/axis/trunk/java/dev/scratch/chinthaka/OMAPI_with_Impl/src/java/org/apache/axis/om/impl/OMElementImpl.java webservices/axis/trunk/java/dev/scratch/chinthaka/OMAPI_with_Impl/src/java/org/apache/axis/om/impl/OMNamedNodeImpl.java webservices/axis/trunk/java/dev/scratch/chinthaka/OMAPI_with_Impl/src/java/org/apache/axis/om/impl/OMNamespaceImpl.java webservices/axis/trunk/java/dev/scratch/chinthaka/OMAPI_with_Impl/src/java/org/apache/axis/om/impl/OMNodeImpl.java webservices/axis/trunk/java/dev/scratch/chinthaka/OMAPI_with_Impl/src/java/org/apache/axis/om/impl/OMXmlPullParserWrapper.java webservices/axis/trunk/java/dev/scratch/chinthaka/OMAPI_with_Impl/src/java/org/apache/axis/om/impl/util/OMChildrenIterator.java webservices/axis/trunk/java/dev/scratch/chinthaka/OMAPI_with_Impl/src/java/org/apache/axis/om/impl/util/OMChildrenQNameIterator.java Log: applied patch Modified: webservices/axis/trunk/java/dev/scratch/chinthaka/OMAPI_with_Impl/src/java/org/apache/axis/om/impl/OMElementImpl.java ============================================================================== --- webservices/axis/trunk/java/dev/scratch/chinthaka/OMAPI_with_Impl/src/java/org/apache/axis/om/impl/OMElementImpl.java (original) +++ webservices/axis/trunk/java/dev/scratch/chinthaka/OMAPI_with_Impl/src/java/org/apache/axis/om/impl/OMElementImpl.java Fri Oct 15 11:11:04 2004 @@ -79,6 +79,7 @@ if (firstChild != null) firstChild.setPreviousSibling(child); child.setParent(this); + child.setComplete(true); firstChild = child; } @@ -263,7 +264,7 @@ /** * This will return the literal value of the node. * OMText --> the text - * OMElement --> name of the element as a QName in String format + * OMElement --> local name of the element in String format * OMAttribute --> the value of the attribue * * @return Modified: webservices/axis/trunk/java/dev/scratch/chinthaka/OMAPI_with_Impl/src/java/org/apache/axis/om/impl/OMNamedNodeImpl.java ============================================================================== --- webservices/axis/trunk/java/dev/scratch/chinthaka/OMAPI_with_Impl/src/java/org/apache/axis/om/impl/OMNamedNodeImpl.java (original) +++ webservices/axis/trunk/java/dev/scratch/chinthaka/OMAPI_with_Impl/src/java/org/apache/axis/om/impl/OMNamedNodeImpl.java Fri Oct 15 11:11:04 2004 @@ -70,8 +70,30 @@ ps.print(localName); } - public QName getQName(){ + public QName getQName() { QName qName = new QName(ns.getValue(), ns.getPrefix(), localName); return qName; } + +// /** +// * Equals method of QName seems doesn't working the way I need in this situation. +// * So implementing my own !! +// * +// * @param qName +// * @return +// */ +// public boolean isQNameEquals(QName qName) { +// String thatLocalName = qName.getLocalName(); +// +// return ((thatLocalName == null && this.localName == null) || (thatLocalName != null && thatLocalName.equalsIgnoreCase(this.localName))) +// && ns.equals(qName.getNamespaceURI(), qName.getPrefix()); +// } +// +// private String getStringValue(String s) { +// if (s == null) { +// return "null"; +// } +// +// return s; +// } } Modified: webservices/axis/trunk/java/dev/scratch/chinthaka/OMAPI_with_Impl/src/java/org/apache/axis/om/impl/OMNamespaceImpl.java ============================================================================== --- webservices/axis/trunk/java/dev/scratch/chinthaka/OMAPI_with_Impl/src/java/org/apache/axis/om/impl/OMNamespaceImpl.java (original) +++ webservices/axis/trunk/java/dev/scratch/chinthaka/OMAPI_with_Impl/src/java/org/apache/axis/om/impl/OMNamespaceImpl.java Fri Oct 15 11:11:04 2004 @@ -28,7 +28,12 @@ public class OMNamespaceImpl extends OMNodeImpl implements OMNamespace { private String prefix; - protected OMNamespaceImpl(String uri, String prefix) { + /** + * + * @param uri + * @param prefix + */ + public OMNamespaceImpl(String uri, String prefix) { value = uri; this.prefix = prefix; } Modified: webservices/axis/trunk/java/dev/scratch/chinthaka/OMAPI_with_Impl/src/java/org/apache/axis/om/impl/OMNodeImpl.java ============================================================================== --- webservices/axis/trunk/java/dev/scratch/chinthaka/OMAPI_with_Impl/src/java/org/apache/axis/om/impl/OMNodeImpl.java (original) +++ webservices/axis/trunk/java/dev/scratch/chinthaka/OMAPI_with_Impl/src/java/org/apache/axis/om/impl/OMNodeImpl.java Fri Oct 15 11:11:04 2004 @@ -83,7 +83,7 @@ /** * This will return the literal value of the node. * OMText --> the text - * OMElement --> name of the element as a QName in String format + * OMElement --> local name of the element in String format * OMAttribute --> the value of the attribue * * @return Modified: webservices/axis/trunk/java/dev/scratch/chinthaka/OMAPI_with_Impl/src/java/org/apache/axis/om/impl/OMXmlPullParserWrapper.java ============================================================================== --- webservices/axis/trunk/java/dev/scratch/chinthaka/OMAPI_with_Impl/src/java/org/apache/axis/om/impl/OMXmlPullParserWrapper.java (original) +++ webservices/axis/trunk/java/dev/scratch/chinthaka/OMAPI_with_Impl/src/java/org/apache/axis/om/impl/OMXmlPullParserWrapper.java Fri Oct 15 11:11:04 2004 @@ -116,7 +116,7 @@ navigator.init(node); } - // TODO: + public int next() throws OMException { try { if (navigate) { Modified: webservices/axis/trunk/java/dev/scratch/chinthaka/OMAPI_with_Impl/src/java/org/apache/axis/om/impl/util/OMChildrenIterator.java ============================================================================== --- webservices/axis/trunk/java/dev/scratch/chinthaka/OMAPI_with_Impl/src/java/org/apache/axis/om/impl/util/OMChildrenIterator.java (original) +++ webservices/axis/trunk/java/dev/scratch/chinthaka/OMAPI_with_Impl/src/java/org/apache/axis/om/impl/util/OMChildrenIterator.java Fri Oct 15 11:11:04 2004 @@ -59,7 +59,7 @@ * @return true if the iterator has more elements. */ public boolean hasNext() { - return (currentChild != null && currentChild.getNextSibling() != null); + return (currentChild != null); } /** @@ -72,89 +72,9 @@ public Object next() { if (hasNext()) { + OMNode returnNode = currentChild; currentChild = currentChild.getNextSibling(); - return currentChild; - } - return null; - - } -} -package org.apache.axis.om.impl.util; - -import org.apache.axis.om.OMNode; - -import java.util.Iterator; - -/** - * Copyright 2001-2004 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. - *

- * User: Eran Chinthaka - Lanka Software Foundation - * Date: Oct 11, 2004 - * Time: 11:23:07 AM - */ -public class OMChildrenIterator implements Iterator { - - private OMNode 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 next. 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 remove - * operation is not supported by this Iterator. - * @throws IllegalStateException if the next method has not - * yet been called, or the remove method has already - * been called after the last call to the next - * method. - */ - public void remove() { - OMNode temp = currentChild.getNextSibling(); - currentChild.detach(); - currentChild = temp; - } - - /** - * Returns true if the iteration has more elements. (In other - * words, returns true if next would return an element - * rather than throwing an exception.) - * - * @return true if the iterator has more elements. - */ - public boolean hasNext() { - return (currentChild == null || currentChild.getNextSibling() == 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() { - - if (hasNext()) { - currentChild = currentChild.getNextSibling(); - return currentChild; + return returnNode; } return null; Modified: webservices/axis/trunk/java/dev/scratch/chinthaka/OMAPI_with_Impl/src/java/org/apache/axis/om/impl/util/OMChildrenQNameIterator.java ============================================================================== --- webservices/axis/trunk/java/dev/scratch/chinthaka/OMAPI_with_Impl/src/java/org/apache/axis/om/impl/util/OMChildrenQNameIterator.java (original) +++ webservices/axis/trunk/java/dev/scratch/chinthaka/OMAPI_with_Impl/src/java/org/apache/axis/om/impl/util/OMChildrenQNameIterator.java Fri Oct 15 11:11:04 2004 @@ -28,7 +28,6 @@ */ public class OMChildrenQNameIterator implements Iterator { - private OMNamedNodeImpl currentNamedNode; private OMNode omNode; private QName qName; @@ -66,36 +65,30 @@ */ public boolean hasNext() { - if (omNode != null) { + boolean needToMoveForward = true; + boolean isMatchingNodeFound = false; - if(picked){ - omNode = omNode.getNextSibling(); - picked = false; - } - - if ((omNode instanceof OMNamedNodeImpl) && ((OMNamedNodeImpl)omNode).getQName().equals(qName)) { - currentNamedNode = (OMNamedNodeImpl) omNode; - return true; - } + while (needToMoveForward) { + if (omNode != null) { - while (!(omNode.getNextSibling() instanceof OMNamedNodeImpl)) { - omNode = omNode.getNextSibling(); - if (omNode == null) { - return false; + System.out.println("Checking the current node, *" + omNode.getValue() + "*"); + // check the current node for the criteria + if ((omNode instanceof OMNamedNodeImpl) && ((OMNamedNodeImpl) omNode).getQName().equals(qName)) { + isMatchingNodeFound = true; + needToMoveForward = false; + System.out.println("One Found"); + } else { + + System.out.println("Moving to next Sibling ..."); + // get the next named node + omNode = omNode.getNextSibling(); + isMatchingNodeFound = needToMoveForward = !(omNode == null); } - } - - // now the currentNode holds an instance of an OMNamedNode - omNode = omNode.getNextSibling(); - currentNamedNode = (OMNamedNodeImpl) omNode; - if (currentNamedNode.getQName().equals(qName)) { - return true; } else { - return hasNext(); + needToMoveForward = false; } - } - return false; + return isMatchingNodeFound; } /** @@ -106,11 +99,10 @@ * iteration has no more elements. */ public Object next() { - if (hasNext()) { - picked = true; - return currentNamedNode; - } - - return null; + OMNode tempNode = omNode; + omNode = omNode.getNextSibling(); + return tempNode; } + + } Added: webservices/axis/trunk/java/dev/scratch/chinthaka/OMAPI_with_Impl/src/test/org/apache/axis/om/OMElementTest.java ============================================================================== --- (empty file) +++ webservices/axis/trunk/java/dev/scratch/chinthaka/OMAPI_with_Impl/src/test/org/apache/axis/om/OMElementTest.java Fri Oct 15 11:11:04 2004 @@ -0,0 +1,197 @@ +/** + * Copyright 2001-2004 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. + *

+ * Author: Eran Chinthaka - Lanka Software Foundation + * Date: Oct 14, 2004 + * Time: 12:42:46 PM + */ +package org.apache.axis.om; + +import junit.framework.TestCase; +import org.apache.axis.om.impl.OMXmlPullParserWrapper; +import org.apache.axis.om.util.OMNodeBuilder; +import org.apache.xml.utils.QName; +import org.xmlpull.v1.XmlPullParser; +import org.xmlpull.v1.XmlPullParserFactory; + +import java.io.FileReader; +import java.util.Iterator; + + +public class OMElementTest extends TestCase { + private static final String IN_FILE_NAME = "resources/soapmessage.xml"; + private OMElement root; + private OMXmlPullParserWrapper omXmlPullParserWrapper; + + public static void main(String[] args) { + } + + /* + * @see TestCase#setUp() + */ + protected void setUp() throws Exception { + super.setUp(); + root = getOMBuilder().getDocument().getRootElement(); + } + + private OMXmlPullParserWrapper getOMBuilder() throws Exception { + XmlPullParser parser = XmlPullParserFactory.newInstance().newPullParser(); + parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, true); + parser.setInput(new FileReader(IN_FILE_NAME)); + omXmlPullParserWrapper = new OMXmlPullParserWrapper(parser); + return omXmlPullParserWrapper; + } + + public final void testAddChild() { + + System.out.print("Testing addChild(OMNode) ....."); + + // add new child with the name TestElement + OMNamespace omNamespace = OMNodeBuilder.createOMNamespace("http://opensource.lk/chinthaka", "prefix"); + root.addChild(OMNodeBuilder.createOMElement("TestElement", omNamespace, root, omXmlPullParserWrapper)); + + // search for the child + boolean newChildFound = false; + Iterator iterator = root.getChildren(); + while (iterator.hasNext()) { + OMNode omNode = (OMNode) iterator.next(); + if (omNode.getValue().equalsIgnoreCase("TestElement")) { + newChildFound = true; + } + } + assertTrue(newChildFound); + } + + + public final void testGetChildrenWithName() { + System.out.println("Testing getChildrenWithQName(QName) ......"); + + // add new child with the name TestElement + OMNamespace omNamespace = OMNodeBuilder.createOMNamespace("http://opensource.lk/chinthaka", "prefix"); + root.addChild(OMNodeBuilder.createOMElement("TestElement", omNamespace, root, omXmlPullParserWrapper)); + + Iterator iter = root.getChildrenWithName(new QName("http://opensource.lk/chinthaka", "TestElement")); + int childrenCount = 0; + while (iter.hasNext()) { + iter.next(); + childrenCount ++; + } + + assertTrue("getChildrenWithName is not working properly", childrenCount == 1); + + } + + public final void testGetChildren() { + Iterator childrenIterator = root.getChildren(); + + while (childrenIterator.hasNext()) { + OMNode omNode = (OMNode) childrenIterator.next(); + + } + } + + public final void testCreateNamespace() { + //TODO Implement createNamespace(). + } + + public final void testResolveNamespace() { + //TODO Implement resolveNamespace(). + } + + public final void testGetAttributeWithQName() { + //TODO Implement getAttributeWithQName(). + } + + public final void testGetAttributes() { + //TODO Implement getAttributes(). + } + + public final void testInsertAttribute() { + //TODO Implement insertAttribute(). + } + + public final void testRemoveAttribute() { + //TODO Implement removeAttribute(). + } + + public final void testGetLocalName() { + //TODO Implement getLocalName(). + } + + public final void testSetLocalName() { + //TODO Implement setLocalName(). + } + + public final void testGetNamespace() { + //TODO Implement getNamespace(). + } + + public final void testSetNamespace() { + //TODO Implement setNamespace(). + } + + public final void testGetParent() { + //TODO Implement getParent(). + } + + public final void testSetParent() { + //TODO Implement setParent(). + } + + public final void testGetNextSibling() { + //TODO Implement getNextSibling(). + } + + public final void testSetNextSibling() { + //TODO Implement setNextSibling(). + } + + public final void testGetValue() { + //TODO Implement getValue(). + } + + public final void testSetValue() { + //TODO Implement setValue(). + } + + public final void testIsComplete() { + //TODO Implement isComplete(). + } + + public final void testSetComplete() { + //TODO Implement setComplete(). + } + + public final void testDetach() { + //TODO Implement detach(). + } + + public final void testInsertSiblingAfter() { + //TODO Implement insertSiblingAfter(). + } + + public final void testInsertSiblingBefore() { + //TODO Implement insertSiblingBefore(). + } + + public final void testGetType() { + //TODO Implement getType(). + } + + public final void testSetType() { + //TODO Implement setType(). + } + +} Added: webservices/axis/trunk/java/dev/scratch/chinthaka/OMAPI_with_Impl/src/test/org/apache/axis/om/util/OMNodeBuilder.java ============================================================================== --- (empty file) +++ webservices/axis/trunk/java/dev/scratch/chinthaka/OMAPI_with_Impl/src/test/org/apache/axis/om/util/OMNodeBuilder.java Fri Oct 15 11:11:04 2004 @@ -0,0 +1,72 @@ +package org.apache.axis.om.util; + +import org.apache.axis.om.OMElement; +import org.apache.axis.om.OMNamespace; +import org.apache.axis.om.impl.OMElementImpl; +import org.apache.axis.om.impl.OMXmlPullParserWrapper; +import org.apache.axis.om.impl.OMNamespaceImpl; + +/** + * Copyright 2001-2004 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. + *

+ * User: Eran Chinthaka - Lanka Software Foundation + * Date: Oct 14, 2004 + * Time: 1:19:29 PM + * + * I created this class to be dependant on the implementation, so that one has to change only this class + * to test a different implementation which implements the proposed OM API + */ +public class OMNodeBuilder { + /** + * + * @param parent + * @return + */ + public static OMElement createOMElement(OMElement parent){ + return new OMElementImpl(parent); + } + + /** + * + * @param localName + * @param namespace + * @return + */ + public static OMElement createOMElement(String localName, OMNamespace namespace){ + return new OMElementImpl(localName, namespace); + } + + /** + * + * @param localName + * @param namespace + * @param parent + * @param pullParserWrapper + * @return + */ + public static OMElement createOMElement(String localName, OMNamespace namespace, OMElement parent, OMXmlPullParserWrapper pullParserWrapper){ + return new OMElementImpl(localName, namespace, parent, pullParserWrapper); + } + + /** + * + * @param uri + * @param prefix + * @return + */ + public static OMNamespace createOMNamespace(String uri, String prefix){ + return new OMNamespaceImpl(uri, prefix); + } +}