[Yanel-dev] [Yarep] Introduce an iterator to access child nodes

Michael Wechner michael.wechner at wyona.com
Mon Nov 29 15:48:46 CET 2010


Hi

In order to make Yarep more scalable re number of numbers per 
"collection" I would like to introduce a method like:

Index: src/core/java/org/wyona/yarep/core/Node.java
===================================================================
--- src/core/java/org/wyona/yarep/core/Node.java    (revision 55016)
+++ src/core/java/org/wyona/yarep/core/Node.java    (working copy)

+
+    /**
+     * Get an iterator in order to access all child nodes without 
scalability issues
+     *
+     * There is no guarantee that the nodes in the iterator will appear 
in any specific order; they are not, in particular, guaranteed to appear 
in alphabetical order.
+     *
+     * @return iterator of child nodes or empty iterator if there are 
no child nodes.
+     * @throws RepositoryException if node is not a collection or if a 
repository error occurs
+     */
+    public Iterator getIteratorOfNodes() throws RepositoryException;

because the existing method

public Node[] getNodes() throws RepositoryException;

returning an array just doesn't scale that well.

I have three questions:

1) Do think this actually makes sense?

2) What do you think about the method name and arguments? For example 
JCR is using:

http://www.day.com/maven/jsr170/javadocs/jcr-1.0/javax/jcr/Node.html#getNodes%28%29
http://www.day.com/maven/jsr170/javadocs/jcr-1.0/javax/jcr/Node.html#getNodes%28java.lang.String%29

3) This will break backwards compatibility in a sense that custom Node 
implementations won't compile anymore
, whereas nobody will be forced to do an actual implementation and one 
could fix this quickly with something like:

  /**
    * @see org.wyona.yarep.core.Node#getIteratorOfNodes()
    */
     public Iterator getIteratorOfNodes() throws RepositoryException {
        throw new UnsupportedOperationException("TODO: Implement this 
method"); // TODO
    }

Are there any objections re backwards compatibility?

Thanks

Michael



More information about the Yanel-development mailing list