Modified: 
uima/sandbox/uimafit/trunk/uimafit/src/test/java/org/apache/uima/fit/factory/AggregateBuilderTest.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uimafit/trunk/uimafit/src/test/java/org/apache/uima/fit/factory/AggregateBuilderTest.java?rev=1431721&r1=1431720&r2=1431721&view=diff
==============================================================================
--- 
uima/sandbox/uimafit/trunk/uimafit/src/test/java/org/apache/uima/fit/factory/AggregateBuilderTest.java
 (original)
+++ 
uima/sandbox/uimafit/trunk/uimafit/src/test/java/org/apache/uima/fit/factory/AggregateBuilderTest.java
 Thu Jan 10 23:12:33 2013
@@ -45,164 +45,163 @@ import org.junit.Test;
  */
 public class AggregateBuilderTest extends ComponentTestBase {
 
-       @Test
-       public void testAggregateBuilder() throws UIMAException, IOException {
-               tokenBuilder.buildTokens(jCas, "Anyone up for a game of 
Foosball?");
-
-               AggregateBuilder builder = new AggregateBuilder();
-               
builder.add(AnalysisEngineFactory.createPrimitiveDescription(Annotator1.class,
-                               typeSystemDescription), 
ViewNames.PARENTHESES_VIEW, "A");
-               
builder.add(AnalysisEngineFactory.createPrimitiveDescription(Annotator2.class,
-                               typeSystemDescription), ViewNames.SORTED_VIEW, 
"B",
-                               ViewNames.SORTED_PARENTHESES_VIEW, "C", 
ViewNames.PARENTHESES_VIEW, "A");
-               
builder.add(AnalysisEngineFactory.createPrimitiveDescription(Annotator3.class,
-                               typeSystemDescription), ViewNames.INITIAL_VIEW, 
"B");
-               AnalysisEngine aggregateEngine = builder.createAggregate();
-
-               aggregateEngine.process(jCas);
-
-               assertEquals("Anyone up for a game of Foosball?", 
jCas.getDocumentText());
-               assertEquals("Any(o)n(e) (u)p f(o)r (a) g(a)m(e) (o)f 
F(oo)sb(a)ll?", jCas.getView("A")
-                               .getDocumentText());
-               assertEquals("?AFaaabeeffgllmnnoooooprsuy", 
jCas.getView("B").getDocumentText());
-               assertEquals("(((((((((())))))))))?AFaaabeeffgllmnnoooooprsuy", 
jCas.getView("C")
-                               .getDocumentText());
-               assertEquals("yusrpooooonnmllgffeebaaaFA?", 
jCas.getView(ViewNames.REVERSE_VIEW)
-                               .getDocumentText());
-
-               JCasFactory.loadJCas(jCas, 
"src/test/resources/data/docs/test.xmi");
-               AnalysisEngine ae1 = 
AnalysisEngineFactory.createPrimitive(NoOpAnnotator.class,
-                               typeSystemDescription);
-
-               SimplePipeline.runPipeline(jCas, ae1, aggregateEngine);
-
-               AnalysisEngineDescription aggregateDescription = 
builder.createAggregateDescription();
-               builder = new AggregateBuilder();
-               builder.add(aggregateDescription);
-               
builder.add(AnalysisEngineFactory.createPrimitiveDescription(Annotator1.class,
-                               typeSystemDescription), 
ViewNames.PARENTHESES_VIEW, "PARENS");
-               aggregateEngine = builder.createAggregate();
-
-               jCas.reset();
-
-               tokenBuilder.buildTokens(jCas, "Anyone up for a game of 
Foosball?");
-
-               aggregateEngine.process(jCas);
-
-               assertEquals("Anyone up for a game of Foosball?", 
jCas.getDocumentText());
-               assertEquals("Any(o)n(e) (u)p f(o)r (a) g(a)m(e) (o)f 
F(oo)sb(a)ll?", jCas.getView("A")
-                               .getDocumentText());
-               assertEquals("?AFaaabeeffgllmnnoooooprsuy", 
jCas.getView("B").getDocumentText());
-               assertEquals("(((((((((())))))))))?AFaaabeeffgllmnnoooooprsuy", 
jCas.getView("C")
-                               .getDocumentText());
-               assertEquals("yusrpooooonnmllgffeebaaaFA?", 
jCas.getView(ViewNames.REVERSE_VIEW)
-                               .getDocumentText());
-               assertEquals("Any(o)n(e) (u)p f(o)r (a) g(a)m(e) (o)f 
F(oo)sb(a)ll?", jCas
-                               .getView("PARENS").getDocumentText());
-
-       }
-
-       @Test
-       public void testAggregateBuilder2() throws UIMAException {
-               tokenBuilder.buildTokens(jCas, "'Verb' is a noun!?");
-
-               AggregateBuilder builder = new AggregateBuilder();
-               String componentName1 = 
builder.add(AnalysisEngineFactory.createPrimitiveDescription(
-                               Annotator1.class, typeSystemDescription));
-               String componentName2 = 
builder.add(AnalysisEngineFactory.createPrimitiveDescription(
-                               Annotator1.class, typeSystemDescription));
-               String componentName3 = 
builder.add(AnalysisEngineFactory.createPrimitiveDescription(
-                               Annotator1.class, typeSystemDescription));
-
-               assertEquals("org.apache.uima.fit.factory.testAes.Annotator1", 
componentName1);
-               
assertEquals("org.apache.uima.fit.factory.testAes.Annotator1.2", 
componentName2);
-               
assertEquals("org.apache.uima.fit.factory.testAes.Annotator1.3", 
componentName3);
-
-               builder.addSofaMapping(componentName1, 
ViewNames.PARENTHESES_VIEW, "A");
-               builder.addSofaMapping(componentName2, 
ViewNames.PARENTHESES_VIEW, "B");
-               builder.addSofaMapping(componentName3, 
ViewNames.PARENTHESES_VIEW, "C");
-               AnalysisEngineDescription aggregateEngineDescription = 
builder.createAggregateDescription();
-
-               AnalysisEngine aggregateEngine = AnalysisEngineFactory
-                               .createAggregate(aggregateEngineDescription);
-
-               aggregateEngine.process(jCas);
-
-               assertEquals("'Verb' is a noun!?", jCas.getDocumentText());
-               assertEquals("'V(e)rb' (i)s (a) n(ou)n!?", 
jCas.getView("A").getDocumentText());
-               assertEquals("'V(e)rb' (i)s (a) n(ou)n!?", 
jCas.getView("B").getDocumentText());
-               assertEquals("'V(e)rb' (i)s (a) n(ou)n!?", 
jCas.getView("C").getDocumentText());
-
-       }
-
-       @Test(expected = IllegalArgumentException.class)
-       public void testOddNumberOfViewNames() throws 
ResourceInitializationException {
-               AggregateBuilder builder = new AggregateBuilder();
-               
builder.add(AnalysisEngineFactory.createPrimitiveDescription(Annotator1.class,
-                               typeSystemDescription), 
ViewNames.PARENTHESES_VIEW);
-       }
-
-       @Test(expected = IllegalArgumentException.class)
-       public void testDuplicateComponentNames() throws 
ResourceInitializationException {
-               AggregateBuilder builder = new AggregateBuilder();
-               builder.add("name", 
AnalysisEngineFactory.createPrimitiveDescription(Annotator1.class,
-                               typeSystemDescription));
-               builder.add("name", 
AnalysisEngineFactory.createPrimitiveDescription(Annotator1.class,
-                               typeSystemDescription));
-       }
-
-       @Test(expected = IllegalArgumentException.class)
-       public void testBadSofaMapping() {
-               AggregateBuilder builder = new AggregateBuilder();
-               builder.addSofaMapping("name", ViewNames.PARENTHESES_VIEW, "A");
-       }
-
-       @Test
-       public void testAggregateBuilderWithFlowController() throws 
UIMAException {
-               tokenBuilder.buildTokens(jCas, "An honest man can never 
surrender an honest doubt.");
-
-               AggregateBuilder builder = new AggregateBuilder();
-               
builder.add(AnalysisEngineFactory.createPrimitiveDescription(FlowAE1.class,
-                               typeSystemDescription));
-               
builder.add(AnalysisEngineFactory.createPrimitiveDescription(FlowAE2.class,
-                               typeSystemDescription));
-               
builder.add(AnalysisEngineFactory.createPrimitiveDescription(FlowAE3.class,
-                               typeSystemDescription));
-
-               FlowControllerDescription fcd = FlowControllerFactory
-                               
.createFlowControllerDescription(ReversableTestFlowController.class);
-               builder.setFlowControllerDescription(fcd);
-               AnalysisEngine aggregateEngine = builder.createAggregate();
-               aggregateEngine.process(jCas);
-
-               String text = "An honest man can never surrender an honest 
doubt.";
-               text = text.replaceAll("[aeiou]+", "($0)"); // this is what 
FlowAE1 does
-               text = FlowAE2.sort(text);
-               text = FlowAE3.reverse(text);
-
-               assertEquals(text, TypeSystemUtil.getAnalyzedText(jCas));
-               
assertEquals("vuutttsssrrrrooonnnnnnnnmhheeeeeeddcbaaaA.)))))))))))))(((((((((((((",
-                               TypeSystemUtil.getAnalyzedText(jCas));
-
-               fcd = FlowControllerFactory.createFlowControllerDescription(
-                               ReversableTestFlowController.class,
-                               
ReversableTestFlowController.PARAM_REVERSE_ORDER, true);
-               builder.setFlowControllerDescription(fcd);
-               aggregateEngine = builder.createAggregate();
-
-               jCas.reset();
-               tokenBuilder.buildTokens(jCas, "An honest man can never 
surrender an honest doubt.");
-               aggregateEngine.process(jCas);
-
-               text = "An honest man can never surrender an honest doubt.";
-               text = FlowAE3.reverse(text);
-               text = FlowAE2.sort(text);
-               text = text.replaceAll("[aeiou]+", "($0)"); // this is what 
FlowAE1 does
-
-               assertEquals(text, TypeSystemUtil.getAnalyzedText(jCas));
-               
assertEquals(".A(aaa)bcdd(eeeeee)hhmnnnnnnnn(ooo)rrrrsssttt(uu)v",
-                               TypeSystemUtil.getAnalyzedText(jCas));
+  @Test
+  public void testAggregateBuilder() throws UIMAException, IOException {
+    tokenBuilder.buildTokens(jCas, "Anyone up for a game of Foosball?");
+
+    AggregateBuilder builder = new AggregateBuilder();
+    
builder.add(AnalysisEngineFactory.createPrimitiveDescription(Annotator1.class,
+            typeSystemDescription), ViewNames.PARENTHESES_VIEW, "A");
+    
builder.add(AnalysisEngineFactory.createPrimitiveDescription(Annotator2.class,
+            typeSystemDescription), ViewNames.SORTED_VIEW, "B", 
ViewNames.SORTED_PARENTHESES_VIEW,
+            "C", ViewNames.PARENTHESES_VIEW, "A");
+    
builder.add(AnalysisEngineFactory.createPrimitiveDescription(Annotator3.class,
+            typeSystemDescription), ViewNames.INITIAL_VIEW, "B");
+    AnalysisEngine aggregateEngine = builder.createAggregate();
+
+    aggregateEngine.process(jCas);
+
+    assertEquals("Anyone up for a game of Foosball?", jCas.getDocumentText());
+    assertEquals("Any(o)n(e) (u)p f(o)r (a) g(a)m(e) (o)f F(oo)sb(a)ll?", 
jCas.getView("A")
+            .getDocumentText());
+    assertEquals("?AFaaabeeffgllmnnoooooprsuy", 
jCas.getView("B").getDocumentText());
+    assertEquals("(((((((((())))))))))?AFaaabeeffgllmnnoooooprsuy", 
jCas.getView("C")
+            .getDocumentText());
+    assertEquals("yusrpooooonnmllgffeebaaaFA?", 
jCas.getView(ViewNames.REVERSE_VIEW)
+            .getDocumentText());
+
+    JCasFactory.loadJCas(jCas, "src/test/resources/data/docs/test.xmi");
+    AnalysisEngine ae1 = 
AnalysisEngineFactory.createPrimitive(NoOpAnnotator.class,
+            typeSystemDescription);
+
+    SimplePipeline.runPipeline(jCas, ae1, aggregateEngine);
+
+    AnalysisEngineDescription aggregateDescription = 
builder.createAggregateDescription();
+    builder = new AggregateBuilder();
+    builder.add(aggregateDescription);
+    
builder.add(AnalysisEngineFactory.createPrimitiveDescription(Annotator1.class,
+            typeSystemDescription), ViewNames.PARENTHESES_VIEW, "PARENS");
+    aggregateEngine = builder.createAggregate();
+
+    jCas.reset();
+
+    tokenBuilder.buildTokens(jCas, "Anyone up for a game of Foosball?");
+
+    aggregateEngine.process(jCas);
+
+    assertEquals("Anyone up for a game of Foosball?", jCas.getDocumentText());
+    assertEquals("Any(o)n(e) (u)p f(o)r (a) g(a)m(e) (o)f F(oo)sb(a)ll?", 
jCas.getView("A")
+            .getDocumentText());
+    assertEquals("?AFaaabeeffgllmnnoooooprsuy", 
jCas.getView("B").getDocumentText());
+    assertEquals("(((((((((())))))))))?AFaaabeeffgllmnnoooooprsuy", 
jCas.getView("C")
+            .getDocumentText());
+    assertEquals("yusrpooooonnmllgffeebaaaFA?", 
jCas.getView(ViewNames.REVERSE_VIEW)
+            .getDocumentText());
+    assertEquals("Any(o)n(e) (u)p f(o)r (a) g(a)m(e) (o)f F(oo)sb(a)ll?", 
jCas.getView("PARENS")
+            .getDocumentText());
+
+  }
+
+  @Test
+  public void testAggregateBuilder2() throws UIMAException {
+    tokenBuilder.buildTokens(jCas, "'Verb' is a noun!?");
+
+    AggregateBuilder builder = new AggregateBuilder();
+    String componentName1 = 
builder.add(AnalysisEngineFactory.createPrimitiveDescription(
+            Annotator1.class, typeSystemDescription));
+    String componentName2 = 
builder.add(AnalysisEngineFactory.createPrimitiveDescription(
+            Annotator1.class, typeSystemDescription));
+    String componentName3 = 
builder.add(AnalysisEngineFactory.createPrimitiveDescription(
+            Annotator1.class, typeSystemDescription));
+
+    assertEquals("org.apache.uima.fit.factory.testAes.Annotator1", 
componentName1);
+    assertEquals("org.apache.uima.fit.factory.testAes.Annotator1.2", 
componentName2);
+    assertEquals("org.apache.uima.fit.factory.testAes.Annotator1.3", 
componentName3);
+
+    builder.addSofaMapping(componentName1, ViewNames.PARENTHESES_VIEW, "A");
+    builder.addSofaMapping(componentName2, ViewNames.PARENTHESES_VIEW, "B");
+    builder.addSofaMapping(componentName3, ViewNames.PARENTHESES_VIEW, "C");
+    AnalysisEngineDescription aggregateEngineDescription = 
builder.createAggregateDescription();
+
+    AnalysisEngine aggregateEngine = AnalysisEngineFactory
+            .createAggregate(aggregateEngineDescription);
+
+    aggregateEngine.process(jCas);
+
+    assertEquals("'Verb' is a noun!?", jCas.getDocumentText());
+    assertEquals("'V(e)rb' (i)s (a) n(ou)n!?", 
jCas.getView("A").getDocumentText());
+    assertEquals("'V(e)rb' (i)s (a) n(ou)n!?", 
jCas.getView("B").getDocumentText());
+    assertEquals("'V(e)rb' (i)s (a) n(ou)n!?", 
jCas.getView("C").getDocumentText());
+
+  }
+
+  @Test(expected = IllegalArgumentException.class)
+  public void testOddNumberOfViewNames() throws 
ResourceInitializationException {
+    AggregateBuilder builder = new AggregateBuilder();
+    
builder.add(AnalysisEngineFactory.createPrimitiveDescription(Annotator1.class,
+            typeSystemDescription), ViewNames.PARENTHESES_VIEW);
+  }
+
+  @Test(expected = IllegalArgumentException.class)
+  public void testDuplicateComponentNames() throws 
ResourceInitializationException {
+    AggregateBuilder builder = new AggregateBuilder();
+    builder.add("name", 
AnalysisEngineFactory.createPrimitiveDescription(Annotator1.class,
+            typeSystemDescription));
+    builder.add("name", 
AnalysisEngineFactory.createPrimitiveDescription(Annotator1.class,
+            typeSystemDescription));
+  }
+
+  @Test(expected = IllegalArgumentException.class)
+  public void testBadSofaMapping() {
+    AggregateBuilder builder = new AggregateBuilder();
+    builder.addSofaMapping("name", ViewNames.PARENTHESES_VIEW, "A");
+  }
+
+  @Test
+  public void testAggregateBuilderWithFlowController() throws UIMAException {
+    tokenBuilder.buildTokens(jCas, "An honest man can never surrender an 
honest doubt.");
+
+    AggregateBuilder builder = new AggregateBuilder();
+    builder.add(AnalysisEngineFactory.createPrimitiveDescription(FlowAE1.class,
+            typeSystemDescription));
+    builder.add(AnalysisEngineFactory.createPrimitiveDescription(FlowAE2.class,
+            typeSystemDescription));
+    builder.add(AnalysisEngineFactory.createPrimitiveDescription(FlowAE3.class,
+            typeSystemDescription));
+
+    FlowControllerDescription fcd = FlowControllerFactory
+            
.createFlowControllerDescription(ReversableTestFlowController.class);
+    builder.setFlowControllerDescription(fcd);
+    AnalysisEngine aggregateEngine = builder.createAggregate();
+    aggregateEngine.process(jCas);
+
+    String text = "An honest man can never surrender an honest doubt.";
+    text = text.replaceAll("[aeiou]+", "($0)"); // this is what FlowAE1 does
+    text = FlowAE2.sort(text);
+    text = FlowAE3.reverse(text);
+
+    assertEquals(text, TypeSystemUtil.getAnalyzedText(jCas));
+    
assertEquals("vuutttsssrrrrooonnnnnnnnmhheeeeeeddcbaaaA.)))))))))))))(((((((((((((",
+            TypeSystemUtil.getAnalyzedText(jCas));
+
+    fcd = 
FlowControllerFactory.createFlowControllerDescription(ReversableTestFlowController.class,
+            ReversableTestFlowController.PARAM_REVERSE_ORDER, true);
+    builder.setFlowControllerDescription(fcd);
+    aggregateEngine = builder.createAggregate();
+
+    jCas.reset();
+    tokenBuilder.buildTokens(jCas, "An honest man can never surrender an 
honest doubt.");
+    aggregateEngine.process(jCas);
+
+    text = "An honest man can never surrender an honest doubt.";
+    text = FlowAE3.reverse(text);
+    text = FlowAE2.sort(text);
+    text = text.replaceAll("[aeiou]+", "($0)"); // this is what FlowAE1 does
+
+    assertEquals(text, TypeSystemUtil.getAnalyzedText(jCas));
+    assertEquals(".A(aaa)bcdd(eeeeee)hhmnnnnnnnn(ooo)rrrrsssttt(uu)v",
+            TypeSystemUtil.getAnalyzedText(jCas));
 
-       }
+  }
 
 }

Modified: 
uima/sandbox/uimafit/trunk/uimafit/src/test/java/org/apache/uima/fit/factory/AggregateWithReaderTest.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uimafit/trunk/uimafit/src/test/java/org/apache/uima/fit/factory/AggregateWithReaderTest.java?rev=1431721&r1=1431720&r2=1431721&view=diff
==============================================================================
--- 
uima/sandbox/uimafit/trunk/uimafit/src/test/java/org/apache/uima/fit/factory/AggregateWithReaderTest.java
 (original)
+++ 
uima/sandbox/uimafit/trunk/uimafit/src/test/java/org/apache/uima/fit/factory/AggregateWithReaderTest.java
 Thu Jan 10 23:12:33 2013
@@ -39,158 +39,160 @@ import org.junit.Test;
 /**
  */
 public class AggregateWithReaderTest {
-       
-       /**
-        * Demo of running a collection reader as part of an aggregate engine. 
This allows to run
-        * a pipeline an access the output CASes directly - no need to write 
the data to files.
-        */
-       @Test
-       public void demoAggregateWithReader() throws UIMAException {
-               ResourceSpecifierFactory factory = 
UIMAFramework.getResourceSpecifierFactory();
-
-               CollectionReaderDescription reader = 
factory.createCollectionReaderDescription();
-               reader.getMetaData().setName("reader");
-               reader.setImplementationName(SimpleReader.class.getName());
-
-               AnalysisEngineDescription analyzer = 
factory.createAnalysisEngineDescription();
-               analyzer.getMetaData().setName("analyzer");
-               analyzer.setPrimitive(true);
-               analyzer.setImplementationName(SimpleAnalyzer.class.getName());
-
-               FixedFlow flow = factory.createFixedFlow();
-               flow.setFixedFlow(new String[] { "reader", "analyzer" });
-
-               AnalysisEngineDescription aggregate = 
factory.createAnalysisEngineDescription();
-               aggregate.getMetaData().setName("aggregate");
-               aggregate.getAnalysisEngineMetaData().setFlowConstraints(flow);
-               
aggregate.getAnalysisEngineMetaData().getOperationalProperties().setOutputsNewCASes(true);
-               aggregate.getAnalysisEngineMetaData().getOperationalProperties()
-                               .setMultipleDeploymentAllowed(false);
-               aggregate.setPrimitive(false);
-               
aggregate.getDelegateAnalysisEngineSpecifiersWithImports().put("reader", 
reader);
-               
aggregate.getDelegateAnalysisEngineSpecifiersWithImports().put("analyzer", 
analyzer);
-
-               AnalysisEngine pipeline = 
UIMAFramework.produceAnalysisEngine(aggregate);
-               CasIterator iterator = 
pipeline.processAndOutputNewCASes(pipeline.newCAS());
-               while (iterator.hasNext()) {
-                       CAS cas = iterator.next();
-                       System.out.printf("[%s] is [%s]%n", 
cas.getDocumentText(), cas.getDocumentLanguage());
-               }
-       }
-
-       /**
-        * Demo of disguising a reader as a CAS multiplier. This works because 
internally, UIMA wraps
-        * the reader in a CollectionReaderAdapter. This nice thing about this 
is, that in principle
-        * it would be possible to define sofa mappings. However, UIMA-2419 
prevents this.
-        */
-       @Test
-       public void demoAggregateWithDisguisedReader() throws UIMAException {
-               ResourceSpecifierFactory factory = 
UIMAFramework.getResourceSpecifierFactory();
-               
-               AnalysisEngineDescription reader = 
factory.createAnalysisEngineDescription();
-               reader.getMetaData().setName("reader");
-               reader.setPrimitive(true);
-               reader.setImplementationName(SimpleReader.class.getName());
-               
reader.getAnalysisEngineMetaData().getOperationalProperties().setOutputsNewCASes(true);
-       
-               AnalysisEngineDescription analyzer = 
factory.createAnalysisEngineDescription();
-               analyzer.getMetaData().setName("analyzer");
-               analyzer.setPrimitive(true);
-               analyzer.setImplementationName(SimpleAnalyzer.class.getName());
-       
-               FixedFlow flow = factory.createFixedFlow();
-               flow.setFixedFlow(new String[] { "reader", "analyzer" });
-       
-               AnalysisEngineDescription aggregate = 
factory.createAnalysisEngineDescription();
-               aggregate.getMetaData().setName("aggregate");
-               aggregate.setPrimitive(false);
-               aggregate.getAnalysisEngineMetaData().setFlowConstraints(flow);
-               
aggregate.getAnalysisEngineMetaData().getOperationalProperties().setOutputsNewCASes(true);
-               aggregate.getAnalysisEngineMetaData().getOperationalProperties()
-                               .setMultipleDeploymentAllowed(false);
-               
aggregate.getDelegateAnalysisEngineSpecifiersWithImports().put("reader", 
reader);
-               
aggregate.getDelegateAnalysisEngineSpecifiersWithImports().put("analyzer", 
analyzer);
-       
-               AnalysisEngine pipeline = 
UIMAFramework.produceAnalysisEngine(aggregate);
-               CasIterator iterator = 
pipeline.processAndOutputNewCASes(pipeline.newCAS());
-               while (iterator.hasNext()) {
-                       CAS cas = iterator.next();
-                       System.out.printf("[%s] is [%s]%n", 
cas.getDocumentText(), cas.getDocumentLanguage());
-               }
-       }
-
-//     @Test
-//     public void testAggregateBuilderWithReaderAndSofaMapping() throws 
UIMAException {
-//             CollectionReaderDescription reader = 
CollectionReaderFactory.createDescription(TestReader.class);
-//             
-//             AnalysisEngineDescription readerAed = 
UIMAFramework.getResourceSpecifierFactory().createAnalysisEngineDescription();
-//             
readerAed.setAnnotatorImplementationName(reader.getImplementationName());
-//             
readerAed.setExternalResourceDependencies(reader.getExternalResourceDependencies());
-//             
readerAed.setFrameworkImplementation(reader.getFrameworkImplementation());
-//             readerAed.setImplementationName(reader.getImplementationName());
-//             readerAed.setMetaData(reader.getMetaData());
-////           
readerAed.getAnalysisEngineMetaData().getOperationalProperties().setModifiesCas(true);
-////           
readerAed.getAnalysisEngineMetaData().getOperationalProperties().setOutputsNewCASes(true);
-//             readerAed.setPrimitive(true);
-//             
readerAed.setResourceManagerConfiguration(reader.getResourceManagerConfiguration());
-//             readerAed.setSourceUrl(reader.getSourceUrl());
-//             
-//             AggregateBuilder builder = new AggregateBuilder();
-//             builder.add(readerAed, 
-//                             ViewNames.INITIAL_VIEW, "A");
-//             
builder.add(AnalysisEngineFactory.createPrimitiveDescription(Annotator3.class), 
-//                             ViewNames.INITIAL_VIEW, "A",
-//                             ViewNames.REVERSE_VIEW, "B");
-//             
-//             
builder.setFlowControllerDescription(createFlowControllerDescription(FixedFlowController.class,
-//                             
FixedFlowController.PARAM_ACTION_AFTER_CAS_MULTIPLIER, "drop"));
-//             
-//             AnalysisEngineDescription aggregateEngineDesc = 
builder.createAggregateDescription();
-//             
aggregateEngineDesc.getAnalysisEngineMetaData().getOperationalProperties().setOutputsNewCASes(true);
-//
-//             AnalysisEngine aggregateEngine = 
createAggregate(aggregateEngineDesc);
-//             
-//             jCas.reset();
-//             JCasIterator ji = 
aggregateEngine.processAndOutputNewCASes(jCas);
-//             while (ji.hasNext()) {
-//                     JCas jc = ji.next();
-//                     FSIterator<SofaFS> i = jc.getSofaIterator();
-//                     while (i.hasNext()) {
-//                             SofaFS s = i.next();
-//                             System.out.printf("%s - %s%n", s.getSofaID(), 
jc.getView(s.getSofaID()).getDocumentText());
-//                     }
-//
-//                     assertEquals("Anyone up for a game of Foosball?", 
jc.getView("A").getDocumentText());
-//                     assertEquals("?llabsooF fo emag a rof pu enoynA", 
jc.getView("B").getDocumentText());
-//             }
-//     }
-       
-       public static class SimpleReader extends CollectionReader_ImplBase {
-               private boolean done = false;
-
-               public void getNext(CAS aCAS) throws IOException, 
CollectionException {
-                       aCAS.setDocumentText("Anyone up for a game of 
Foosball?");
-                       done = true;
-               }
-
-               public boolean hasNext() throws IOException, 
CollectionException {
-                       return !done;
-               }
-
-               public Progress[] getProgress() {
-                       return new Progress[0];
-               }
-
-               public void close() throws IOException {
-                       // Nothing to do
-               }
-       }
-
-       public static class SimpleAnalyzer extends CasAnnotator_ImplBase {
-
-               @Override
-               public void process(CAS aCas) throws 
AnalysisEngineProcessException {
-                       aCas.setDocumentLanguage("en");
-               }
-       }
+
+  /**
+   * Demo of running a collection reader as part of an aggregate engine. This 
allows to run a
+   * pipeline an access the output CASes directly - no need to write the data 
to files.
+   */
+  @Test
+  public void demoAggregateWithReader() throws UIMAException {
+    ResourceSpecifierFactory factory = 
UIMAFramework.getResourceSpecifierFactory();
+
+    CollectionReaderDescription reader = 
factory.createCollectionReaderDescription();
+    reader.getMetaData().setName("reader");
+    reader.setImplementationName(SimpleReader.class.getName());
+
+    AnalysisEngineDescription analyzer = 
factory.createAnalysisEngineDescription();
+    analyzer.getMetaData().setName("analyzer");
+    analyzer.setPrimitive(true);
+    analyzer.setImplementationName(SimpleAnalyzer.class.getName());
+
+    FixedFlow flow = factory.createFixedFlow();
+    flow.setFixedFlow(new String[] { "reader", "analyzer" });
+
+    AnalysisEngineDescription aggregate = 
factory.createAnalysisEngineDescription();
+    aggregate.getMetaData().setName("aggregate");
+    aggregate.getAnalysisEngineMetaData().setFlowConstraints(flow);
+    
aggregate.getAnalysisEngineMetaData().getOperationalProperties().setOutputsNewCASes(true);
+    aggregate.getAnalysisEngineMetaData().getOperationalProperties()
+            .setMultipleDeploymentAllowed(false);
+    aggregate.setPrimitive(false);
+    aggregate.getDelegateAnalysisEngineSpecifiersWithImports().put("reader", 
reader);
+    aggregate.getDelegateAnalysisEngineSpecifiersWithImports().put("analyzer", 
analyzer);
+
+    AnalysisEngine pipeline = UIMAFramework.produceAnalysisEngine(aggregate);
+    CasIterator iterator = 
pipeline.processAndOutputNewCASes(pipeline.newCAS());
+    while (iterator.hasNext()) {
+      CAS cas = iterator.next();
+      System.out.printf("[%s] is [%s]%n", cas.getDocumentText(), 
cas.getDocumentLanguage());
+    }
+  }
+
+  /**
+   * Demo of disguising a reader as a CAS multiplier. This works because 
internally, UIMA wraps the
+   * reader in a CollectionReaderAdapter. This nice thing about this is, that 
in principle it would
+   * be possible to define sofa mappings. However, UIMA-2419 prevents this.
+   */
+  @Test
+  public void demoAggregateWithDisguisedReader() throws UIMAException {
+    ResourceSpecifierFactory factory = 
UIMAFramework.getResourceSpecifierFactory();
+
+    AnalysisEngineDescription reader = 
factory.createAnalysisEngineDescription();
+    reader.getMetaData().setName("reader");
+    reader.setPrimitive(true);
+    reader.setImplementationName(SimpleReader.class.getName());
+    
reader.getAnalysisEngineMetaData().getOperationalProperties().setOutputsNewCASes(true);
+
+    AnalysisEngineDescription analyzer = 
factory.createAnalysisEngineDescription();
+    analyzer.getMetaData().setName("analyzer");
+    analyzer.setPrimitive(true);
+    analyzer.setImplementationName(SimpleAnalyzer.class.getName());
+
+    FixedFlow flow = factory.createFixedFlow();
+    flow.setFixedFlow(new String[] { "reader", "analyzer" });
+
+    AnalysisEngineDescription aggregate = 
factory.createAnalysisEngineDescription();
+    aggregate.getMetaData().setName("aggregate");
+    aggregate.setPrimitive(false);
+    aggregate.getAnalysisEngineMetaData().setFlowConstraints(flow);
+    
aggregate.getAnalysisEngineMetaData().getOperationalProperties().setOutputsNewCASes(true);
+    aggregate.getAnalysisEngineMetaData().getOperationalProperties()
+            .setMultipleDeploymentAllowed(false);
+    aggregate.getDelegateAnalysisEngineSpecifiersWithImports().put("reader", 
reader);
+    aggregate.getDelegateAnalysisEngineSpecifiersWithImports().put("analyzer", 
analyzer);
+
+    AnalysisEngine pipeline = UIMAFramework.produceAnalysisEngine(aggregate);
+    CasIterator iterator = 
pipeline.processAndOutputNewCASes(pipeline.newCAS());
+    while (iterator.hasNext()) {
+      CAS cas = iterator.next();
+      System.out.printf("[%s] is [%s]%n", cas.getDocumentText(), 
cas.getDocumentLanguage());
+    }
+  }
+
+  // @Test
+  // public void testAggregateBuilderWithReaderAndSofaMapping() throws 
UIMAException {
+  // CollectionReaderDescription reader =
+  // CollectionReaderFactory.createDescription(TestReader.class);
+  //
+  // AnalysisEngineDescription readerAed =
+  // 
UIMAFramework.getResourceSpecifierFactory().createAnalysisEngineDescription();
+  // readerAed.setAnnotatorImplementationName(reader.getImplementationName());
+  // 
readerAed.setExternalResourceDependencies(reader.getExternalResourceDependencies());
+  // readerAed.setFrameworkImplementation(reader.getFrameworkImplementation());
+  // readerAed.setImplementationName(reader.getImplementationName());
+  // readerAed.setMetaData(reader.getMetaData());
+  // // 
readerAed.getAnalysisEngineMetaData().getOperationalProperties().setModifiesCas(true);
+  // // 
readerAed.getAnalysisEngineMetaData().getOperationalProperties().setOutputsNewCASes(true);
+  // readerAed.setPrimitive(true);
+  // 
readerAed.setResourceManagerConfiguration(reader.getResourceManagerConfiguration());
+  // readerAed.setSourceUrl(reader.getSourceUrl());
+  //
+  // AggregateBuilder builder = new AggregateBuilder();
+  // builder.add(readerAed,
+  // ViewNames.INITIAL_VIEW, "A");
+  // 
builder.add(AnalysisEngineFactory.createPrimitiveDescription(Annotator3.class),
+  // ViewNames.INITIAL_VIEW, "A",
+  // ViewNames.REVERSE_VIEW, "B");
+  //
+  // 
builder.setFlowControllerDescription(createFlowControllerDescription(FixedFlowController.class,
+  // FixedFlowController.PARAM_ACTION_AFTER_CAS_MULTIPLIER, "drop"));
+  //
+  // AnalysisEngineDescription aggregateEngineDesc = 
builder.createAggregateDescription();
+  // 
aggregateEngineDesc.getAnalysisEngineMetaData().getOperationalProperties().setOutputsNewCASes(true);
+  //
+  // AnalysisEngine aggregateEngine = createAggregate(aggregateEngineDesc);
+  //
+  // jCas.reset();
+  // JCasIterator ji = aggregateEngine.processAndOutputNewCASes(jCas);
+  // while (ji.hasNext()) {
+  // JCas jc = ji.next();
+  // FSIterator<SofaFS> i = jc.getSofaIterator();
+  // while (i.hasNext()) {
+  // SofaFS s = i.next();
+  // System.out.printf("%s - %s%n", s.getSofaID(), 
jc.getView(s.getSofaID()).getDocumentText());
+  // }
+  //
+  // assertEquals("Anyone up for a game of Foosball?", 
jc.getView("A").getDocumentText());
+  // assertEquals("?llabsooF fo emag a rof pu enoynA", 
jc.getView("B").getDocumentText());
+  // }
+  // }
+
+  public static class SimpleReader extends CollectionReader_ImplBase {
+    private boolean done = false;
+
+    public void getNext(CAS aCAS) throws IOException, CollectionException {
+      aCAS.setDocumentText("Anyone up for a game of Foosball?");
+      done = true;
+    }
+
+    public boolean hasNext() throws IOException, CollectionException {
+      return !done;
+    }
+
+    public Progress[] getProgress() {
+      return new Progress[0];
+    }
+
+    public void close() throws IOException {
+      // Nothing to do
+    }
+  }
+
+  public static class SimpleAnalyzer extends CasAnnotator_ImplBase {
+
+    @Override
+    public void process(CAS aCas) throws AnalysisEngineProcessException {
+      aCas.setDocumentLanguage("en");
+    }
+  }
 }

Modified: 
uima/sandbox/uimafit/trunk/uimafit/src/test/java/org/apache/uima/fit/factory/AnalysisEngineFactoryExternalResourceTest.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uimafit/trunk/uimafit/src/test/java/org/apache/uima/fit/factory/AnalysisEngineFactoryExternalResourceTest.java?rev=1431721&r1=1431720&r2=1431721&view=diff
==============================================================================
--- 
uima/sandbox/uimafit/trunk/uimafit/src/test/java/org/apache/uima/fit/factory/AnalysisEngineFactoryExternalResourceTest.java
 (original)
+++ 
uima/sandbox/uimafit/trunk/uimafit/src/test/java/org/apache/uima/fit/factory/AnalysisEngineFactoryExternalResourceTest.java
 Thu Jan 10 23:12:33 2013
@@ -17,7 +17,6 @@
  * under the License.
  */
 
-
 package org.apache.uima.fit.factory;
 
 import static 
org.apache.uima.fit.factory.AnalysisEngineFactory.createAggregate;
@@ -58,348 +57,350 @@ import org.xml.sax.SAXException;
 /**
  */
 public class AnalysisEngineFactoryExternalResourceTest {
-       /**
-        * Test simple injection.
-        */
-       @Test
-       public void resource_testInjection() throws Exception {
-               AnalysisEngineDescription aeDesc = 
saveLoad(createPrimitiveDescription(
-                               TestAnalysisEngineWithResource.class,
-                               TestAnalysisEngineWithResource.PARAM_RESOURCE,
-                               
createExternalResourceDescription(TestExternalResource.class,
-                                               
TestExternalResource.PARAM_VALUE, TestExternalResource.EXPECTED_VALUE)));
-               
-               AnalysisEngine ae = createPrimitive(aeDesc);
-               ae.process(ae.newCAS());
-       }
-
-       /**
-        * Test shared simple injection.
-        */
-       @Test
-       public void resource_testSharedInjection() throws Exception {
-               ExternalResourceDescription resDesc = 
createExternalResourceDescription(
-                               TestExternalResource.class,
-                               TestExternalResource.PARAM_VALUE, 
TestExternalResource.EXPECTED_VALUE);
-               
-               AnalysisEngineDescription aeDesc1 = 
saveLoad(createPrimitiveDescription(
-                               TestAnalysisEngineWithResource.class,
-                               TestAnalysisEngineWithResource.PARAM_RESOURCE, 
resDesc));
-
-               AnalysisEngineDescription aeDesc2 = 
saveLoad(createPrimitiveDescription(
-                               TestAnalysisEngineWithResource.class,
-                               TestAnalysisEngineWithResource.PARAM_RESOURCE, 
resDesc));
-
-               dumpResourceConfiguration(aeDesc1);
-               dumpResourceConfiguration(aeDesc2);
-               
-               AnalysisEngine ae1 = createPrimitive(aeDesc1);
-               AnalysisEngine ae2 = createPrimitive(aeDesc2);
-               ae1.process(ae1.newCAS());
-               ae2.process(ae2.newCAS());
-               
-               AnalysisEngine ae3 = 
createAggregate(createAggregateDescription(aeDesc1, aeDesc2));
-               ae3.process(ae3.newCAS());
-       }
-
-       /**
-        * Test simple nesting.
-        */
-       @Test
-       public void resource_testSimpleNesting() throws Exception {
-               AnalysisEngineDescription aeDesc = 
saveLoad(createPrimitiveDescription(
-                               TestAnalysisEngineWithResource.class,
-                               TestAnalysisEngineWithResource.PARAM_RESOURCE,
-                               
createExternalResourceDescription(TestExternalResource2.class,
-                                               
TestExternalResource.PARAM_VALUE, TestExternalResource.EXPECTED_VALUE,
-                                               
TestExternalResource2.PARAM_RESOURCE, createExternalResourceDescription(
-                                                               
TestExternalResource.class,
-                                                               
TestExternalResource.PARAM_VALUE, TestExternalResource.EXPECTED_VALUE))));
-
-               AnalysisEngine ae = createPrimitive(aeDesc);
-               ae.process(ae.newCAS());
-       }
-
-       /**
-        * Test simple nesting.
-        */
-       @Test
-       public void resource_testSharedSimpleNesting() throws Exception {
-               ExternalResourceDescription resDesc = 
createExternalResourceDescription(
-                               TestExternalResource2.class,
-                               TestExternalResource.PARAM_VALUE, 
TestExternalResource.EXPECTED_VALUE,
-                               TestExternalResource2.PARAM_RESOURCE, 
createExternalResourceDescription(
-                                               TestExternalResource.class,
-                                               
TestExternalResource.PARAM_VALUE, TestExternalResource.EXPECTED_VALUE));        
-               
-               AnalysisEngineDescription aeDesc1 = 
saveLoad(createPrimitiveDescription(
-                               TestAnalysisEngineWithResource.class,
-                               TestAnalysisEngineWithResource.PARAM_RESOURCE, 
resDesc));
-
-               dumpResourceConfiguration(aeDesc1);
-               
-               AnalysisEngineDescription aeDesc2 = 
saveLoad(createPrimitiveDescription(
-                               TestAnalysisEngineWithResource.class,
-                               TestAnalysisEngineWithResource.PARAM_RESOURCE, 
resDesc));
-
-               dumpResourceConfiguration(aeDesc1);
-               dumpResourceConfiguration(aeDesc2);
-               
-               AnalysisEngine ae1 = createPrimitive(aeDesc1);
-               AnalysisEngine ae2 = createPrimitive(aeDesc2);
-               ae1.process(ae1.newCAS());
-               ae2.process(ae2.newCAS());
-               
-               AnalysisEngine ae3 = 
createAggregate(createAggregateDescription(aeDesc1, aeDesc2));
-               ae3.process(ae3.newCAS());
-       }
-
-       /**
-        * Test deeper nesting level.
-        */
-       @Test
-       public void resource_testDeeperNesting() throws Exception {
-               ExternalResourceDescription resDesc2 = 
createExternalResourceDescription(
-                               TestExternalResource.class,
-                               TestExternalResource.PARAM_VALUE, 
TestExternalResource.EXPECTED_VALUE);
-
-               ExternalResourceDescription resDesc = 
createExternalResourceDescription(
-                               TestExternalResource2.class,
-                               TestExternalResource2.PARAM_RESOURCE, resDesc2,
-                               TestExternalResource.PARAM_VALUE, 
TestExternalResource.EXPECTED_VALUE);
-
-               AnalysisEngineDescription aeDesc = 
saveLoad(createPrimitiveDescription(
-                               TestAnalysisEngineWithResource.class,
-                               TestAnalysisEngineWithResource.PARAM_RESOURCE,
-                               
createExternalResourceDescription(TestExternalResource2.class,
-                                               
TestExternalResource.PARAM_VALUE, TestExternalResource.EXPECTED_VALUE,
-                                               
TestExternalResource2.PARAM_RESOURCE, resDesc)));
-
-               dumpResourceConfiguration(aeDesc);
-
-               AnalysisEngine ae = createPrimitive(aeDesc);
-               ae.process(ae.newCAS());
-       }
-
-       /**
-        * Test self-injection
-        */
-       @Test
-       public void resource_testSelfInjection() throws Exception {
-               ExternalResourceDescription resDesc = 
createExternalResourceDescription(
-                               TestExternalResource2.class,
-                               TestExternalResource.PARAM_VALUE, 
TestExternalResource.EXPECTED_VALUE);
-               bindExternalResource(resDesc, 
TestExternalResource2.PARAM_RESOURCE, resDesc);
-
-               AnalysisEngineDescription aeDesc = 
saveLoad(createPrimitiveDescription(
-                               TestAnalysisEngineWithResource.class,
-                               TestAnalysisEngineWithResource.PARAM_RESOURCE, 
resDesc));
-               
-               dumpResourceConfiguration(aeDesc);
-               
-               AnalysisEngine ae = createPrimitive(aeDesc);
-               ae.process(ae.newCAS());
-       }
-
-       /**
-        * Test self-injection
-        */
-       @Test
-       public void resource_testDoubleSelfInjection() throws Exception {
-               ExternalResourceDescription resDesc = 
createExternalResourceDescription(
-                               TestExternalResource2.class,
-                               TestExternalResource.PARAM_VALUE, 
TestExternalResource.EXPECTED_VALUE);
-               bindExternalResource(resDesc, 
TestExternalResource2.PARAM_RESOURCE, resDesc);
-
-               AnalysisEngineDescription aeDesc1 = 
saveLoad(createPrimitiveDescription(
-                               TestAnalysisEngineWithResource.class,
-                               TestAnalysisEngineWithResource.PARAM_RESOURCE, 
resDesc));
-
-               AnalysisEngineDescription aeDesc2 = 
saveLoad(createPrimitiveDescription(
-                               TestAnalysisEngineWithResource.class,
-                               TestAnalysisEngineWithResource.PARAM_RESOURCE, 
resDesc));
-
-               dumpResourceConfiguration(aeDesc1);
-               dumpResourceConfiguration(aeDesc2);
-               
-               AnalysisEngine ae1 = createPrimitive(aeDesc1);
-               AnalysisEngine ae2 = createPrimitive(aeDesc2);
-               ae1.process(ae1.newCAS());
-               ae2.process(ae2.newCAS());
-               
-               AnalysisEngine ae3 = 
createAggregate(createAggregateDescription(aeDesc1, aeDesc2));
-               ae3.process(ae3.newCAS());
-       }
-       
-       /**
-        * Test simple injection.
-        */
-       @Test
-       public void sharedObject_testInjection() throws Exception {
-               AnalysisEngineDescription aeDesc = 
saveLoad(createPrimitiveDescription(
-                               
TestAnalysisEngineWithSharedResourceObject.class,
-                               
TestAnalysisEngineWithSharedResourceObject.PARAM_RESOURCE,
-                               
createExternalResourceDescription(TestSharedResourceObject.class, 
"http://dumm.my";,
-                                               
TestSharedResourceObject.PARAM_VALUE, 
TestSharedResourceObject.EXPECTED_VALUE)));
-               
-               AnalysisEngine ae = createPrimitive(aeDesc);
-               ae.process(ae.newCAS());
-       }
-
-       /**
-        * Test shared simple injection.
-        */
-       @Test
-       public void sharedObject_testSharedInjection() throws Exception {
-               ExternalResourceDescription resDesc = 
createExternalResourceDescription(
-                               TestSharedResourceObject.class, 
"http://dumm.my";,
-                               TestSharedResourceObject.PARAM_VALUE, 
TestSharedResourceObject.EXPECTED_VALUE);
-               
-               AnalysisEngineDescription aeDesc1 = 
saveLoad(createPrimitiveDescription(
-                               
TestAnalysisEngineWithSharedResourceObject.class,
-                               
TestAnalysisEngineWithSharedResourceObject.PARAM_RESOURCE, resDesc));
-
-               AnalysisEngineDescription aeDesc2 = 
saveLoad(createPrimitiveDescription(
-                               
TestAnalysisEngineWithSharedResourceObject.class,
-                               
TestAnalysisEngineWithSharedResourceObject.PARAM_RESOURCE, resDesc));
-
-               dumpResourceConfiguration(aeDesc1);
-               dumpResourceConfiguration(aeDesc2);
-               
-               AnalysisEngine ae1 = createPrimitive(aeDesc1);
-               AnalysisEngine ae2 = createPrimitive(aeDesc2);
-               ae1.process(ae1.newCAS());
-               ae2.process(ae2.newCAS());
-               
-               AnalysisEngine ae3 = 
createAggregate(createAggregateDescription(aeDesc1, aeDesc2));
-               ae3.process(ae3.newCAS());
-       }
-
-       /**
-        * Test self-injection
-        */
-       @Test
-       public void sharedObject_testSelfInjection() throws Exception {
-               ExternalResourceDescription resDesc = 
createExternalResourceDescription(
-                               TestSharedResourceObject2.class, 
"http://dumm.my";,
-                               TestSharedResourceObject.PARAM_VALUE, 
TestSharedResourceObject.EXPECTED_VALUE);
-               bindExternalResource(resDesc, 
TestSharedResourceObject2.PARAM_RESOURCE, resDesc);
-
-               AnalysisEngineDescription aeDesc = 
saveLoad(createPrimitiveDescription(
-                               
TestAnalysisEngineWithSharedResourceObject.class,
-                               
TestAnalysisEngineWithSharedResourceObject.PARAM_RESOURCE, resDesc));
-               
-               dumpResourceConfiguration(aeDesc);
-               
-               AnalysisEngine ae = createPrimitive(aeDesc);
-               ae.process(ae.newCAS());
-       }
-
-       public static class TestExternalResource2 extends TestExternalResource {
-               public final static String PARAM_RESOURCE = "resource2";
-               @ExternalResource(key = PARAM_RESOURCE)
-               private TestExternalResource resource;
-
-               @Override
-               public void afterResourcesInitialized() {
-                       
System.out.println(getClass().getSimpleName()+".afterResourcesInitialized()");
-                       // Ensure the External Resource is bound
-                       assertNotNull(resource);
-                       if (this != resource) {
-                               resource.assertConfiguredOk();
-                       }
-                       assertConfiguredOk();
-               }
-       }
-
-       public static class TestSharedResourceObject2 extends 
TestSharedResourceObject implements
-                       ExternalResourceAware {
-               public final static String PARAM_RESOURCE = "resource2";
-               @ExternalResource(key = PARAM_RESOURCE)
-               private TestSharedResourceObject resource;
-
-               
@ConfigurationParameter(name=ExternalResourceFactory.PARAM_RESOURCE_NAME)
-               private String resourceName;
-
-               public void afterResourcesInitialized() {
-                       
System.out.println(getClass().getSimpleName()+".afterResourcesInitialized()");
-                       // Ensure the External Resource is bound
-                       assertNotNull(resource);
-                       if (this != resource) {
-                               resource.assertConfiguredOk();
-                       }
-                       assertConfiguredOk();
-               }
-
-               public String getResourceName() {
-                       return resourceName;
-               }
-       }
-
-       public static class TestAnalysisEngineWithResource extends 
CasAnnotator_ImplBase {
-
-               public final static String PARAM_RESOURCE = "resource";
-               @ExternalResource(key = PARAM_RESOURCE)
-               private TestExternalResource resource;
-               
-               @Override
-               public void process(CAS aCAS) throws 
AnalysisEngineProcessException {
-                       
System.out.println(getClass().getSimpleName()+".process()");
-                       assertNotNull(resource);
-                       resource.assertConfiguredOk();
-               }
-       }
-
-       public static class TestAnalysisEngineWithSharedResourceObject extends 
CasAnnotator_ImplBase {
-
-               public final static String PARAM_RESOURCE = "resource";
-               @ExternalResource(key = PARAM_RESOURCE)
-               private TestSharedResourceObject resource;
-               
-               @Override
-               public void process(CAS aCAS) throws 
AnalysisEngineProcessException {
-                       
System.out.println(getClass().getSimpleName()+".process()");
-                       assertNotNull(resource);
-                       resource.assertConfiguredOk();
-               }
-       }
-
-       AnalysisEngineDescription saveLoad(AnalysisEngineDescription aDesc)
-                       throws InvalidXMLException, SAXException, IOException {
-               ByteArrayOutputStream bos = new ByteArrayOutputStream();
-               aDesc.toXML(bos);
-               return 
UIMAFramework.getXMLParser().parseAnalysisEngineDescription(
-                               new XMLInputSource(new 
ByteArrayInputStream(bos.toByteArray()), null));
-       }
-       
-       private void dumpResourceConfiguration(ResourceCreationSpecifier aSpec)
-       {
-               System.out.println("-- begin resource configuration");
-               for (ExternalResourceBinding b : 
aSpec.getResourceManagerConfiguration()
-                               .getExternalResourceBindings()) {
-                       System.out.printf("Binding : %s -> %s %n", b.getKey(), 
b.getResourceName());
-               }
-
-               for (ExternalResourceDescription r : 
aSpec.getResourceManagerConfiguration()
-                               .getExternalResources()) {
-                       if (r.getImplementationName() != null) {
-                               System.out.printf("Resource: %s -> %s %n", 
r.getName(), r.getImplementationName());
-                       }
-                       else {
-                               System.out
-                                               .printf("Resource: %s -> %s 
%n", r.getName(), ((CustomResourceSpecifier) r
-                                                               
.getResourceSpecifier()).getResourceClassName());
-                       }
-               }
-               System.out.println("-- end resource configuration");
-       }
-
-       @Rule
-       public TestName name = new TestName();
-
-       @Before
-       public void printSeparator()
-       {
-               System.out.println("\n=== " + name.getMethodName() + " 
=====================");
-       }
+  /**
+   * Test simple injection.
+   */
+  @Test
+  public void resource_testInjection() throws Exception {
+    AnalysisEngineDescription aeDesc = saveLoad(createPrimitiveDescription(
+            TestAnalysisEngineWithResource.class,
+            TestAnalysisEngineWithResource.PARAM_RESOURCE,
+            createExternalResourceDescription(TestExternalResource.class,
+                    TestExternalResource.PARAM_VALUE, 
TestExternalResource.EXPECTED_VALUE)));
+
+    AnalysisEngine ae = createPrimitive(aeDesc);
+    ae.process(ae.newCAS());
+  }
+
+  /**
+   * Test shared simple injection.
+   */
+  @Test
+  public void resource_testSharedInjection() throws Exception {
+    ExternalResourceDescription resDesc = createExternalResourceDescription(
+            TestExternalResource.class, TestExternalResource.PARAM_VALUE,
+            TestExternalResource.EXPECTED_VALUE);
+
+    AnalysisEngineDescription aeDesc1 = saveLoad(createPrimitiveDescription(
+            TestAnalysisEngineWithResource.class, 
TestAnalysisEngineWithResource.PARAM_RESOURCE,
+            resDesc));
+
+    AnalysisEngineDescription aeDesc2 = saveLoad(createPrimitiveDescription(
+            TestAnalysisEngineWithResource.class, 
TestAnalysisEngineWithResource.PARAM_RESOURCE,
+            resDesc));
+
+    dumpResourceConfiguration(aeDesc1);
+    dumpResourceConfiguration(aeDesc2);
+
+    AnalysisEngine ae1 = createPrimitive(aeDesc1);
+    AnalysisEngine ae2 = createPrimitive(aeDesc2);
+    ae1.process(ae1.newCAS());
+    ae2.process(ae2.newCAS());
+
+    AnalysisEngine ae3 = createAggregate(createAggregateDescription(aeDesc1, 
aeDesc2));
+    ae3.process(ae3.newCAS());
+  }
+
+  /**
+   * Test simple nesting.
+   */
+  @Test
+  public void resource_testSimpleNesting() throws Exception {
+    AnalysisEngineDescription aeDesc = saveLoad(createPrimitiveDescription(
+            TestAnalysisEngineWithResource.class,
+            TestAnalysisEngineWithResource.PARAM_RESOURCE,
+            createExternalResourceDescription(
+                    TestExternalResource2.class,
+                    TestExternalResource.PARAM_VALUE,
+                    TestExternalResource.EXPECTED_VALUE,
+                    TestExternalResource2.PARAM_RESOURCE,
+                    
createExternalResourceDescription(TestExternalResource.class,
+                            TestExternalResource.PARAM_VALUE, 
TestExternalResource.EXPECTED_VALUE))));
+
+    AnalysisEngine ae = createPrimitive(aeDesc);
+    ae.process(ae.newCAS());
+  }
+
+  /**
+   * Test simple nesting.
+   */
+  @Test
+  public void resource_testSharedSimpleNesting() throws Exception {
+    ExternalResourceDescription resDesc = createExternalResourceDescription(
+            TestExternalResource2.class,
+            TestExternalResource.PARAM_VALUE,
+            TestExternalResource.EXPECTED_VALUE,
+            TestExternalResource2.PARAM_RESOURCE,
+            createExternalResourceDescription(TestExternalResource.class,
+                    TestExternalResource.PARAM_VALUE, 
TestExternalResource.EXPECTED_VALUE));
+
+    AnalysisEngineDescription aeDesc1 = saveLoad(createPrimitiveDescription(
+            TestAnalysisEngineWithResource.class, 
TestAnalysisEngineWithResource.PARAM_RESOURCE,
+            resDesc));
+
+    dumpResourceConfiguration(aeDesc1);
+
+    AnalysisEngineDescription aeDesc2 = saveLoad(createPrimitiveDescription(
+            TestAnalysisEngineWithResource.class, 
TestAnalysisEngineWithResource.PARAM_RESOURCE,
+            resDesc));
+
+    dumpResourceConfiguration(aeDesc1);
+    dumpResourceConfiguration(aeDesc2);
+
+    AnalysisEngine ae1 = createPrimitive(aeDesc1);
+    AnalysisEngine ae2 = createPrimitive(aeDesc2);
+    ae1.process(ae1.newCAS());
+    ae2.process(ae2.newCAS());
+
+    AnalysisEngine ae3 = createAggregate(createAggregateDescription(aeDesc1, 
aeDesc2));
+    ae3.process(ae3.newCAS());
+  }
+
+  /**
+   * Test deeper nesting level.
+   */
+  @Test
+  public void resource_testDeeperNesting() throws Exception {
+    ExternalResourceDescription resDesc2 = createExternalResourceDescription(
+            TestExternalResource.class, TestExternalResource.PARAM_VALUE,
+            TestExternalResource.EXPECTED_VALUE);
+
+    ExternalResourceDescription resDesc = createExternalResourceDescription(
+            TestExternalResource2.class, TestExternalResource2.PARAM_RESOURCE, 
resDesc2,
+            TestExternalResource.PARAM_VALUE, 
TestExternalResource.EXPECTED_VALUE);
+
+    AnalysisEngineDescription aeDesc = saveLoad(createPrimitiveDescription(
+            TestAnalysisEngineWithResource.class,
+            TestAnalysisEngineWithResource.PARAM_RESOURCE,
+            createExternalResourceDescription(TestExternalResource2.class,
+                    TestExternalResource.PARAM_VALUE, 
TestExternalResource.EXPECTED_VALUE,
+                    TestExternalResource2.PARAM_RESOURCE, resDesc)));
+
+    dumpResourceConfiguration(aeDesc);
+
+    AnalysisEngine ae = createPrimitive(aeDesc);
+    ae.process(ae.newCAS());
+  }
+
+  /**
+   * Test self-injection
+   */
+  @Test
+  public void resource_testSelfInjection() throws Exception {
+    ExternalResourceDescription resDesc = createExternalResourceDescription(
+            TestExternalResource2.class, TestExternalResource.PARAM_VALUE,
+            TestExternalResource.EXPECTED_VALUE);
+    bindExternalResource(resDesc, TestExternalResource2.PARAM_RESOURCE, 
resDesc);
+
+    AnalysisEngineDescription aeDesc = saveLoad(createPrimitiveDescription(
+            TestAnalysisEngineWithResource.class, 
TestAnalysisEngineWithResource.PARAM_RESOURCE,
+            resDesc));
+
+    dumpResourceConfiguration(aeDesc);
+
+    AnalysisEngine ae = createPrimitive(aeDesc);
+    ae.process(ae.newCAS());
+  }
+
+  /**
+   * Test self-injection
+   */
+  @Test
+  public void resource_testDoubleSelfInjection() throws Exception {
+    ExternalResourceDescription resDesc = createExternalResourceDescription(
+            TestExternalResource2.class, TestExternalResource.PARAM_VALUE,
+            TestExternalResource.EXPECTED_VALUE);
+    bindExternalResource(resDesc, TestExternalResource2.PARAM_RESOURCE, 
resDesc);
+
+    AnalysisEngineDescription aeDesc1 = saveLoad(createPrimitiveDescription(
+            TestAnalysisEngineWithResource.class, 
TestAnalysisEngineWithResource.PARAM_RESOURCE,
+            resDesc));
+
+    AnalysisEngineDescription aeDesc2 = saveLoad(createPrimitiveDescription(
+            TestAnalysisEngineWithResource.class, 
TestAnalysisEngineWithResource.PARAM_RESOURCE,
+            resDesc));
+
+    dumpResourceConfiguration(aeDesc1);
+    dumpResourceConfiguration(aeDesc2);
+
+    AnalysisEngine ae1 = createPrimitive(aeDesc1);
+    AnalysisEngine ae2 = createPrimitive(aeDesc2);
+    ae1.process(ae1.newCAS());
+    ae2.process(ae2.newCAS());
+
+    AnalysisEngine ae3 = createAggregate(createAggregateDescription(aeDesc1, 
aeDesc2));
+    ae3.process(ae3.newCAS());
+  }
+
+  /**
+   * Test simple injection.
+   */
+  @Test
+  public void sharedObject_testInjection() throws Exception {
+    AnalysisEngineDescription aeDesc = saveLoad(createPrimitiveDescription(
+            TestAnalysisEngineWithSharedResourceObject.class,
+            TestAnalysisEngineWithSharedResourceObject.PARAM_RESOURCE,
+            createExternalResourceDescription(TestSharedResourceObject.class, 
"http://dumm.my";,
+                    TestSharedResourceObject.PARAM_VALUE, 
TestSharedResourceObject.EXPECTED_VALUE)));
+
+    AnalysisEngine ae = createPrimitive(aeDesc);
+    ae.process(ae.newCAS());
+  }
+
+  /**
+   * Test shared simple injection.
+   */
+  @Test
+  public void sharedObject_testSharedInjection() throws Exception {
+    ExternalResourceDescription resDesc = createExternalResourceDescription(
+            TestSharedResourceObject.class, "http://dumm.my";, 
TestSharedResourceObject.PARAM_VALUE,
+            TestSharedResourceObject.EXPECTED_VALUE);
+
+    AnalysisEngineDescription aeDesc1 = saveLoad(createPrimitiveDescription(
+            TestAnalysisEngineWithSharedResourceObject.class,
+            TestAnalysisEngineWithSharedResourceObject.PARAM_RESOURCE, 
resDesc));
+
+    AnalysisEngineDescription aeDesc2 = saveLoad(createPrimitiveDescription(
+            TestAnalysisEngineWithSharedResourceObject.class,
+            TestAnalysisEngineWithSharedResourceObject.PARAM_RESOURCE, 
resDesc));
+
+    dumpResourceConfiguration(aeDesc1);
+    dumpResourceConfiguration(aeDesc2);
+
+    AnalysisEngine ae1 = createPrimitive(aeDesc1);
+    AnalysisEngine ae2 = createPrimitive(aeDesc2);
+    ae1.process(ae1.newCAS());
+    ae2.process(ae2.newCAS());
+
+    AnalysisEngine ae3 = createAggregate(createAggregateDescription(aeDesc1, 
aeDesc2));
+    ae3.process(ae3.newCAS());
+  }
+
+  /**
+   * Test self-injection
+   */
+  @Test
+  public void sharedObject_testSelfInjection() throws Exception {
+    ExternalResourceDescription resDesc = createExternalResourceDescription(
+            TestSharedResourceObject2.class, "http://dumm.my";,
+            TestSharedResourceObject.PARAM_VALUE, 
TestSharedResourceObject.EXPECTED_VALUE);
+    bindExternalResource(resDesc, TestSharedResourceObject2.PARAM_RESOURCE, 
resDesc);
+
+    AnalysisEngineDescription aeDesc = saveLoad(createPrimitiveDescription(
+            TestAnalysisEngineWithSharedResourceObject.class,
+            TestAnalysisEngineWithSharedResourceObject.PARAM_RESOURCE, 
resDesc));
+
+    dumpResourceConfiguration(aeDesc);
+
+    AnalysisEngine ae = createPrimitive(aeDesc);
+    ae.process(ae.newCAS());
+  }
+
+  public static class TestExternalResource2 extends TestExternalResource {
+    public final static String PARAM_RESOURCE = "resource2";
+
+    @ExternalResource(key = PARAM_RESOURCE)
+    private TestExternalResource resource;
+
+    @Override
+    public void afterResourcesInitialized() {
+      System.out.println(getClass().getSimpleName() + 
".afterResourcesInitialized()");
+      // Ensure the External Resource is bound
+      assertNotNull(resource);
+      if (this != resource) {
+        resource.assertConfiguredOk();
+      }
+      assertConfiguredOk();
+    }
+  }
+
+  public static class TestSharedResourceObject2 extends 
TestSharedResourceObject implements
+          ExternalResourceAware {
+    public final static String PARAM_RESOURCE = "resource2";
+
+    @ExternalResource(key = PARAM_RESOURCE)
+    private TestSharedResourceObject resource;
+
+    @ConfigurationParameter(name = ExternalResourceFactory.PARAM_RESOURCE_NAME)
+    private String resourceName;
+
+    public void afterResourcesInitialized() {
+      System.out.println(getClass().getSimpleName() + 
".afterResourcesInitialized()");
+      // Ensure the External Resource is bound
+      assertNotNull(resource);
+      if (this != resource) {
+        resource.assertConfiguredOk();
+      }
+      assertConfiguredOk();
+    }
+
+    public String getResourceName() {
+      return resourceName;
+    }
+  }
+
+  public static class TestAnalysisEngineWithResource extends 
CasAnnotator_ImplBase {
+
+    public final static String PARAM_RESOURCE = "resource";
+
+    @ExternalResource(key = PARAM_RESOURCE)
+    private TestExternalResource resource;
+
+    @Override
+    public void process(CAS aCAS) throws AnalysisEngineProcessException {
+      System.out.println(getClass().getSimpleName() + ".process()");
+      assertNotNull(resource);
+      resource.assertConfiguredOk();
+    }
+  }
+
+  public static class TestAnalysisEngineWithSharedResourceObject extends 
CasAnnotator_ImplBase {
+
+    public final static String PARAM_RESOURCE = "resource";
+
+    @ExternalResource(key = PARAM_RESOURCE)
+    private TestSharedResourceObject resource;
+
+    @Override
+    public void process(CAS aCAS) throws AnalysisEngineProcessException {
+      System.out.println(getClass().getSimpleName() + ".process()");
+      assertNotNull(resource);
+      resource.assertConfiguredOk();
+    }
+  }
+
+  AnalysisEngineDescription saveLoad(AnalysisEngineDescription aDesc) throws 
InvalidXMLException,
+          SAXException, IOException {
+    ByteArrayOutputStream bos = new ByteArrayOutputStream();
+    aDesc.toXML(bos);
+    return UIMAFramework.getXMLParser().parseAnalysisEngineDescription(
+            new XMLInputSource(new ByteArrayInputStream(bos.toByteArray()), 
null));
+  }
+
+  private void dumpResourceConfiguration(ResourceCreationSpecifier aSpec) {
+    System.out.println("-- begin resource configuration");
+    for (ExternalResourceBinding b : aSpec.getResourceManagerConfiguration()
+            .getExternalResourceBindings()) {
+      System.out.printf("Binding : %s -> %s %n", b.getKey(), 
b.getResourceName());
+    }
+
+    for (ExternalResourceDescription r : 
aSpec.getResourceManagerConfiguration()
+            .getExternalResources()) {
+      if (r.getImplementationName() != null) {
+        System.out.printf("Resource: %s -> %s %n", r.getName(), 
r.getImplementationName());
+      } else {
+        System.out.printf("Resource: %s -> %s %n", r.getName(),
+                ((CustomResourceSpecifier) 
r.getResourceSpecifier()).getResourceClassName());
+      }
+    }
+    System.out.println("-- end resource configuration");
+  }
+
+  @Rule
+  public TestName name = new TestName();
+
+  @Before
+  public void printSeparator() {
+    System.out.println("\n=== " + name.getMethodName() + " 
=====================");
+  }
 }


Reply via email to