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 2015/11/09 20:39:25 UTC
svn commit: r1713519 -
/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_aggregation_common.java
Author: schor
Date: Mon Nov 9 19:39:25 2015
New Revision: 1713519
URL: http://svn.apache.org/viewvc?rev=1713519&view=rev
Log:
[UIMA-4664] fix aggregate iterator when copying to copy the underlying iterators; add a toString method to aid debugging
Modified:
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_aggregation_common.java
Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_aggregation_common.java
URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_aggregation_common.java?rev=1713519&r1=1713518&r2=1713519&view=diff
==============================================================================
--- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_aggregation_common.java (original)
+++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_aggregation_common.java Mon Nov 9 19:39:25 2015
@@ -25,6 +25,8 @@ import java.util.NoSuchElementException;
import org.apache.uima.cas.FSIndex;
import org.apache.uima.cas.FSIterator;
import org.apache.uima.cas.FeatureStructure;
+import org.apache.uima.cas.Type;
+import org.apache.uima.jcas.cas.TOP;
/**
* Aggregate several FS iterators. Simply iterates over one after the other
@@ -50,7 +52,11 @@ class FsIterator_aggregation_common<T ex
FsIterator_aggregation_common(FSIterator<T>[] iterators, FSIndex<T> index) {
this.iterators = iterators;
+ for (int i = iterators.length - 1; i >=0; i--) {
+ this.iterators[i] = iterators[i].copy();
+ }
this.index = index;
+ moveToFirst();
}
public T get() throws NoSuchElementException {
@@ -115,7 +121,8 @@ class FsIterator_aggregation_common<T ex
return;
}
- for (int i = lastValidIndex + 1, nbrIt = iterators.length; i < nbrIt; i++) {
+ final int nbrIt = iterators.length;
+ for (int i = lastValidIndex + 1; i < nbrIt; i++) {
it = iterators[i];
it.moveToFirst();
if (it.isValid()) {
@@ -175,7 +182,7 @@ class FsIterator_aggregation_common<T ex
it.moveToPrevious(); // make it also invalid
} else {
T targetFs = get();
- it.moveTo(get()); // moves to left-most match
+ it.moveTo(targetFs); // moves to left-most match
while (targetFs != it.get()) {
it.moveToNext();
}
@@ -188,4 +195,14 @@ class FsIterator_aggregation_common<T ex
public LowLevelIndex<T> ll_getIndex() {
return (LowLevelIndex<T>) index;
}
+
+ @Override
+ public String toString() {
+ Type type = this.ll_getIndex().getType();
+ StringBuilder sb = new StringBuilder(this.getClass().getSimpleName()).append(":").append(System.identityHashCode(this));
+ sb.append(" over Type: ").append(type.getName()).append(":").append(((TypeImpl)type).getCode());
+ sb.append(", size: ").append(this.ll_indexSize());
+ return sb.toString();
+ }
+
}