You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commons-dev@ws.apache.org by sc...@apache.org on 2008/03/07 14:49:10 UTC
svn commit: r634675 - in /webservices/commons/trunk/modules/axiom/modules:
axiom-api/src/main/java/org/apache/axiom/om/impl/traverse/
axiom-tests/src/test/java/org/apache/axiom/om/impl/traverse/
Author: scheu
Date: Fri Mar 7 05:49:09 2008
New Revision: 634675
URL: http://svn.apache.org/viewvc?rev=634675&view=rev
Log:
WSCOMMONS-286
Contributor: Bhashkar Maddala
Thanks Bhaskar for the unit test and fix
Added:
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/impl/traverse/OMChildrenWithQNameIteratorTest.java
Modified:
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/traverse/OMChildrenQNameIterator.java
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/traverse/OMChildrenQNameIterator.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/traverse/OMChildrenQNameIterator.java?rev=634675&r1=634674&r2=634675&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/traverse/OMChildrenQNameIterator.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/traverse/OMChildrenQNameIterator.java Fri Mar 7 05:49:09 2008
@@ -50,6 +50,7 @@
public OMChildrenQNameIterator(OMNode currentChild, QName givenQName) {
super(currentChild);
this.givenQName = givenQName;
+ findNextElementWithQName();
}
/**
@@ -72,26 +73,31 @@
*/
public boolean hasNext() {
while (needToMoveForward) {
- if (currentChild != null) {
- // check the current node for the criteria
- if (currentChild instanceof OMElement) {
- QName thisQName = ((OMElement)currentChild).getQName();
- // A null givenName is an indicator to return all elements
- if (givenQName == null || isEqual(givenQName, thisQName)) {
- isMatchingNodeFound = true;
- needToMoveForward = false;
- break;
- }
- }
+ findNextElementWithQName();
+ }
+ return isMatchingNodeFound;
+ }
- // get the next named node
- currentChild = currentChild.getNextOMSibling();
- isMatchingNodeFound = needToMoveForward = !(currentChild == null);
- } else {
- needToMoveForward = false;
+ private void findNextElementWithQName()
+ {
+ if (currentChild != null) {
+ // check the current node for the criteria
+ if (currentChild instanceof OMElement) {
+ QName thisQName = ((OMElement)currentChild).getQName();
+ // A null givenName is an indicator to return all elements
+ if (givenQName == null || isEqual(givenQName, thisQName)) {
+ isMatchingNodeFound = true;
+ needToMoveForward = false;
+ return;
+ }
}
+
+ // get the next named node
+ currentChild = currentChild.getNextOMSibling();
+ isMatchingNodeFound = needToMoveForward = !(currentChild == null);
+ } else {
+ needToMoveForward = false;
}
- return isMatchingNodeFound;
}
/**
Added: webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/impl/traverse/OMChildrenWithQNameIteratorTest.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/impl/traverse/OMChildrenWithQNameIteratorTest.java?rev=634675&view=auto
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/impl/traverse/OMChildrenWithQNameIteratorTest.java (added)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/impl/traverse/OMChildrenWithQNameIteratorTest.java Fri Mar 7 05:49:09 2008
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.impl.traverse;
+
+import junit.framework.TestCase;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMText;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+
+import javax.xml.namespace.QName;
+import java.util.Iterator;
+
+public class OMChildrenWithQNameIteratorTest extends TestCase {
+
+ public OMChildrenWithQNameIteratorTest(String testName) {
+ super(testName);
+ }
+
+ public void testChildrenRetrievalWithQName() {
+
+ OMFactory factory = OMAbstractFactory.getOMFactory();
+ OMNamespace testNamespace = factory.createOMNamespace("http://test.ws.org", "test");
+ OMElement documentElement = getSampleDocumentElement(testNamespace);
+
+ Iterator childrenIter = documentElement.getChildrenWithName(new QName("http://test.ws.org", "Employee", "test"));
+
+ int childCount = getChidrenCount(childrenIter);
+ assertEquals("Iterator must return 1 child with the given qname", childCount, 1);
+ }
+
+ public void testChildrenRetrievalWithQName_286() {
+
+ OMFactory factory = OMAbstractFactory.getOMFactory();
+ OMNamespace testNamespace = factory.createOMNamespace("http://test.ws.org", "test");
+ OMElement documentElement = getSampleDocumentElement(testNamespace);
+
+ Iterator childrenIter = documentElement.getChildrenWithName(new QName("http://test.ws.org", "Employee", "test"));
+ OMElement employee = (OMElement) childrenIter.next(); // should walk past OMText
+ assertEquals("Employee test was incorrect", employee.getText(), "Apache Developer");
+ }
+
+ private OMElement getSampleDocumentElement(OMNamespace testNamespace) {
+ OMFactory factory = OMAbstractFactory.getOMFactory();
+
+ OMElement documentElement = factory.createOMElement("Employees", testNamespace);
+ documentElement.declareNamespace(testNamespace);
+ OMText txt = factory.createOMText(documentElement, " ");
+ OMElement e = factory.createOMElement("Employee", testNamespace, documentElement);
+ e.setText("Apache Developer");
+ return documentElement;
+ }
+
+ private int getChidrenCount(Iterator childrenIter) {
+ int childCount = 0;
+ while (childrenIter.hasNext()) {
+ childrenIter.next();
+ childCount++;
+ }
+
+ return childCount;
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: commons-dev-help@ws.apache.org