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/01/11 00:12:37 UTC
svn commit: r1431721 [15/19] - in /uima/sandbox/uimafit/trunk:
uimafit-examples/src/main/java/org/apache/uima/fit/examples/experiment/pos/
uimafit-examples/src/main/java/org/apache/uima/fit/examples/getstarted/
uimafit-examples/src/main/java/org/apache...
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() + " =====================");
+ }
}