You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by sk...@apache.org on 2010/05/05 14:41:24 UTC
svn commit: r941268 - in
/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client:
chemistry-opencmis-client-api/src/main/java/org/apache/chemistry/opencmis/client/api/
chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/cli...
Author: sklevenz
Date: Wed May 5 12:41:23 2010
New Revision: 941268
URL: http://svn.apache.org/viewvc?rev=941268&view=rev
Log:
Fix:
https://issues.apache.org/jira/browse/CMIS-200
Removed:
incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-api/src/main/java/org/apache/chemistry/opencmis/client/api/ItemIterator.java
Modified:
incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-api/src/main/java/org/apache/chemistry/opencmis/client/api/ItemIterable.java
incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/util/AbstractIterator.java
incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/util/CollectionIterable.java
incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/util/ItemIterableImpl.java
incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/test/java/org/apache/chemistry/opencmis/client/runtime/ItemIterableTest.java
Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-api/src/main/java/org/apache/chemistry/opencmis/client/api/ItemIterable.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-api/src/main/java/org/apache/chemistry/opencmis/client/api/ItemIterable.java?rev=941268&r1=941267&r2=941268&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-api/src/main/java/org/apache/chemistry/opencmis/client/api/ItemIterable.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-api/src/main/java/org/apache/chemistry/opencmis/client/api/ItemIterable.java Wed May 5 12:41:23 2010
@@ -18,6 +18,8 @@
*/
package org.apache.chemistry.opencmis.client.api;
+import java.util.Iterator;
+
/**
* Iterable for CMIS collections that allows ability to skip to specific
* position or return a sub collection.
@@ -57,5 +59,25 @@ public interface ItemIterable<T> extends
*
* @see java.lang.Iterable#iterator()
*/
- ItemIterator<T> iterator();
+ Iterator<T> iterator();
+
+ /**
+ * Returns the number of items fetched for the current page.
+ *
+ * @return number of items for currently fetched collection
+ */
+ long getPageNumItems();
+
+ /**
+ * Returns the total number of items. If the repository knows the total
+ * number of items in a result set, the repository SHOULD include the number
+ * here. If the repository does not know the number of items in a result
+ * set, this parameter SHOULD not be set. The value in the parameter MAY NOT
+ * be accurate the next time the client retrieves the result set or the next
+ * page in the result set.
+ *
+ * @return total number of items or (-1)
+ */
+ long getTotalNumItems();
+
}
Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/util/AbstractIterator.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/util/AbstractIterator.java?rev=941268&r1=941267&r2=941268&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/util/AbstractIterator.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/util/AbstractIterator.java Wed May 5 12:41:23 2010
@@ -18,9 +18,9 @@
*/
package org.apache.chemistry.opencmis.client.runtime.util;
+import java.util.Iterator;
import java.util.List;
-import org.apache.chemistry.opencmis.client.api.ItemIterator;
import org.apache.chemistry.opencmis.client.runtime.util.AbstractPageFetch.PageFetchResult;
@@ -29,7 +29,7 @@ import org.apache.chemistry.opencmis.cli
*
* @param <T>
*/
-public abstract class AbstractIterator<T> implements ItemIterator<T> {
+public abstract class AbstractIterator<T> implements Iterator<T> {
private long skipCount;
private int skipOffset;
@@ -64,7 +64,7 @@ public abstract class AbstractIterator<T
* (non-Javadoc)
* @see org.apache.chemistry.opencmis.client.api.ItemIterator#getPageNumItems()
*/
- public long getCurrentCollectionNumItems() {
+ public long getPageNumItems() {
PageFetchResult<T> page = getCurrentPage();
if (page != null) {
List<T> items = page.getPage();
Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/util/CollectionIterable.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/util/CollectionIterable.java?rev=941268&r1=941267&r2=941268&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/util/CollectionIterable.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/util/CollectionIterable.java Wed May 5 12:41:23 2010
@@ -18,8 +18,9 @@
*/
package org.apache.chemistry.opencmis.client.runtime.util;
+import java.util.Iterator;
+
import org.apache.chemistry.opencmis.client.api.ItemIterable;
-import org.apache.chemistry.opencmis.client.api.ItemIterator;
/**
* CMIS Collection Iterable
@@ -28,6 +29,7 @@ public class CollectionIterable<T> imple
private AbstractPageFetch<T> pageFetch;
private long skipCount;
+ private CollectionIterator<T> iterator;
/**
* Construct
@@ -54,8 +56,11 @@ public class CollectionIterable<T> imple
*
* @see java.lang.Iterable#iterator()
*/
- public ItemIterator<T> iterator() {
- return new CollectionIterator<T>(skipCount, pageFetch);
+ public Iterator<T> iterator() {
+ if (this.iterator == null) {
+ this.iterator = new CollectionIterator<T>(skipCount, pageFetch);
+ }
+ return this.iterator;
}
/*
@@ -85,4 +90,18 @@ public class CollectionIterable<T> imple
this.pageFetch.setMaxNumItems(maxNumItems);
return new ItemIterableImpl<T>(skipCount, pageFetch);
}
+
+ public long getPageNumItems() {
+ if (this.iterator == null) {
+ this.iterator = new CollectionIterator<T>(skipCount, pageFetch);
+ }
+ return this.iterator.getPageNumItems();
+ }
+
+ public long getTotalNumItems() {
+ if (this.iterator == null) {
+ this.iterator = new CollectionIterator<T>(skipCount, pageFetch);
+ }
+ return this.iterator.getTotalNumItems();
+ }
}
Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/util/ItemIterableImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/util/ItemIterableImpl.java?rev=941268&r1=941267&r2=941268&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/util/ItemIterableImpl.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/util/ItemIterableImpl.java Wed May 5 12:41:23 2010
@@ -18,8 +18,10 @@
*/
package org.apache.chemistry.opencmis.client.runtime.util;
+import java.util.Iterator;
+
import org.apache.chemistry.opencmis.client.api.ItemIterable;
-import org.apache.chemistry.opencmis.client.api.ItemIterator;
+import org.apache.chemistry.opencmis.client.runtime.util.AbstractPageFetch.PageFetchResult;
/**
* Iterable for a CMIS Collection Page
@@ -28,6 +30,7 @@ public class ItemIterableImpl<T> impleme
private AbstractPageFetch<T> pageFetch;
private long skipCount;
+ private ItemIteratorImpl<T> iterator;
/**
* Construct
@@ -54,8 +57,11 @@ public class ItemIterableImpl<T> impleme
*
* @see java.lang.Iterable#iterator()
*/
- public ItemIterator<T> iterator() {
- return new ItemIteratorImpl<T>(skipCount, pageFetch);
+ public Iterator<T> iterator() {
+ if (this.iterator == null) {
+ this.iterator = new ItemIteratorImpl<T>(skipCount, pageFetch);
+ }
+ return this.iterator;
}
/*
@@ -86,4 +92,18 @@ public class ItemIterableImpl<T> impleme
this.pageFetch.setMaxNumItems(maxNumItems);
return new ItemIterableImpl<T>(skipCount, pageFetch);
}
+
+ public long getPageNumItems() {
+ if (this.iterator == null) {
+ this.iterator = new ItemIteratorImpl<T>(skipCount, pageFetch);
+ }
+ return this.iterator.getPageNumItems();
+ }
+
+ public long getTotalNumItems() {
+ if (this.iterator == null) {
+ this.iterator = new ItemIteratorImpl<T>(skipCount, pageFetch);
+ }
+ return this.iterator.getTotalNumItems();
+ }
}
Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/test/java/org/apache/chemistry/opencmis/client/runtime/ItemIterableTest.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/test/java/org/apache/chemistry/opencmis/client/runtime/ItemIterableTest.java?rev=941268&r1=941267&r2=941268&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/test/java/org/apache/chemistry/opencmis/client/runtime/ItemIterableTest.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/test/java/org/apache/chemistry/opencmis/client/runtime/ItemIterableTest.java Wed May 5 12:41:23 2010
@@ -25,11 +25,11 @@ import static org.junit.Assert.assertTru
import java.io.IOException;
import java.math.BigInteger;
import java.util.ArrayList;
+import java.util.Iterator;
import java.util.List;
import java.util.Properties;
import org.apache.chemistry.opencmis.client.api.ItemIterable;
-import org.apache.chemistry.opencmis.client.api.ItemIterator;
import org.apache.chemistry.opencmis.client.runtime.util.AbstractPageFetch;
import org.apache.chemistry.opencmis.client.runtime.util.CollectionIterable;
import org.apache.commons.logging.Log;
@@ -180,14 +180,13 @@ public class ItemIterableTest {
int pageSize = 5;
ItemIterable<String> p = this.getIterable(this.data10, pageSize);
assertNotNull(p);
- ItemIterator<String> i = (ItemIterator<String>) p.iterator();
+ Iterator<String> i = p.iterator();
assertNotNull(i);
- assertEquals(pageSize + 1, i.getTotalNumItems());
+ assertEquals(pageSize + 1, p.getTotalNumItems());
for (int idx = 0; i.hasNext() && idx < (pageSize + 1); idx++) {
- i.next();
+ assertNotNull(i.next());
}
- assertEquals(pageSize + 1, i.getPosition());
- assertEquals(this.data10.length, i.getTotalNumItems());
+ assertEquals(this.data10.length, p.getTotalNumItems());
}
@Test
@@ -197,14 +196,11 @@ public class ItemIterableTest {
int pageSize = 5;
ItemIterable<String> p = this.getIterable(this.data10, pageSize);
assertNotNull(p);
- ItemIterator<String> i = (ItemIterator<String>) p.iterator();
+ Iterator<String> i = p.iterator();
assertNotNull(i);
- assertEquals(true, i.getHasMoreItems());
for (int idx = 0; i.hasNext() && idx < (pageSize + 1); idx++) {
- i.next();
+ assertNotNull(i.next());
}
- assertEquals(pageSize + 1, i.getPosition());
- assertEquals(false, i.getHasMoreItems());
}
@Test
@@ -214,14 +210,13 @@ public class ItemIterableTest {
int pageSize = 7;
ItemIterable<String> p = this.getIterable(this.data10, pageSize);
assertNotNull(p);
- ItemIterator<String> i = (ItemIterator<String>) p.iterator();
+ Iterator<String> i = p.iterator();
assertNotNull(i);
- assertEquals(pageSize, i.getCurrentCollectionNumItems());
+ assertEquals(pageSize, p.getPageNumItems());
for (int idx = 0; i.hasNext() && idx < (pageSize + 1); idx++) {
- i.next();
+ assertNotNull(i.next());
}
- assertEquals(pageSize + 1, i.getPosition());
- assertEquals(this.data10.length - pageSize, i.getCurrentCollectionNumItems());
+ assertEquals(this.data10.length - pageSize, p.getPageNumItems());
}
private void loopSubPage(String[] data, int skipCount, int maxItems, int pageSize) {