Author: schor Date: Wed Jul 25 18:00:35 2018 New Revision: 1836652 URL: http://svn.apache.org/viewvc?rev=1836652&view=rev Log: [UIMA-5848]
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/FSIterator.java uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FilteredIterator.java uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_bag.java uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_multiple_indexes.java uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_set_sorted2.java uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_snapshot.java uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/LowLevelIterator_empty.java uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/Subiterator.java uima/uv3/uimaj-v3/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/IteratorTest.java Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/FSIterator.java URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/FSIterator.java?rev=1836652&r1=1836651&r2=1836652&view=diff ============================================================================== --- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/FSIterator.java (original) +++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/FSIterator.java Wed Jul 25 18:00:35 2018 @@ -322,7 +322,19 @@ public interface FSIterator<T extends Fe * This may be inefficient to compute. * @return the size of the collection being iterated over. */ + /* + * (non-Javadoc) + * @see org.apache.uima.cas.FSIterator#size() + */ default int size() { - return ((LowLevelIterator<T>)this).ll_indexSizeMaybeNotCurrent(); + FSIterator<T> it = copy(); + it.moveToFirst(); + int count = 0; + while (it.isValid()) { + count++; + it.nextNvc(); + } + return count; } + } Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FilteredIterator.java URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FilteredIterator.java?rev=1836652&r1=1836651&r2=1836652&view=diff ============================================================================== --- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FilteredIterator.java (original) +++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FilteredIterator.java Wed Jul 25 18:00:35 2018 @@ -153,16 +153,7 @@ class FilteredIterator<T extends Feature return it.getComparator(); } - @Override - public int size() { - FilteredIterator<T> it2 = new FilteredIterator<T>(it, cons); - int count = 0; - while (it2.hasNext()) { - count++; - it2.nextNvc(); - } - return count; - } + // /* (non-Javadoc) // * @see org.apache.uima.cas.impl.FSIteratorImplBase#moveTo(java.util.Comparator) Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_bag.java URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_bag.java?rev=1836652&r1=1836651&r2=1836652&view=diff ============================================================================== --- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_bag.java (original) +++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_bag.java Wed Jul 25 18:00:35 2018 @@ -186,6 +186,10 @@ class FsIterator_bag<T extends FeatureSt return null; // not used for bag } + @Override + public int size() { + return bag.size(); + } } Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_multiple_indexes.java URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_multiple_indexes.java?rev=1836652&r1=1836651&r2=1836652&view=diff ============================================================================== --- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_multiple_indexes.java (original) +++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_multiple_indexes.java Wed Jul 25 18:00:35 2018 @@ -193,4 +193,12 @@ public abstract class FsIterator_multipl : ((LowLevelIterator<T>)allIterators[0]).ll_getIndex()); } + @Override + public int size() { + int r = 0; + for (LowLevelIterator<T> it : nonEmptyIterators) { + r += it.size(); + } + return r; + } } Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_set_sorted2.java URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_set_sorted2.java?rev=1836652&r1=1836651&r2=1836652&view=diff ============================================================================== --- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_set_sorted2.java (original) +++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_set_sorted2.java Wed Jul 25 18:00:35 2018 @@ -301,6 +301,11 @@ class FsIterator_set_sorted2<T extends F return this.ll_getIndex().isSorted(); } + @Override + public int size() { + return ofsa.size(); + } + // @Override // protected int getModificationCountFromIndex() { // return ofsa.getModificationCount(); Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_snapshot.java URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_snapshot.java?rev=1836652&r1=1836651&r2=1836652&view=diff ============================================================================== --- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_snapshot.java (original) +++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_snapshot.java Wed Jul 25 18:00:35 2018 @@ -260,4 +260,9 @@ public class FsIterator_subtypes_snapsho public Comparator<TOP> getComparator() { return comparatorMaybeNoTypeWithoutId; } + + @Override + public int size() { + return snapshot.length; + } } Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/LowLevelIterator_empty.java URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/LowLevelIterator_empty.java?rev=1836652&r1=1836651&r2=1836652&view=diff ============================================================================== --- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/LowLevelIterator_empty.java (original) +++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/LowLevelIterator_empty.java Wed Jul 25 18:00:35 2018 @@ -63,4 +63,6 @@ public class LowLevelIterator_empty<T ex public Comparator<TOP> getComparator() { return null; } @Override public Type getType() { return TypeSystemImpl.staticTsi.getTopType(); } + @Override + public int size() { return 0; } } Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/Subiterator.java URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/Subiterator.java?rev=1836652&r1=1836651&r2=1836652&view=diff ============================================================================== --- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/Subiterator.java (original) +++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/Subiterator.java Wed Jul 25 18:00:35 2018 @@ -1252,18 +1252,6 @@ public class Subiterator<T extends Annot // TODO Auto-generated method stub return null; } - - @Override - public int size() { - FSIterator<T> it2 = copy(); - it2.moveToFirst(); - int sz = 0; - while (it2.hasNext()) { - sz++; - it2.nextNvc(); - } - return sz; - } // /** // * Simple implementation: Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/IteratorTest.java URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/IteratorTest.java?rev=1836652&r1=1836651&r2=1836652&view=diff ============================================================================== --- uima/uv3/uimaj-v3/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/IteratorTest.java (original) +++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/IteratorTest.java Wed Jul 25 18:00:35 2018 @@ -242,6 +242,7 @@ public class IteratorTest extends TestCa public void testEmptySnapshotIterator() { setupindexes(); FSIterator<FeatureStructure> it = sortedIndex.iterator(); + assertEquals(0, it.size()); assertFalse(it.isValid()); boolean ok = false; try { @@ -252,6 +253,7 @@ public class IteratorTest extends TestCa assertTrue(ok); it = ssSortedIndex.iterator(); + assertEquals(0, it.size()); assertFalse(it.isValid()); ok = false; try { @@ -286,7 +288,9 @@ public class IteratorTest extends TestCa FSIndex<AnnotationFS> index = this.cas.getAnnotationIndex(); FSIndex<AnnotationFS> ssIndex = index.withSnapshotIterators(); FSIterator<AnnotationFS> it = index.iterator(); + assertEquals(60, it.size()); FSIterator<AnnotationFS> ssit = ssIndex.iterator(); + assertEquals(60, it.size()); it.moveTo(match); // should move to left-most of the 10 with start=5 end=7 ssit.moveTo(match); assertTrue(index.compare(match, it.get()) == 0); @@ -311,6 +315,7 @@ public class IteratorTest extends TestCa index = index.withSnapshotIterators(); it = index.iterator(); + assertEquals(1, it.size()); it.moveTo(pastEnd); assertFalse(it.isValid()); @@ -338,6 +343,7 @@ public class IteratorTest extends TestCa FSIndex<AnnotationFS> index = this.cas.getAnnotationIndex(this.subsentenceType); FSIterator<AnnotationFS> it = index.iterator(); + assertEquals((i == 0) ? 6 : 5, it.size()); it.moveTo(testAnnot); for (int j = 0; j < 2; j++) { assertTrue(it.isValid()); @@ -352,6 +358,7 @@ public class IteratorTest extends TestCa index = index.withSnapshotIterators(); it = index.iterator(); + assertEquals((i == 0) ? 6 : 5, it.size()); it.moveTo(testAnnot); for (int j = 0; j < 2; j++) { assertTrue(it.isValid()); @@ -591,6 +598,7 @@ public class IteratorTest extends TestCa setIndexForType = llir.ll_getIndex(CASTestSetup.ANNOT_SET_INDEX, ((TypeImpl)tokenType).getCode()); LowLevelIterator it = setIndexForType.ll_iterator(); + assertEquals(20, it.size()); assertTrue(it.isValid()); it.moveToPrevious(); assertFalse(it.isValid()); @@ -606,6 +614,7 @@ public class IteratorTest extends TestCa private void setIndexIterchk(LowLevelIndex idx, int[] expected) { LowLevelIterator it = idx.ll_iterator(); + assertEquals(expected.length, it.size()); int[] r = new int[70]; int i = 0; while (it.isValid()) { @@ -849,6 +858,7 @@ public class IteratorTest extends TestCa private void tstWord(FSIndex<FeatureStructure> index) { FSIterator<FeatureStructure> it = index.iterator(); + assertEquals(20, it.size()); // test size it.moveToLast(); FeatureStructure fs = this.cas.createFS(wType);