You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by sc...@apache.org on 2018/07/25 18:00:35 UTC

svn commit: r1836652 - in /uima/uv3/uimaj-v3/trunk/uimaj-core/src: main/java/org/apache/uima/cas/ main/java/org/apache/uima/cas/impl/ test/java/org/apache/uima/cas/test/

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);