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 2009/04/06 16:07:09 UTC
svn commit: r762348 - in
/jackrabbit/commons/jcr-rmi/trunk/jcr-rmi/src/main/java/org/apache/jackrabbit/rmi:
client/iterator/ClientIterator.java remote/ArrayIterator.java
server/iterator/ServerIterator.java
Author: jukka
Date: Mon Apr 6 14:07:09 2009
New Revision: 762348
URL: http://svn.apache.org/viewvc?rev=762348&view=rev
Log:
JCRRMI-17: Multiple TCK test failures
Improved handling of RangeIterator.skip() corner cases.
Modified:
jackrabbit/commons/jcr-rmi/trunk/jcr-rmi/src/main/java/org/apache/jackrabbit/rmi/client/iterator/ClientIterator.java
jackrabbit/commons/jcr-rmi/trunk/jcr-rmi/src/main/java/org/apache/jackrabbit/rmi/remote/ArrayIterator.java
jackrabbit/commons/jcr-rmi/trunk/jcr-rmi/src/main/java/org/apache/jackrabbit/rmi/server/iterator/ServerIterator.java
Modified: jackrabbit/commons/jcr-rmi/trunk/jcr-rmi/src/main/java/org/apache/jackrabbit/rmi/client/iterator/ClientIterator.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/jcr-rmi/trunk/jcr-rmi/src/main/java/org/apache/jackrabbit/rmi/client/iterator/ClientIterator.java?rev=762348&r1=762347&r2=762348&view=diff
==============================================================================
--- jackrabbit/commons/jcr-rmi/trunk/jcr-rmi/src/main/java/org/apache/jackrabbit/rmi/client/iterator/ClientIterator.java (original)
+++ jackrabbit/commons/jcr-rmi/trunk/jcr-rmi/src/main/java/org/apache/jackrabbit/rmi/client/iterator/ClientIterator.java Mon Apr 6 14:07:09 2009
@@ -125,7 +125,7 @@
throw new IllegalArgumentException("Negative skip is not allowed");
} else if (buffer == null && skipNum > 0) {
throw new NoSuchElementException("Skipped past the last element");
- } else if (positionInBuffer + skipNum < buffer.length) {
+ } else if (positionInBuffer + skipNum <= buffer.length) {
positionInBuffer += skipNum;
} else {
try {
Modified: jackrabbit/commons/jcr-rmi/trunk/jcr-rmi/src/main/java/org/apache/jackrabbit/rmi/remote/ArrayIterator.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/jcr-rmi/trunk/jcr-rmi/src/main/java/org/apache/jackrabbit/rmi/remote/ArrayIterator.java?rev=762348&r1=762347&r2=762348&view=diff
==============================================================================
--- jackrabbit/commons/jcr-rmi/trunk/jcr-rmi/src/main/java/org/apache/jackrabbit/rmi/remote/ArrayIterator.java (original)
+++ jackrabbit/commons/jcr-rmi/trunk/jcr-rmi/src/main/java/org/apache/jackrabbit/rmi/remote/ArrayIterator.java Mon Apr 6 14:07:09 2009
@@ -73,6 +73,9 @@
throw new IllegalArgumentException("Negative skip is not allowed");
} else if (elements == null || items > elements.length) {
throw new NoSuchElementException("Skipped past the last element");
+ } else if (items == elements.length) {
+ position = elements.length;
+ elements = null;
} else {
Object[] tmp = new Object[elements.length - (int) items];
System.arraycopy(elements, (int) items, tmp, 0, tmp.length);
Modified: jackrabbit/commons/jcr-rmi/trunk/jcr-rmi/src/main/java/org/apache/jackrabbit/rmi/server/iterator/ServerIterator.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/jcr-rmi/trunk/jcr-rmi/src/main/java/org/apache/jackrabbit/rmi/server/iterator/ServerIterator.java?rev=762348&r1=762347&r2=762348&view=diff
==============================================================================
--- jackrabbit/commons/jcr-rmi/trunk/jcr-rmi/src/main/java/org/apache/jackrabbit/rmi/server/iterator/ServerIterator.java (original)
+++ jackrabbit/commons/jcr-rmi/trunk/jcr-rmi/src/main/java/org/apache/jackrabbit/rmi/server/iterator/ServerIterator.java Mon Apr 6 14:07:09 2009
@@ -126,17 +126,15 @@
* @see java.util.Iterator#next()
*/
public Object[] nextObjects() throws RemoteException {
- if (!iterator.hasNext()) {
- return null;
+ ArrayList items = new ArrayList();
+ while (items.size() < maxBufferSize && iterator.hasNext()) {
+ items.add(getRemoteObject(iterator.next()));
+ }
+ if (items.size() > 0) {
+ return items.toArray(new Object[items.size()]);
} else {
- ArrayList items = new ArrayList();
- while (items.size() < maxBufferSize && iterator.hasNext()) {
- items.add(getRemoteObject(iterator.next()));
- }
- if (!iterator.hasNext()) {
- size = iterator.getPosition();
- }
- return items.toArray();
+ size = iterator.getPosition();
+ return null;
}
}