[UIMA-6214] Method signature class in ExternalResourceFactory
* Merge branch '3.0.x' of https://github.com/mjunsilo/uima-uimafit into UIMA-6214-Method-signature-clash-in-ExternalResourceFactory
* This merge brings in the unit test provided by Mario Juric with the original bug report
# Conflicts:
# uimafit-core/src/test/java/org/apache/uima/fit/factory/ExternalResourceFactoryTest.java
diff --git a/uimafit-core/src/test/java/org/apache/uima/fit/factory/ExternalResourceFactoryTest.java b/uimafit-core/src/test/java/org/apache/uima/fit/factory/ExternalResourceFactoryTest.java
index 7c03ca3..6bc7b2f 100644
--- a/uimafit-core/src/test/java/org/apache/uima/fit/factory/ExternalResourceFactoryTest.java
+++ b/uimafit-core/src/test/java/org/apache/uima/fit/factory/ExternalResourceFactoryTest.java
@@ -26,6 +26,9 @@
import static org.apache.uima.fit.factory.ExternalResourceFactory.bindResourceOnceWithoutNested;
import static org.apache.uima.fit.factory.ExternalResourceFactory.createNamedResourceDescription;
import static org.apache.uima.fit.factory.ExternalResourceFactory.createResourceDescription;
+import static org.apache.uima.fit.factory.ExternalResourceFactory.createSharedResourceDescription;
+import static org.apache.uima.fit.factory.JCasFactory.createJCas;
+import static org.apache.uima.fit.pipeline.SimplePipeline.runPipeline;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
@@ -59,6 +62,8 @@
import org.apache.uima.fit.factory.locator.JndiResourceLocator;
import org.apache.uima.fit.internal.ResourceManagerFactory;
import org.apache.uima.fit.pipeline.SimplePipeline;
+import org.apache.uima.fit.type.AnalyzedText;
+import org.apache.uima.fit.util.JCasUtil;
import org.apache.uima.fit.util.SimpleNamedResourceManager;
import org.apache.uima.jcas.JCas;
import org.apache.uima.resource.DataResource;
@@ -350,7 +355,61 @@
ae.process(ae.newJCas());
ae.collectionProcessComplete();
}
-
+
+ @Test
+ public void testNestedAggregateBinding() throws Exception {
+ ExternalResourceDescription resourceDescription = createSharedResourceDescription("",
+ DummyResource.class);
+
+ AggregateBuilder builder = new AggregateBuilder();
+ builder.add(createEngineDescription(ResourceDependent.class));
+ AnalysisEngineDescription aggregateDescription = builder.createAggregateDescription();
+
+ bindResource(aggregateDescription, DummyResource.RESOURCE_KEY, resourceDescription);
+
+ JCas jCas = createJCas();
+ jCas.setDocumentText("Hello");
+
+ runPipeline(jCas, aggregateDescription);
+ int count = 0;
+ for (AnalyzedText annotation : JCasUtil.select(jCas, AnalyzedText.class)) {
+ assertEquals("World", annotation.getText());
+ count++;
+ }
+
+ assertEquals(1, count);
+ }
+
+ public static class DummyResource implements SharedResourceObject {
+
+ public static final String RESOURCE_KEY = "DummyResource";
+
+ public DummyResource() {
+ }
+
+ @Override
+ public void load(DataResource aData) throws ResourceInitializationException {
+ // Nothing to do
+ }
+
+ public String getText() {
+ return "World";
+ }
+ }
+
+ public static class ResourceDependent extends JCasAnnotator_ImplBase {
+
+ @ExternalResource(key = DummyResource.RESOURCE_KEY)
+ private DummyResource dummyResource;
+
+ @Override
+ public void process(JCas aJCas) throws AnalysisEngineProcessException {
+ // Just marking up that the AE was executed as expected, so that it can be verified.
+ AnalyzedText annotation = new AnalyzedText(aJCas, 0, aJCas.getDocumentText().length());
+ annotation.setText(dummyResource.getText());
+ annotation.addToIndexes();
+ }
+ }
private static void bindResources(AnalysisEngineDescription desc) throws Exception {
bindResource(desc, ResourceWithAssert.class);