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 Glen Daniels <gl...@thoughtcraft.com> on 2007/10/10 21:54:47 UTC
Re: svn commit: r583588 - in
/webservices/commons/trunk/modules/axiom/modules:
axiom-api/src/main/java/org/apache/axiom/om/
axiom-api/src/main/java/org/apache/axiom/om/impl/traverse/
axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/
axiom-impl/src/main...
Hi Rich!
First off thanks for taking on this work. The only issue I have with it
is the legacy code. You've got the old matching algorithm in there
twice, once in a static method and again in the new iterator class.
Honestly, I'm not too happy about leaving it in there at all - for one
thing, it's not usable with the modern QName class (which doesn't allow
nulls), is it? If you really need the algorithm, can't you just put it
somewhere outside Axiom? I.e. you're already asking people to do new
OMChildrenLegacyQNameIterator(), which is a new class, so why not new
com.ibm.LegacyQNameIterator()? That would keep the dependency in your
code since you're the only ones who've asked for it.
Hm - actually, I just re-read the actual algorithm in said legacy code,
and now I'm convinced it should go. It can't match unqualified
elements! In other words QName("", "dog"), which is *exactly* <dog
xmlns=""/>, would match <anyNS:dog/> also, which is plain wrong. It
would be one thing if it was actually relying on null as a wildcard
value, but considering it also matches the empty namespace as if it was
null, this falls into my "evil code" realm. :) Can we please get rid of it?
--Glen
scheu@apache.org wrote:
> Author: scheu
> Date: Wed Oct 10 12:32:15 2007
> New Revision: 583588
>
> URL: http://svn.apache.org/viewvc?rev=583588&view=rev
> Log:
> WSCOMMONS-256
> Contributor:Rich Scheuerle
> Added iterators for getting child elements that match a certain local name or namespace.
> Added deprecated iterator for the old qname equality code. This is not used in Axiom, but we have some customers that had a dependency on the old algorithm.
>
> kudos to Mike and Glen
>
> Added:
> webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/traverse/OMChildrenLegacyQNameIterator.java
> webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/traverse/OMChildrenLocalNameIterator.java
> webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/traverse/OMChildrenNamespaceIterator.java
> Modified:
> webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMContainer.java
> webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMElement.java
> webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/traverse/OMChildrenQNameIterator.java
> webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ParentNode.java
> webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMDocumentImpl.java
> webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java
> webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSourcedElementImpl.java
>
> Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMContainer.java
> URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMContainer.java?rev=583588&r1=583587&r2=583588&view=diff
> ==============================================================================
> --- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMContainer.java (original)
> +++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMContainer.java Wed Oct 10 12:32:15 2007
> @@ -45,6 +45,25 @@
> * @return Returns an iterator of {@link OMElement} items that match the given QName
> */
> Iterator getChildrenWithName(QName elementQName);
> +
> + /**
> + * Returns an iterator for child nodes matching the local name.
> + * <p/>
> + *
> + * @param localName
> + * @return Returns an iterator of {@link OMElement} items that match the given localName
> + */
> + Iterator getChildrenWithLocalName(String localName);
> +
> + /**
> + * Returns an iterator for child nodes matching the namespace uri.
> + * <p/>
> + *
> + * @param uri
> + * @return Returns an iterator of {@link OMElement} items that match the given uri
> + */
> + Iterator getChildrenWithNamespaceURI(String uri);
> +
>
> /**
> * Returns the first child in document order that matches the given QName
>
> Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMElement.java
> URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMElement.java?rev=583588&r1=583587&r2=583588&view=diff
> ==============================================================================
> --- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMElement.java (original)
> +++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMElement.java Wed Oct 10 12:32:15 2007
> @@ -40,7 +40,7 @@
> * @see #getChildrenWithName(javax.xml.namespace.QName)
> */
> Iterator getChildElements();
> -
> +
> /**
> * Creates a namespace in the current element scope.
> *
>
> Added: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/traverse/OMChildrenLegacyQNameIterator.java
> URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/traverse/OMChildrenLegacyQNameIterator.java?rev=583588&view=auto
> ==============================================================================
> --- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/traverse/OMChildrenLegacyQNameIterator.java (added)
> +++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/traverse/OMChildrenLegacyQNameIterator.java Wed Oct 10 12:32:15 2007
> @@ -0,0 +1,56 @@
> +/*
> + * 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 org.apache.axiom.om.OMNode;
> +
> +import javax.xml.namespace.QName;
> +
> +/**
> + * Iterate over elements with the QName that uses the
> + * legacy algorithm. This iterator is only retained for migrating
> + * some existing customers that have a dependency on the old algorithm
> + * @deprecated
> + */
> +public class OMChildrenLegacyQNameIterator extends OMChildrenQNameIterator {
> +
> + public OMChildrenLegacyQNameIterator(OMNode currentChild, QName qName) {
> + super(currentChild, qName);
> + }
> +
> + /**
> + * This version of equals returns true if the local parts match.
> + *
> + * @param searchQName
> + * @param currentQName
> + * @return true if equals
> + */
> + public boolean isEquals(QName searchQName, QName currentQName) {
> + // if the given localname is null, whatever value this.qname has, its a match.
> + // But can one give a QName without a localName ??
> + String localPart = searchQName.getLocalPart();
> + boolean localNameMatch =(localPart == null) || (localPart.equals("")) ||
> + ((currentQName != null) && currentQName.getLocalPart().equals(localPart));
> +
> + String namespaceURI = searchQName.getNamespaceURI();
> + boolean namespaceURIMatch = (namespaceURI == null) || (namespaceURI.equals(""))||
> + ((currentQName != null) && currentQName.getNamespaceURI().equals(namespaceURI));
> + return localNameMatch && namespaceURIMatch;
> + }
> +}
>
> Added: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/traverse/OMChildrenLocalNameIterator.java
> URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/traverse/OMChildrenLocalNameIterator.java?rev=583588&view=auto
> ==============================================================================
> --- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/traverse/OMChildrenLocalNameIterator.java (added)
> +++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/traverse/OMChildrenLocalNameIterator.java Wed Oct 10 12:32:15 2007
> @@ -0,0 +1,45 @@
> +/*
> + * 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 org.apache.axiom.om.OMNode;
> +
> +import javax.xml.namespace.QName;
> +
> +/**
> + * Iterate over elements with the same LocalName
> + *
> + */
> +public class OMChildrenLocalNameIterator extends OMChildrenQNameIterator {
> +
> + public OMChildrenLocalNameIterator(OMNode currentChild, String localName) {
> + super(currentChild, new QName("", localName));
> + }
> +
> + /**
> + * This version of equals returns true if the local parts match.
> + *
> + * @param searchQName
> + * @param currentQName
> + * @return true if equals
> + */
> + public boolean isEquals(QName searchQName, QName currentQName) {
> + return searchQName.getLocalPart().equals(searchQName.getLocalPart());
> + }
> +}
>
> Added: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/traverse/OMChildrenNamespaceIterator.java
> URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/traverse/OMChildrenNamespaceIterator.java?rev=583588&view=auto
> ==============================================================================
> --- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/traverse/OMChildrenNamespaceIterator.java (added)
> +++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/traverse/OMChildrenNamespaceIterator.java Wed Oct 10 12:32:15 2007
> @@ -0,0 +1,45 @@
> +/*
> + * 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 org.apache.axiom.om.OMNode;
> +
> +import javax.xml.namespace.QName;
> +
> +/**
> + * Iterate over elements with the same namespace uri
> + *
> + */
> +public class OMChildrenNamespaceIterator extends OMChildrenQNameIterator {
> +
> + public OMChildrenNamespaceIterator(OMNode currentChild, String uri) {
> + super(currentChild, new QName(uri, "dummyName"));
> + }
> +
> + /**
> + * This version of equals returns true if the local parts match.
> + *
> + * @param searchQName
> + * @param currentQName
> + * @return true if equals
> + */
> + public boolean isEquals(QName searchQName, QName currentQName) {
> + return searchQName.getNamespaceURI().equals(searchQName.getNamespaceURI());
> + }
> +}
>
> 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=583588&r1=583587&r2=583588&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 Wed Oct 10 12:32:15 2007
> @@ -24,10 +24,16 @@
>
> import javax.xml.namespace.QName;
>
> -/** Class OMChildrenQNameIterator */
> +/**
> + * Class OMChildrenQNameIterator
> + *
> + * This iterator returns the elements that have a matching QName.
> + * This class can be extended to customize the QName equality.
> + *
> + */
> public class OMChildrenQNameIterator extends OMChildrenIterator {
> /** Field givenQName */
> - private QName givenQName;
> + private final QName givenQName;
>
> /** Field needToMoveForward */
> private boolean needToMoveForward = true;
> @@ -45,6 +51,18 @@
> super(currentChild);
> this.givenQName = givenQName;
> }
> +
> + /**
> + * Returns true if the qnames are equal.
> + * The default algorithm is to use the QName equality (which examines the namespace and localPart).
> + * You can extend this class to provide your own equality algorithm.
> + * @param searchQName
> + * @param currentQName
> + * @return true if qnames are equal.
> + */
> + public boolean isEqual(QName searchQName, QName currentQName) {
> + return searchQName.equals(currentQName);
> + }
>
> /**
> * Returns <tt>true</tt> if the iteration has more elements. (In other words, returns
> @@ -58,7 +76,8 @@
> // check the current node for the criteria
> if (currentChild instanceof OMElement) {
> QName thisQName = ((OMElement)currentChild).getQName();
> - if (givenQName == null || thisQName.equals(givenQName)) {
> + // A null givenName is an indicator to return all elements
> + if (givenQName == null || isEqual(givenQName, thisQName)) {
> isMatchingNodeFound = true;
> needToMoveForward = false;
> break;
> @@ -93,4 +112,29 @@
> currentChild = currentChild.getNextOMSibling();
> return lastChild;
> }
> +
> + /**
> + * Prior versions of the OMChildrenQNameIterator used the following
> + * logic to check equality. This algorithm is incorrect; however some customers
> + * have dependency on this behavior. This method is retained (but deprecated) to allow
> + * them an opportunity to use the old algorithm.
> + *
> + * @param searchQName
> + * @param currentQName
> + * @return true using legacy equality match
> + * @deprecated
> + */
> + public static boolean isEquals_Legacy(QName searchQName, QName currentQName) {
> +
> + // if the given localname is null, whatever value this.qname has, its a match. But can one give a QName without a localName ??
> + String localPart = searchQName.getLocalPart();
> + boolean localNameMatch =(localPart == null) || (localPart.equals("")) ||
> + ((currentQName != null) && currentQName.getLocalPart().equals(localPart));
> + String namespaceURI = searchQName.getNamespaceURI();
> + boolean namespaceURIMatch = (namespaceURI == null) || (namespaceURI.equals(""))||
> + ((currentQName != null) && currentQName.getNamespaceURI().equals(namespaceURI));
> + return localNameMatch && namespaceURIMatch;
> + }
> +
> +
> }
>
> Modified: webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ParentNode.java
> URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ParentNode.java?rev=583588&r1=583587&r2=583588&view=diff
> ==============================================================================
> --- webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ParentNode.java (original)
> +++ webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ParentNode.java Wed Oct 10 12:32:15 2007
> @@ -31,6 +31,8 @@
> import org.apache.axiom.om.impl.builder.StAXOMBuilder;
> import org.apache.axiom.om.impl.dom.factory.OMDOMFactory;
> import org.apache.axiom.om.impl.traverse.OMChildrenIterator;
> +import org.apache.axiom.om.impl.traverse.OMChildrenLocalNameIterator;
> +import org.apache.axiom.om.impl.traverse.OMChildrenNamespaceIterator;
> import org.apache.axiom.om.impl.traverse.OMChildrenQNameIterator;
> import org.w3c.dom.DOMException;
> import org.w3c.dom.Document;
> @@ -90,6 +92,17 @@
> */
> public Iterator getChildrenWithName(QName elementQName) throws OMException {
> return new OMChildrenQNameIterator(getFirstOMChild(), elementQName);
> + }
> +
> + public Iterator getChildrenWithLocalName(String localName) {
> + return new OMChildrenLocalNameIterator(getFirstOMChild(),
> + localName);
> + }
> +
> +
> + public Iterator getChildrenWithNamespaceURI(String uri) {
> + return new OMChildrenNamespaceIterator(getFirstOMChild(),
> + uri);
> }
>
> /**
>
> Modified: webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMDocumentImpl.java
> URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMDocumentImpl.java?rev=583588&r1=583587&r2=583588&view=diff
> ==============================================================================
> --- webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMDocumentImpl.java (original)
> +++ webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMDocumentImpl.java Wed Oct 10 12:32:15 2007
> @@ -30,6 +30,8 @@
> import org.apache.axiom.om.impl.OMContainerEx;
> import org.apache.axiom.om.impl.OMNodeEx;
> import org.apache.axiom.om.impl.traverse.OMChildrenIterator;
> +import org.apache.axiom.om.impl.traverse.OMChildrenLocalNameIterator;
> +import org.apache.axiom.om.impl.traverse.OMChildrenNamespaceIterator;
> import org.apache.axiom.om.impl.traverse.OMChildrenQNameIterator;
>
> import javax.xml.namespace.QName;
> @@ -229,6 +231,16 @@
> elementQName);
> }
>
> + public Iterator getChildrenWithLocalName(String localName) {
> + return new OMChildrenLocalNameIterator(getFirstOMChild(),
> + localName);
> + }
> +
> +
> + public Iterator getChildrenWithNamespaceURI(String uri) {
> + return new OMChildrenNamespaceIterator(getFirstOMChild(),
> + uri);
> + }
> /**
> * Method getFirstOMChild.
> *
>
> Modified: webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java
> URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java?rev=583588&r1=583587&r2=583588&view=diff
> ==============================================================================
> --- webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java (original)
> +++ webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java Wed Oct 10 12:32:15 2007
> @@ -37,6 +37,9 @@
> import org.apache.axiom.om.impl.llom.factory.OMLinkedListImplFactory;
> import org.apache.axiom.om.impl.traverse.OMChildElementIterator;
> import org.apache.axiom.om.impl.traverse.OMChildrenIterator;
> +import org.apache.axiom.om.impl.traverse.OMChildrenLegacyQNameIterator;
> +import org.apache.axiom.om.impl.traverse.OMChildrenLocalNameIterator;
> +import org.apache.axiom.om.impl.traverse.OMChildrenNamespaceIterator;
> import org.apache.axiom.om.impl.traverse.OMChildrenQNameIterator;
> import org.apache.axiom.om.impl.util.EmptyIterator;
> import org.apache.axiom.om.impl.util.OMSerializerUtil;
> @@ -208,7 +211,27 @@
> public Iterator getChildrenWithName(QName elementQName) {
> return new OMChildrenQNameIterator(getFirstOMChild(),
> elementQName);
> +
> + // The semantics of this call was changed.
> + // The original sematics had a looser definition of QName equality.
> + // To get this original functionality use:
> + /*
> + return new OMChildrenLegacyQNameIterator(getFirstOMChild(), elementQName);
> + */
> }
> +
> +
> + public Iterator getChildrenWithLocalName(String localName) {
> + return new OMChildrenLocalNameIterator(getFirstOMChild(),
> + localName);
> + }
> +
> +
> + public Iterator getChildrenWithNamespaceURI(String uri) {
> + return new OMChildrenNamespaceIterator(getFirstOMChild(),
> + uri);
> + }
> +
>
> /**
> * Method getFirstChildWithName.
>
> Modified: webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSourcedElementImpl.java
> URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSourcedElementImpl.java?rev=583588&r1=583587&r2=583588&view=diff
> ==============================================================================
> --- webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSourcedElementImpl.java (original)
> +++ webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSourcedElementImpl.java Wed Oct 10 12:32:15 2007
> @@ -61,6 +61,7 @@
> * heavy overhead penalty, so should be avoided if possible.</p>
> */
> public class OMSourcedElementImpl extends OMElementImpl implements OMSourcedElement {
> +
> /** Data source for element data. */
> private OMDataSource dataSource;
>
> @@ -768,6 +769,16 @@
> public Iterator getChildrenWithName(QName elementQName) {
> forceExpand();
> return super.getChildrenWithName(elementQName);
> + }
> +
> + public Iterator getChildrenWithLocalName(String localName) {
> + forceExpand();
> + return super.getChildrenWithLocalName(localName);
> + }
> +
> + public Iterator getChildrenWithNamespaceURI(String uri) {
> + forceExpand();
> + return super.getChildrenWithNamespaceURI(uri);
> }
>
> /* (non-Javadoc)
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: commons-dev-unsubscribe@ws.apache.org
> For additional commands, e-mail: commons-dev-help@ws.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: commons-dev-help@ws.apache.org