You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by re...@apache.org on 2013/08/04 14:10:31 UTC

svn commit: r1510145 - in /uima/sandbox/uimafit/trunk: uimafit-legacy-support/src/test/java/org/apache/uima/fit/factory/ uimafit-legacy-support/src/test/java/org/apache/uima/fit/factory/testCrs/ uimafit/src/main/java/org/apache/uima/fit/pipeline/ uimaf...

Author: rec
Date: Sun Aug  4 12:10:30 2013
New Revision: 1510145

URL: http://svn.apache.org/r1510145
Log:
[UIMA-3097] Split JCasIterable into iterable and iterator parts
- Added stepPipeline() method to SimplePipeline (uses JCasIterable)
- Split JCasIterator out of JCasIterable

Added:
    uima/sandbox/uimafit/trunk/uimafit/src/main/java/org/apache/uima/fit/pipeline/JCasIterator.java   (with props)
Modified:
    uima/sandbox/uimafit/trunk/uimafit-legacy-support/src/test/java/org/apache/uima/fit/factory/CollectionReaderFactoryTest.java
    uima/sandbox/uimafit/trunk/uimafit-legacy-support/src/test/java/org/apache/uima/fit/factory/testCrs/SingleFileXReaderTest.java
    uima/sandbox/uimafit/trunk/uimafit/src/main/java/org/apache/uima/fit/pipeline/JCasIterable.java
    uima/sandbox/uimafit/trunk/uimafit/src/main/java/org/apache/uima/fit/pipeline/SimplePipeline.java
    uima/sandbox/uimafit/trunk/uimafit/src/test/java/org/apache/uima/fit/factory/CollectionReaderFactoryTest.java
    uima/sandbox/uimafit/trunk/uimafit/src/test/java/org/apache/uima/fit/factory/testCrs/SingleFileXReaderTest.java
    uima/sandbox/uimafit/trunk/uimafit/src/test/java/org/apache/uima/fit/pipeline/JCasIterableTest.java

Modified: uima/sandbox/uimafit/trunk/uimafit-legacy-support/src/test/java/org/apache/uima/fit/factory/CollectionReaderFactoryTest.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uimafit/trunk/uimafit-legacy-support/src/test/java/org/apache/uima/fit/factory/CollectionReaderFactoryTest.java?rev=1510145&r1=1510144&r2=1510145&view=diff
==============================================================================
--- uima/sandbox/uimafit/trunk/uimafit-legacy-support/src/test/java/org/apache/uima/fit/factory/CollectionReaderFactoryTest.java (original)
+++ uima/sandbox/uimafit/trunk/uimafit-legacy-support/src/test/java/org/apache/uima/fit/factory/CollectionReaderFactoryTest.java Sun Aug  4 12:10:30 2013
@@ -30,7 +30,7 @@ import org.apache.uima.collection.Collec
 import org.apache.uima.collection.CollectionReader_ImplBase;
 import org.apache.uima.fit.ComponentTestBase;
 import org.apache.uima.fit.factory.testCrs.SingleFileXReader;
-import org.apache.uima.fit.pipeline.JCasIterable;
+import org.apache.uima.fit.pipeline.JCasIterator;
 import org.apache.uima.fit.type.Token;
 import org.apache.uima.fit.util.JCasUtil;
 import org.apache.uima.resource.ResourceInitializationException;
@@ -50,8 +50,8 @@ public class CollectionReaderFactoryTest
             "src/test/resources/data/docs/test.xmi", SingleFileXReader.PARAM_XML_SCHEME,
             SingleFileXReader.XMI);
 
-    JCasIterable jCasIterable = new JCasIterable(reader, typeSystemDescription);
-    jCas = jCasIterable.next();
+    JCasIterator jCasIterator = new JCasIterator(reader);
+    jCas = jCasIterator.next();
     assertNotNull(jCas);
     assertEquals("Me and all my friends are non-conformists.", jCas.getDocumentText());
     Token token = JCasUtil.selectByIndex(jCas, Token.class, 2);
@@ -64,8 +64,8 @@ public class CollectionReaderFactoryTest
             SingleFileXReader.PARAM_FILE_NAME, "src/test/resources/data/docs/test.xmi",
             SingleFileXReader.PARAM_XML_SCHEME, SingleFileXReader.XMI);
 
-    jCasIterable = new JCasIterable(reader, typeSystemDescription);
-    jCas = jCasIterable.next();
+    jCasIterator = new JCasIterator(reader, typeSystemDescription);
+    jCas = jCasIterator.next();
     assertNotNull(jCas);
     assertEquals("Me and all my friends are non-conformists.", jCas.getDocumentText());
     token = JCasUtil.selectByIndex(jCas, Token.class, 9);
@@ -78,8 +78,8 @@ public class CollectionReaderFactoryTest
             SingleFileXReader.PARAM_FILE_NAME, "src/test/resources/data/docs/test.xmi",
             SingleFileXReader.PARAM_XML_SCHEME, SingleFileXReader.XMI);
 
-    jCasIterable = new JCasIterable(reader, typeSystemDescription);
-    jCas = jCasIterable.next();
+    jCasIterator = new JCasIterator(reader, typeSystemDescription);
+    jCas = jCasIterator.next();
     assertNotNull(jCas);
     assertEquals("Me and all my friends are non-conformists.", jCas.getDocumentText());
     token = JCasUtil.selectByIndex(jCas, Token.class, 4);

Modified: uima/sandbox/uimafit/trunk/uimafit-legacy-support/src/test/java/org/apache/uima/fit/factory/testCrs/SingleFileXReaderTest.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uimafit/trunk/uimafit-legacy-support/src/test/java/org/apache/uima/fit/factory/testCrs/SingleFileXReaderTest.java?rev=1510145&r1=1510144&r2=1510145&view=diff
==============================================================================
--- uima/sandbox/uimafit/trunk/uimafit-legacy-support/src/test/java/org/apache/uima/fit/factory/testCrs/SingleFileXReaderTest.java (original)
+++ uima/sandbox/uimafit/trunk/uimafit-legacy-support/src/test/java/org/apache/uima/fit/factory/testCrs/SingleFileXReaderTest.java Sun Aug  4 12:10:30 2013
@@ -28,7 +28,7 @@ import org.apache.uima.UIMAException;
 import org.apache.uima.collection.CollectionReader;
 import org.apache.uima.fit.ComponentTestBase;
 import org.apache.uima.fit.factory.CollectionReaderFactory;
-import org.apache.uima.fit.pipeline.JCasIterable;
+import org.apache.uima.fit.pipeline.JCasIterator;
 import org.apache.uima.fit.testing.util.HideOutput;
 import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.util.Progress;
@@ -68,7 +68,7 @@ public class SingleFileXReaderTest exten
     assertEquals(0, progress[0].getCompleted());
     assertTrue(cr.hasNext());
 
-    new JCasIterable(cr).next();
+    new JCasIterator(cr).next();
     progress = cr.getProgress();
     assertEquals(1, progress.length);
     assertEquals(1, progress[0].getCompleted());
@@ -80,7 +80,7 @@ public class SingleFileXReaderTest exten
             SingleFileXReader.PARAM_FILE_NAME, "test/data/docs/test.xcas");
     UnsupportedOperationException uoe = null;
     try {
-      new JCasIterable(cr).iterator().remove();
+      new JCasIterator(cr).remove();
     } catch (UnsupportedOperationException e) {
       uoe = e;
     }
@@ -93,7 +93,7 @@ public class SingleFileXReaderTest exten
             SingleFileXReader.PARAM_FILE_NAME, "test/data/docs/bad.xcas");
     RuntimeException re = null;
     try {
-      new JCasIterable(cr).next();
+      new JCasIterator(cr).next();
     } catch (RuntimeException e) {
       re = e;
     }
@@ -105,7 +105,7 @@ public class SingleFileXReaderTest exten
             SingleFileXReader.PARAM_FILE_NAME, "test/data/docs/dne.xmi");
     re = null;
     try {
-      JCasIterable jCases = new JCasIterable(cr);
+      JCasIterator jCases = new JCasIterator(cr);
       assertTrue(jCases.hasNext());
       jCases.next();
     } catch (RuntimeException e) {

Modified: uima/sandbox/uimafit/trunk/uimafit/src/main/java/org/apache/uima/fit/pipeline/JCasIterable.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uimafit/trunk/uimafit/src/main/java/org/apache/uima/fit/pipeline/JCasIterable.java?rev=1510145&r1=1510144&r2=1510145&view=diff
==============================================================================
--- uima/sandbox/uimafit/trunk/uimafit/src/main/java/org/apache/uima/fit/pipeline/JCasIterable.java (original)
+++ uima/sandbox/uimafit/trunk/uimafit/src/main/java/org/apache/uima/fit/pipeline/JCasIterable.java Sun Aug  4 12:10:30 2013
@@ -23,24 +23,11 @@ import static org.apache.uima.fit.factor
 import static org.apache.uima.fit.factory.CollectionReaderFactory.createReader;
 
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
 
 import org.apache.uima.UIMAException;
-import org.apache.uima.analysis_engine.AnalysisEngine;
 import org.apache.uima.analysis_engine.AnalysisEngineDescription;
-import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
-import org.apache.uima.collection.CollectionException;
-import org.apache.uima.collection.CollectionReader;
 import org.apache.uima.collection.CollectionReaderDescription;
-import org.apache.uima.fit.component.NoOpAnnotator;
-import org.apache.uima.fit.factory.AnalysisEngineFactory;
-import org.apache.uima.fit.util.LifeCycleUtil;
 import org.apache.uima.jcas.JCas;
-import org.apache.uima.resource.metadata.ResourceMetaData;
-import org.apache.uima.resource.metadata.TypeSystemDescription;
-import org.apache.uima.util.CasCreationUtils;
 
 /**
  * A class implementing iteration over a the documents of a collection. Each element in the Iterable
@@ -48,55 +35,17 @@ import org.apache.uima.util.CasCreationU
  * and processed by the AnalysisEngine (if any).
  * 
  */
-public class JCasIterable implements Iterator<JCas>, Iterable<JCas> {
+public class JCasIterable implements Iterable<JCas> {
 
-  private CollectionReader collectionReader;
+  private final CollectionReaderDescription reader;
 
-  private AnalysisEngine[] analysisEngines;
-
-  private JCas jCas;
-  
-  private boolean selfComplete = false;
-  
-  private boolean selfDestroy = false;
-
-  /**
-   * Iterate over the documents loaded by the CollectionReader. (Uses an JCasAnnotatorAdapter to
-   * create the document JCas.) By default, components get no lifecycle events, such as 
-   * collectionProcessComplete or destroy when this constructor is used.
-   * 
-   * @param aReader
-   *          The CollectionReader for loading documents.
-   * @param aTypeSystemDescription
-   *          a type system description
-   */
-  public JCasIterable(final CollectionReader aReader,
-          final TypeSystemDescription aTypeSystemDescription) throws UIMAException, IOException {
-    this(aReader, AnalysisEngineFactory.createEngine(NoOpAnnotator.class, aTypeSystemDescription));
-  }
-
-  /**
-   * Iterate over the documents loaded by the CollectionReader, running the AnalysisEngine on each
-   * one before yielding them. By default, components get no lifecycle events, such as 
-   * collectionProcessComplete or destroy when this constructor is used.
-   * 
-   * @param aReader
-   *          The CollectionReader for loading documents.
-   * @param aEngines
-   *          The AnalysisEngines for processing documents.
-   */
-  public JCasIterable(final CollectionReader aReader, final AnalysisEngine... aEngines)
-          throws UIMAException, IOException {
-    collectionReader = aReader;
-    analysisEngines = aEngines;
-    jCas = CasCreationUtils.createCas(collectMetaData()).getJCas();
-  }
+  private final AnalysisEngineDescription[] engines;
 
   /**
    * Iterate over the documents loaded by the CollectionReader, running the AnalysisEngine on each
    * one before yielding them. When created with this constructor, analysis engines by default
-   * receive a collectionProcessComplete call when all documents have been read from the reader
-   * and all components get destroyed.
+   * receive a collectionProcessComplete call when all documents have been read from the reader and
+   * all components get destroyed.
    * 
    * @param aReader
    *          The CollectionReader for loading documents.
@@ -104,114 +53,22 @@ public class JCasIterable implements Ite
    *          The AnalysisEngines for processing documents.
    */
   public JCasIterable(final CollectionReaderDescription aReader,
-          final AnalysisEngineDescription... aEngines) throws UIMAException, IOException {
-    setSelfComplete(true);
-    setSelfDestroy(true);
-    collectionReader = createReader(aReader);
-    analysisEngines = new AnalysisEngine[] { createEngine(createEngineDescription(aEngines)) };
-    jCas = CasCreationUtils.createCas(collectMetaData()).getJCas();
-  }
-  
-  private List<ResourceMetaData> collectMetaData() {
-    final List<ResourceMetaData> metaData = new ArrayList<ResourceMetaData>();
-    metaData.add(collectionReader.getMetaData());
-    for (AnalysisEngine engine : analysisEngines) {
-      metaData.add(engine.getMetaData());
-    }
-    return metaData;
-  }
-
-  public Iterator<JCas> iterator() {
-    return this;
+          final AnalysisEngineDescription... aEngines) {
+    reader = aReader;
+    engines = aEngines;
   }
 
-  public boolean hasNext() {
+  public JCasIterator iterator() {
     try {
-      return collectionReader.hasNext();
-    } catch (CollectionException e) {
-      throw new IllegalStateException(e);
+      JCasIterator i = new JCasIterator(createReader(reader),
+              createEngine(createEngineDescription(engines)));
+      i.setSelfComplete(true);
+      i.setSelfDestroy(true);
+      return i;
     } catch (IOException e) {
       throw new IllegalStateException(e);
-    }
-    finally {
-      if (selfDestroy) {
-        destroy();
-      }
-    }
-  }
-
-  public JCas next() {
-    jCas.reset();
-    boolean error = true;
-    boolean destroyed = false;
-    try {
-      collectionReader.getNext(jCas.getCas());
-      for (AnalysisEngine engine : analysisEngines) {
-        engine.process(jCas);
-      }
-
-      if (!hasNext() && selfComplete) {
-        collectionProcessComplete();
-      }
-
-      if (!hasNext() && selfDestroy) {
-        destroy();
-        destroyed = true;
-      }
-
-      error = false;
-    } catch (CollectionException e) {
-      throw new IllegalStateException(e);
-    } catch (IOException e) {
+    } catch (UIMAException e) {
       throw new IllegalStateException(e);
-    } catch (AnalysisEngineProcessException e) {
-      throw new IllegalStateException(e);
-    }
-    finally {
-      if (error && selfDestroy && !destroyed) {
-        destroy();
-      }
     }
-    
-    return jCas;
-  }
-
-  public void remove() {
-    throw new UnsupportedOperationException();
-  }
-  
-  public void collectionProcessComplete() throws AnalysisEngineProcessException
-  {
-    LifeCycleUtil.collectionProcessComplete(analysisEngines);
-  }
-  
-  public void destroy() {
-    LifeCycleUtil.close(collectionReader);
-    LifeCycleUtil.destroy(collectionReader);
-    LifeCycleUtil.destroy(analysisEngines);
-  }
-
-  public boolean isSelfComplete() {
-    return selfComplete;
-  }
-
-  /**
-   * Send a collectionProcessComplete call to analysis engines when the reader has no further
-   * CASes to produce.
-   */
-  public void setSelfComplete(boolean aSelfComplete) {
-    selfComplete = aSelfComplete;
-  }
-
-  public boolean isSelfDestroy() {
-    return selfDestroy;
-  }
-
-  /**
-   * Send a destroy call to analysis engines when the reader has no further CASes to produce or
-   * if an error occurs.
-   */
-  public void setSelfDestroy(boolean aSelfDestroy) {
-    selfDestroy = aSelfDestroy;
   }
 }

Added: uima/sandbox/uimafit/trunk/uimafit/src/main/java/org/apache/uima/fit/pipeline/JCasIterator.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uimafit/trunk/uimafit/src/main/java/org/apache/uima/fit/pipeline/JCasIterator.java?rev=1510145&view=auto
==============================================================================
--- uima/sandbox/uimafit/trunk/uimafit/src/main/java/org/apache/uima/fit/pipeline/JCasIterator.java (added)
+++ uima/sandbox/uimafit/trunk/uimafit/src/main/java/org/apache/uima/fit/pipeline/JCasIterator.java Sun Aug  4 12:10:30 2013
@@ -0,0 +1,185 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.uima.fit.pipeline;
+
+import static org.apache.uima.fit.factory.AnalysisEngineFactory.createEngine;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import org.apache.uima.UIMAException;
+import org.apache.uima.analysis_engine.AnalysisEngine;
+import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
+import org.apache.uima.collection.CollectionException;
+import org.apache.uima.collection.CollectionReader;
+import org.apache.uima.fit.component.NoOpAnnotator;
+import org.apache.uima.fit.util.LifeCycleUtil;
+import org.apache.uima.jcas.JCas;
+import org.apache.uima.resource.metadata.MetaDataObject;
+import org.apache.uima.resource.metadata.TypeSystemDescription;
+import org.apache.uima.util.CasCreationUtils;
+
+/**
+ * A class implementing iteration over a the documents of a collection. Each element in the Iterable
+ * is a JCas containing a single document. The documents have been loaded by the CollectionReader
+ * and processed by the AnalysisEngine (if any).
+ * 
+ */
+public class JCasIterator implements Iterator<JCas> {
+
+  private final CollectionReader collectionReader;
+
+  private final AnalysisEngine[] analysisEngines;
+
+  private final JCas jCas;
+  
+  private boolean selfComplete = false;
+  
+  private boolean selfDestroy = false;
+
+  /**
+   * Iterate over the documents loaded by the CollectionReader, running the AnalysisEngine on each
+   * one before yielding them. By default, components get no lifecycle events, such as 
+   * collectionProcessComplete or destroy when this constructor is used.
+   * 
+   * @param aReader
+   *          The CollectionReader for loading documents.
+   * @param aEngines
+   *          The AnalysisEngines for processing documents.
+   */
+  public JCasIterator(final CollectionReader aReader, final AnalysisEngine... aEngines)
+          throws UIMAException, IOException {
+    collectionReader = aReader;
+    analysisEngines = aEngines;
+    
+    Collection<MetaDataObject> metaData = new ArrayList<MetaDataObject>();
+    metaData.add(aReader.getProcessingResourceMetaData());
+    for (AnalysisEngine ae : aEngines) {
+      metaData.add(ae.getProcessingResourceMetaData());
+    }
+    
+    jCas = CasCreationUtils.createCas(metaData).getJCas();
+  }
+
+  /**
+   * Iterate over the documents loaded by the CollectionReader. (Uses an JCasAnnotatorAdapter to
+   * create the document JCas.) By default, components get no lifecycle events, such as 
+   * collectionProcessComplete or destroy when this constructor is used.
+   * 
+   * @param aReader
+   *          The CollectionReader for loading documents.
+   * @param aTypeSystemDescription
+   *          a type system description
+   */
+  public JCasIterator(final CollectionReader aReader,
+          final TypeSystemDescription aTypeSystemDescription) throws UIMAException, IOException {
+    this(aReader, createEngine(NoOpAnnotator.class, aTypeSystemDescription));
+  }
+
+  public boolean hasNext() {
+    try {
+      return collectionReader.hasNext();
+    } catch (CollectionException e) {
+      throw new IllegalStateException(e);
+    } catch (IOException e) {
+      throw new IllegalStateException(e);
+    }
+    finally {
+      if (selfDestroy) {
+        destroy();
+      }
+    }
+  }
+
+  public JCas next() {
+    jCas.reset();
+    boolean error = true;
+    boolean destroyed = false;
+    try {
+      collectionReader.getNext(jCas.getCas());
+      for (AnalysisEngine engine : analysisEngines) {
+        engine.process(jCas);
+      }
+
+      if (!hasNext() && selfComplete) {
+        collectionProcessComplete();
+      }
+
+      if (!hasNext() && selfDestroy) {
+        destroy();
+        destroyed = true;
+      }
+
+      error = false;
+    } catch (CollectionException e) {
+      throw new IllegalStateException(e);
+    } catch (IOException e) {
+      throw new IllegalStateException(e);
+    } catch (AnalysisEngineProcessException e) {
+      throw new IllegalStateException(e);
+    }
+    finally {
+      if (error && selfDestroy && !destroyed) {
+        destroy();
+      }
+    }
+    
+    return jCas;
+  }
+
+  public void remove() {
+    throw new UnsupportedOperationException();
+  }
+  
+  public void collectionProcessComplete() throws AnalysisEngineProcessException
+  {
+    LifeCycleUtil.collectionProcessComplete(analysisEngines);
+  }
+  
+  public void destroy() {
+    LifeCycleUtil.close(collectionReader);
+    LifeCycleUtil.destroy(collectionReader);
+    LifeCycleUtil.destroy(analysisEngines);
+  }
+
+  public boolean isSelfComplete() {
+    return selfComplete;
+  }
+
+  /**
+   * Send a collectionProcessComplete call to analysis engines when the reader has no further
+   * CASes to produce.
+   */
+  public void setSelfComplete(boolean aSelfComplete) {
+    selfComplete = aSelfComplete;
+  }
+
+  public boolean isSelfDestroy() {
+    return selfDestroy;
+  }
+
+  /**
+   * Send a destroy call to analysis engines when the reader has no further CASes to produce or
+   * if an error occurs.
+   */
+  public void setSelfDestroy(boolean aSelfDestroy) {
+    selfDestroy = aSelfDestroy;
+  }
+}

Propchange: uima/sandbox/uimafit/trunk/uimafit/src/main/java/org/apache/uima/fit/pipeline/JCasIterator.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: uima/sandbox/uimafit/trunk/uimafit/src/main/java/org/apache/uima/fit/pipeline/SimplePipeline.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uimafit/trunk/uimafit/src/main/java/org/apache/uima/fit/pipeline/SimplePipeline.java?rev=1510145&r1=1510144&r2=1510145&view=diff
==============================================================================
--- uima/sandbox/uimafit/trunk/uimafit/src/main/java/org/apache/uima/fit/pipeline/SimplePipeline.java (original)
+++ uima/sandbox/uimafit/trunk/uimafit/src/main/java/org/apache/uima/fit/pipeline/SimplePipeline.java Sun Aug  4 12:10:30 2013
@@ -73,7 +73,7 @@ public final class SimplePipeline {
     // Create CAS from merged metadata
     final CAS cas = CasCreationUtils.createCas(asList(reader.getMetaData(), aae.getMetaData()));
     reader.typeSystemInit(cas.getTypeSystem());
-    
+
     try {
       // Process
       while (reader.hasNext()) {
@@ -134,7 +134,7 @@ public final class SimplePipeline {
     for (AnalysisEngine engine : engines) {
       metaData.add(engine.getMetaData());
     }
-    
+
     final CAS cas = CasCreationUtils.createCas(metaData);
     reader.typeSystemInit(cas.getTypeSystem());
 
@@ -222,4 +222,19 @@ public final class SimplePipeline {
       engine.process(cas);
     }
   }
+
+  /**
+   * Step through the {@link JCas JCases} processed by the pipeline, allowing to access each one
+   * after it has been processed.
+   * 
+   * @param aReader
+   *          the collection reader.
+   * @param aEngines
+   *          the analysis engines.
+   * @return an {@link Iterable}&lt;{@link JCas}&gt; which can be used in an extended for-loop.
+   */
+  public static JCasIterable stepPipeline(final CollectionReaderDescription aReader,
+          AnalysisEngineDescription... aEngines) {
+    return new JCasIterable(aReader, aEngines);
+  }
 }

Modified: uima/sandbox/uimafit/trunk/uimafit/src/test/java/org/apache/uima/fit/factory/CollectionReaderFactoryTest.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uimafit/trunk/uimafit/src/test/java/org/apache/uima/fit/factory/CollectionReaderFactoryTest.java?rev=1510145&r1=1510144&r2=1510145&view=diff
==============================================================================
--- uima/sandbox/uimafit/trunk/uimafit/src/test/java/org/apache/uima/fit/factory/CollectionReaderFactoryTest.java (original)
+++ uima/sandbox/uimafit/trunk/uimafit/src/test/java/org/apache/uima/fit/factory/CollectionReaderFactoryTest.java Sun Aug  4 12:10:30 2013
@@ -32,7 +32,7 @@ import org.apache.uima.collection.Collec
 import org.apache.uima.fit.ComponentTestBase;
 import org.apache.uima.fit.descriptor.ResourceMetaData;
 import org.apache.uima.fit.factory.testCrs.SingleFileXReader;
-import org.apache.uima.fit.pipeline.JCasIterable;
+import org.apache.uima.fit.pipeline.JCasIterator;
 import org.apache.uima.fit.type.Token;
 import org.apache.uima.fit.util.JCasUtil;
 import org.apache.uima.resource.ResourceInitializationException;
@@ -52,8 +52,8 @@ public class CollectionReaderFactoryTest
             "src/test/resources/data/docs/test.xmi", SingleFileXReader.PARAM_XML_SCHEME,
             SingleFileXReader.XMI);
 
-    JCasIterable jCasIterable = new JCasIterable(reader, typeSystemDescription);
-    jCas = jCasIterable.next();
+    JCasIterator jCasIterator = new JCasIterator(reader, typeSystemDescription);
+    jCas = jCasIterator.next();
     assertNotNull(jCas);
     assertEquals("Me and all my friends are non-conformists.", jCas.getDocumentText());
     Token token = JCasUtil.selectByIndex(jCas, Token.class, 2);
@@ -66,8 +66,8 @@ public class CollectionReaderFactoryTest
             SingleFileXReader.PARAM_FILE_NAME, "src/test/resources/data/docs/test.xmi",
             SingleFileXReader.PARAM_XML_SCHEME, SingleFileXReader.XMI);
 
-    jCasIterable = new JCasIterable(reader, typeSystemDescription);
-    jCas = jCasIterable.next();
+    jCasIterator = new JCasIterator(reader, typeSystemDescription);
+    jCas = jCasIterator.next();
     assertNotNull(jCas);
     assertEquals("Me and all my friends are non-conformists.", jCas.getDocumentText());
     token = JCasUtil.selectByIndex(jCas, Token.class, 9);
@@ -80,8 +80,8 @@ public class CollectionReaderFactoryTest
             SingleFileXReader.PARAM_FILE_NAME, "src/test/resources/data/docs/test.xmi",
             SingleFileXReader.PARAM_XML_SCHEME, SingleFileXReader.XMI);
 
-    jCasIterable = new JCasIterable(reader, typeSystemDescription);
-    jCas = jCasIterable.next();
+    jCasIterator = new JCasIterator(reader, typeSystemDescription);
+    jCas = jCasIterator.next();
     assertNotNull(jCas);
     assertEquals("Me and all my friends are non-conformists.", jCas.getDocumentText());
     token = JCasUtil.selectByIndex(jCas, Token.class, 4);

Modified: uima/sandbox/uimafit/trunk/uimafit/src/test/java/org/apache/uima/fit/factory/testCrs/SingleFileXReaderTest.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uimafit/trunk/uimafit/src/test/java/org/apache/uima/fit/factory/testCrs/SingleFileXReaderTest.java?rev=1510145&r1=1510144&r2=1510145&view=diff
==============================================================================
--- uima/sandbox/uimafit/trunk/uimafit/src/test/java/org/apache/uima/fit/factory/testCrs/SingleFileXReaderTest.java (original)
+++ uima/sandbox/uimafit/trunk/uimafit/src/test/java/org/apache/uima/fit/factory/testCrs/SingleFileXReaderTest.java Sun Aug  4 12:10:30 2013
@@ -28,7 +28,7 @@ import org.apache.uima.UIMAException;
 import org.apache.uima.collection.CollectionReader;
 import org.apache.uima.fit.ComponentTestBase;
 import org.apache.uima.fit.factory.CollectionReaderFactory;
-import org.apache.uima.fit.pipeline.JCasIterable;
+import org.apache.uima.fit.pipeline.JCasIterator;
 import org.apache.uima.fit.testing.util.HideOutput;
 import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.util.Progress;
@@ -68,7 +68,7 @@ public class SingleFileXReaderTest exten
     assertEquals(0, progress[0].getCompleted());
     assertTrue(cr.hasNext());
 
-    new JCasIterable(cr).next();
+    new JCasIterator(cr).next();
     progress = cr.getProgress();
     assertEquals(1, progress.length);
     assertEquals(1, progress[0].getCompleted());
@@ -80,7 +80,7 @@ public class SingleFileXReaderTest exten
             SingleFileXReader.PARAM_FILE_NAME, "test/data/docs/test.xcas");
     UnsupportedOperationException uoe = null;
     try {
-      new JCasIterable(cr).iterator().remove();
+      new JCasIterator(cr).remove();
     } catch (UnsupportedOperationException e) {
       uoe = e;
     }
@@ -93,7 +93,7 @@ public class SingleFileXReaderTest exten
             SingleFileXReader.PARAM_FILE_NAME, "test/data/docs/bad.xcas");
     RuntimeException re = null;
     try {
-      new JCasIterable(cr).next();
+      new JCasIterator(cr).next();
     } catch (RuntimeException e) {
       re = e;
     }
@@ -105,7 +105,7 @@ public class SingleFileXReaderTest exten
             SingleFileXReader.PARAM_FILE_NAME, "test/data/docs/dne.xmi");
     re = null;
     try {
-      JCasIterable jCases = new JCasIterable(cr);
+      JCasIterator jCases = new JCasIterator(cr);
       assertTrue(jCases.hasNext());
       jCases.next();
     } catch (RuntimeException e) {

Modified: uima/sandbox/uimafit/trunk/uimafit/src/test/java/org/apache/uima/fit/pipeline/JCasIterableTest.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uimafit/trunk/uimafit/src/test/java/org/apache/uima/fit/pipeline/JCasIterableTest.java?rev=1510145&r1=1510144&r2=1510145&view=diff
==============================================================================
--- uima/sandbox/uimafit/trunk/uimafit/src/test/java/org/apache/uima/fit/pipeline/JCasIterableTest.java (original)
+++ uima/sandbox/uimafit/trunk/uimafit/src/test/java/org/apache/uima/fit/pipeline/JCasIterableTest.java Sun Aug  4 12:10:30 2013
@@ -18,6 +18,7 @@
  */
 package org.apache.uima.fit.pipeline;
 
+import static org.apache.uima.fit.pipeline.SimplePipeline.*;
 import static org.apache.uima.fit.factory.AnalysisEngineFactory.createEngineDescription;
 import static org.apache.uima.fit.factory.CollectionReaderFactory.createReaderDescription;
 import static org.junit.Assert.assertEquals;
@@ -40,7 +41,7 @@ public class JCasIterableTest {
 
   @Test
   public void test() throws Exception {
-    for (JCas jcas : new JCasIterable(createReaderDescription(ThreeDocsReader.class),
+    for (JCas jcas : stepPipeline(createReaderDescription(ThreeDocsReader.class),
             createEngineDescription(GetTextAE.class))) {
       System.out.println(jcas.getDocumentText());
     }