Assert.assertFalse(result);
// try to initialize with an empty TaeDescription - should throw exception
Exception ex = null;
try {
TaeDescription taeDesc = new TaeDescription_impl();
taeDesc.setPrimitive(true);
tae1.initialize(taeDesc, null);
} catch (ResourceInitializationException e) {
ex = e;
}
Assert.assertNotNull(ex);
// initialize simple primitive TextAnalysisEngine
tae1 = new PrimitiveAnalysisEngine_impl();
TaeDescription primitiveDesc = new TaeDescription_impl();
primitiveDesc.setFrameworkImplementation(Constants.JAVA_FRAMEWORK_NAME);
primitiveDesc.setPrimitive(true);
primitiveDesc
.setAnnotatorImplementationName("org.apache.uima.analysis_engine.impl.TestAnnotator");
result = tae1.initialize(primitiveDesc, null);
Assert.assertTrue(result);
// initialize again - should fail
ex = null;
try {
tae1.initialize(primitiveDesc, null);
} catch (UIMA_IllegalStateException e) {
ex = e;
}
Assert.assertNotNull(ex);
// initialize simple aggregate TextAnalysisEngine (also pass TextAnalysisEngineProcessData as
// parameter)
TaeDescription aggDesc = new TaeDescription_impl();
aggDesc.setFrameworkImplementation(Constants.JAVA_FRAMEWORK_NAME);
aggDesc.setPrimitive(false);
aggDesc.getDelegateAnalysisEngineSpecifiersWithImports().put("Test", primitiveDesc);
FixedFlow_impl flow = new FixedFlow_impl();
flow.setFixedFlow(new String[] { "Test" });
aggDesc.getAnalysisEngineMetaData().setFlowConstraints(flow);
AggregateAnalysisEngine_impl tae2 = new AggregateAnalysisEngine_impl();
result = tae2.initialize(aggDesc, null);
Assert.assertTrue(result);
// try some descriptors that are invalid due to config. param problems
for (int i = 1; i <= 13; i++) {
_testInvalidDescriptor(JUnitExtension
.getFile("TextAnalysisEngineImplTest/InvalidConfigParams" + i + ".xml"));
}
// try a descriptor with configuration parameter overrides - should work
XMLInputSource in = new XMLInputSource(JUnitExtension
.getFile("TextAnalysisEngineImplTest/AggregateTaeWithConfigParamOverrides.xml"));
TaeDescription desc = UIMAFramework.getXMLParser().parseTaeDescription(in);
AggregateAnalysisEngine_impl tae = new AggregateAnalysisEngine_impl();
tae.initialize(desc, Collections.EMPTY_MAP);
PrimitiveAnalysisEngine_impl delegate1 = (PrimitiveAnalysisEngine_impl) tae._getASB()
.getComponentAnalysisEngines().get("Annotator1");
PrimitiveAnalysisEngine_impl delegate2 = (PrimitiveAnalysisEngine_impl) tae._getASB()
.getComponentAnalysisEngines().get("Annotator2");
FlowControllerContainer flowController = ((ASB_impl) tae._getASB())
.getFlowControllerContainer();
String strVal1 = (String) delegate1.getUimaContext().getConfigParameterValue("en",
"StringParam");
Assert.assertEquals("override", strVal1);
String strVal2 = (String) delegate2.getUimaContext().getConfigParameterValue("en",
"StringParam");
Assert.assertEquals("en", strVal2);
String strVal3 = (String) flowController.getUimaContext().getConfigParameterValue("en",
"StringParam");
Assert.assertEquals("en", strVal3);
Assert.assertEquals("en", strVal2);
Integer intVal1 = (Integer) delegate1.getUimaContext().getConfigParameterValue("en",
"IntegerParam");
Assert.assertEquals(100, intVal1.intValue());
Integer intVal2 = (Integer) delegate1.getUimaContext().getConfigParameterValue("en",
"IntegerParam");
Assert.assertEquals(100, intVal2.intValue());
Integer intVal3 = (Integer) flowController.getUimaContext().getConfigParameterValue("en",
"IntegerParam");
Assert.assertEquals(100, intVal3.intValue());
String[] strArrVal1 = (String[]) delegate1.getUimaContext().getConfigParameterValue("en",
"StringArrayParam");
Assert.assertEquals(Arrays.asList(new String[] { "override" }), Arrays.asList(strArrVal1));
String[] strArrVal2 = (String[]) delegate2.getUimaContext().getConfigParameterValue("en",
"StringArrayParam");
Assert.assertEquals(Arrays.asList(new String[] { "override" }), Arrays.asList(strArrVal2));
String[] strArrVal3 = (String[]) flowController.getUimaContext().getConfigParameterValue(
"en", "StringArrayParam");
Assert.assertEquals(Arrays.asList(new String[] { "override" }), Arrays.asList(strArrVal3));
// anotherdescriptor with configuration parameter overrides (this time no groups)
in = new XMLInputSource(JUnitExtension
.getFile("TextAnalysisEngineImplTest/AggregateTaeWithConfigParamOverrides2.xml"));
desc = UIMAFramework.getXMLParser().parseTaeDescription(in);
tae = new AggregateAnalysisEngine_impl();
tae.initialize(desc, Collections.EMPTY_MAP);
delegate1 = (PrimitiveAnalysisEngine_impl) tae._getASB().getComponentAnalysisEngines().get(
"Annotator1");
delegate2 = (PrimitiveAnalysisEngine_impl) tae._getASB().getComponentAnalysisEngines().get(
"Annotator2");
flowController = ((ASB_impl) tae._getASB()).getFlowControllerContainer();
strVal1 = (String) delegate1.getUimaContext().getConfigParameterValue("StringParam");
Assert.assertEquals("override", strVal1);
strVal2 = (String) delegate2.getUimaContext().getConfigParameterValue("StringParam");
Assert.assertEquals("myString", strVal2);
strVal3 = (String) flowController.getUimaContext().getConfigParameterValue("StringParam");
Assert.assertEquals("myString", strVal3);
intVal1 = (Integer) delegate1.getUimaContext().getConfigParameterValue("IntegerParam");
Assert.assertEquals(100, intVal1.intValue());
intVal2 = (Integer) delegate2.getUimaContext().getConfigParameterValue("IntegerParam");
Assert.assertEquals(100, intVal2.intValue());
intVal3 = (Integer) flowController.getUimaContext().getConfigParameterValue("IntegerParam");
Assert.assertEquals(100, intVal3.intValue());
strArrVal1 = (String[]) delegate1.getUimaContext()
.getConfigParameterValue("StringArrayParam");
Assert.assertEquals(Arrays.asList(new String[] { "override" }), Arrays.asList(strArrVal1));
strArrVal2 = (String[]) delegate2.getUimaContext()
.getConfigParameterValue("StringArrayParam");
Assert.assertEquals(Arrays.asList(new String[] { "override" }), Arrays.asList(strArrVal2));
strArrVal3 = (String[]) flowController.getUimaContext().getConfigParameterValue(
"StringArrayParam");
Assert.assertEquals(Arrays.asList(new String[] { "override" }), Arrays.asList(strArrVal3));
// try a descriptor that's invalid due to an unsatisfied resource dependency
_testInvalidDescriptor(JUnitExtension
.getFile("TextAnalysisEngineImplTest/UnsatisfiedResourceDependency.xml"));
// test an aggregate TAE containing a CAS Consumer
in = new XMLInputSource(JUnitExtension
.getFile("TextAnalysisEngineImplTest/AggregateTaeWithCasConsumer.xml"));
desc = UIMAFramework.getXMLParser().parseTaeDescription(in);
tae = new AggregateAnalysisEngine_impl();
tae.initialize(desc, Collections.EMPTY_MAP);
delegate1 = (PrimitiveAnalysisEngine_impl) tae._getASB().getComponentAnalysisEngines().get(
"Annotator");
delegate2 = (PrimitiveAnalysisEngine_impl) tae._getASB().getComponentAnalysisEngines().get(
"CasConsumer");
assertTrue(delegate1.getAnalysisEngineMetaData().getOperationalProperties().getModifiesCas());
assertFalse(delegate2.getAnalysisEngineMetaData().getOperationalProperties().getModifiesCas());
// try an aggregate with no components (tests that empty flow works)
in = new XMLInputSource(JUnitExtension
.getFile("TextAnalysisEngineImplTest/EmptyAggregate.xml"));
desc = UIMAFramework.getXMLParser().parseTaeDescription(in);
FixedFlow emptyFlow = (FixedFlow) desc.getAnalysisEngineMetaData().getFlowConstraints();
assertNotNull(emptyFlow.getFixedFlow());
assertTrue(emptyFlow.getFixedFlow().length == 0);
tae = new AggregateAnalysisEngine_impl();
tae.initialize(desc, Collections.EMPTY_MAP);