You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2005/05/08 21:27:33 UTC
svn commit: r169151 -
/incubator/jackrabbit/trunk/contrib/jcr-ext/src/java/org/apache/jackrabbit/iterator
Author: jukka
Date: Sun May 8 12:27:32 2005
New Revision: 169151
URL: http://svn.apache.org/viewcvs?rev=169151&view=rev
Log:
JCR-EXT: Cleaned up, documented and extended the array iterator classes.
Modified:
incubator/jackrabbit/trunk/contrib/jcr-ext/src/java/org/apache/jackrabbit/iterator/ArrayIterator.java
incubator/jackrabbit/trunk/contrib/jcr-ext/src/java/org/apache/jackrabbit/iterator/ArrayNodeIterator.java
incubator/jackrabbit/trunk/contrib/jcr-ext/src/java/org/apache/jackrabbit/iterator/ArrayNodeTypeIterator.java
incubator/jackrabbit/trunk/contrib/jcr-ext/src/java/org/apache/jackrabbit/iterator/ArrayPropertyIterator.java
Modified: incubator/jackrabbit/trunk/contrib/jcr-ext/src/java/org/apache/jackrabbit/iterator/ArrayIterator.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-ext/src/java/org/apache/jackrabbit/iterator/ArrayIterator.java?rev=169151&r1=169150&r2=169151&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-ext/src/java/org/apache/jackrabbit/iterator/ArrayIterator.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-ext/src/java/org/apache/jackrabbit/iterator/ArrayIterator.java Sun May 8 12:27:32 2005
@@ -16,6 +16,8 @@
*/
package org.apache.jackrabbit.iterator;
+import java.util.NoSuchElementException;
+
import javax.jcr.RangeIterator;
/**
@@ -24,54 +26,92 @@
* implements the RangeIterator functionality for an underlying array
* of objects. Used as the base class for the type-specific iterator
* classes defined in this package.
- *
- * @author Jukka Zitting
*/
-public class ArrayIterator implements RangeIterator {
+class ArrayIterator implements RangeIterator {
/** The current iterator position. */
private int position;
-
+
/** The underlying array of objects. */
- private Object[] array;
-
+ private final Object[] array;
+
/**
* Creates an iterator for the given array of objects.
- *
+ *
* @param array the objects to iterate
*/
- public ArrayIterator(Object[] array) {
+ protected ArrayIterator(Object[] array) {
this.position = 0;
this.array = array;
}
-
- /** {@inheritDoc} */
+
+ /**
+ * Checks whether there are more elements in the array.
+ *
+ * @return <code>true</code> if more elements are available,
+ * <code>false</code> otherwise
+ * @see Iterator#hasNext()
+ */
public boolean hasNext() {
return (position < array.length);
}
- /** {@inheritDoc} */
+ /**
+ * Returns the next array element and advances the array position.
+ *
+ * @return next element
+ * @see Iterator#next()
+ */
public Object next() {
return array[position++];
}
- /** {@inheritDoc} */
- public void remove() {
+ /**
+ * Element removal is not supported.
+ *
+ * @throws UnsupportedOperationException always thrown
+ * @see Iterator#remove()
+ */
+ public void remove() throws UnsupportedOperationException {
throw new UnsupportedOperationException();
}
- /** {@inheritDoc} */
- public void skip(long items) {
- position += items;
+ /**
+ * Advances the array position the given number of elements.
+ *
+ * @param items number of items to skip
+ * @throws IllegalArgumentException if the given number of items is negative
+ * @throws NoSuchElementException if skipping past the end of the array
+ * @see RangeIterator#skip(long)
+ */
+ public void skip(long items)
+ throws IllegalArgumentException, NoSuchElementException {
+ if (items < 0) {
+ throw new IllegalArgumentException("Negative number of items");
+ } else if (position + items < array.length) {
+ position += items;
+ } else {
+ throw new NoSuchElementException("No more elements in the array");
+ }
}
- /** {@inheritDoc} */
+ /**
+ * Returns the length of the array.
+ *
+ * @return array length
+ * @see RangeIterator#getSize()
+ */
public long getSize() {
return array.length;
}
- /** {@inheritDoc} */
- public long getPos() {
+ /**
+ * Returns the current array position
+ *
+ * @return array position
+ * @see RangeIterator#getPosition()
+ */
+ public long getPosition() {
return position;
}
Modified: incubator/jackrabbit/trunk/contrib/jcr-ext/src/java/org/apache/jackrabbit/iterator/ArrayNodeIterator.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-ext/src/java/org/apache/jackrabbit/iterator/ArrayNodeIterator.java?rev=169151&r1=169150&r2=169151&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-ext/src/java/org/apache/jackrabbit/iterator/ArrayNodeIterator.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-ext/src/java/org/apache/jackrabbit/iterator/ArrayNodeIterator.java Sun May 8 12:27:32 2005
@@ -16,29 +16,41 @@
*/
package org.apache.jackrabbit.iterator;
+import java.util.Collection;
+
import javax.jcr.Node;
import javax.jcr.NodeIterator;
/**
* Array implementation of the JCR
* {@link javax.jcr.NodeIterator NodeIterator} interface.
- * This class is used by the JCR-RMI client adapters to convert
- * node arrays to iterators.
- *
- * @author Jukka Zitting
*/
public class ArrayNodeIterator extends ArrayIterator implements NodeIterator {
-
+
/**
* Creates an iterator for the given array of nodes.
- *
+ *
* @param nodes the nodes to iterate
*/
public ArrayNodeIterator(Node[] nodes) {
super(nodes);
}
-
- /** {@inheritDoc} */
+
+ /**
+ * Creates an iterator for the given collection of nodes.
+ *
+ * @param nodes the nodes to iterate
+ */
+ public ArrayNodeIterator(Collection nodes) {
+ this((Node[]) nodes.toArray(new Node[nodes.size()]));
+ }
+
+ /**
+ * Returns the next node in the array.
+ *
+ * @return next node
+ * @see NodeIterator#nextNode()
+ */
public Node nextNode() {
return (Node) next();
}
Modified: incubator/jackrabbit/trunk/contrib/jcr-ext/src/java/org/apache/jackrabbit/iterator/ArrayNodeTypeIterator.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-ext/src/java/org/apache/jackrabbit/iterator/ArrayNodeTypeIterator.java?rev=169151&r1=169150&r2=169151&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-ext/src/java/org/apache/jackrabbit/iterator/ArrayNodeTypeIterator.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-ext/src/java/org/apache/jackrabbit/iterator/ArrayNodeTypeIterator.java Sun May 8 12:27:32 2005
@@ -6,7 +6,7 @@
* 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
+ * 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,
@@ -16,30 +16,42 @@
*/
package org.apache.jackrabbit.iterator;
+import java.util.Collection;
+
import javax.jcr.nodetype.NodeType;
import javax.jcr.nodetype.NodeTypeIterator;
/**
* Array implementation of the JCR
* {@link javax.jcr.NodeTypeIterator NodeTypeIterator} interface.
- * This class is used by the JCR-RMI client adapters to convert
- * node type arrays to iterators.
- *
- * @author Jukka Zitting
*/
public class ArrayNodeTypeIterator extends ArrayIterator implements
NodeTypeIterator {
-
+
/**
* Creates an iterator for the given array of node types.
- *
+ *
* @param types the node types to iterate
*/
public ArrayNodeTypeIterator(NodeType[] types) {
super(types);
}
- /** {@inheritDoc} */
+ /**
+ * Creates an iterator for the given collection of node types.
+ *
+ * @param types the node types to iterate
+ */
+ public ArrayNodeTypeIterator(Collection types) {
+ this((NodeType[]) types.toArray(new NodeType[types.size()]));
+ }
+
+ /**
+ * Returns the next node type in the array.
+ *
+ * @return next node type
+ * @see NodeTypeIterator#nextNodeType()
+ */
public NodeType nextNodeType() {
return (NodeType) next();
}
Modified: incubator/jackrabbit/trunk/contrib/jcr-ext/src/java/org/apache/jackrabbit/iterator/ArrayPropertyIterator.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-ext/src/java/org/apache/jackrabbit/iterator/ArrayPropertyIterator.java?rev=169151&r1=169150&r2=169151&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-ext/src/java/org/apache/jackrabbit/iterator/ArrayPropertyIterator.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-ext/src/java/org/apache/jackrabbit/iterator/ArrayPropertyIterator.java Sun May 8 12:27:32 2005
@@ -16,30 +16,42 @@
*/
package org.apache.jackrabbit.iterator;
+import java.util.Collection;
+
import javax.jcr.Property;
import javax.jcr.PropertyIterator;
/**
* Array implementation of the JCR
* {@link javax.jcr.PropertyIterator PropertyIterator} interface.
- * This class is used by the JCR-RMI client adapters to convert
- * property arrays to iterators.
- *
- * @author Jukka Zitting
*/
public class ArrayPropertyIterator extends ArrayIterator
implements PropertyIterator {
-
+
/**
* Creates an iterator for the given array of properties.
- *
+ *
* @param properties the properties to iterate
*/
public ArrayPropertyIterator(Property[] properties) {
super(properties);
}
-
- /** {@inheritDoc} */
+
+ /**
+ * Creates an iterator for the given collection of properties.
+ *
+ * @param properties the properties to iterate
+ */
+ public ArrayPropertyIterator(Collection properties) {
+ this((Property[]) properties.toArray(new Property[properties.size()]));
+ }
+
+ /**
+ * Returns the next property in the array.
+ *
+ * @return next property
+ * @see PropertyIterator#nextProperty()
+ */
public Property nextProperty() {
return (Property) next();
}