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 2020/03/22 19:09:39 UTC
[uima-uimafit] 01/01: [UIMA-6204] createReaderDescription does not
discover type priorities
This is an automated email from the ASF dual-hosted git repository.
rec pushed a commit to branch bugfix/UIMA-6204-createReaderDescription-does-not-discover-type-priorities
in repository https://gitbox.apache.org/repos/asf/uima-uimafit.git
commit bdb6c546133c8914ca0a92915e9e6ff62e36628f
Author: Richard Eckart de Castilho <re...@apache.org>
AuthorDate: Sun Mar 22 20:09:29 2020 +0100
[UIMA-6204] createReaderDescription does not discover type priorities
- Auto-detect type priorities and index definitions in createReaderDescripton
- Added unit tests for auto-detection of types, prios and indexes to AnalysisEngineFactoryTest and CollectionReaderFactoryTest
- Ugraded a unit test in TypePrioritiesFactoryTest to assertj
---
.../uima/fit/factory/CollectionReaderFactory.java | 13 +++--
.../fit/factory/AnalysisEngineFactoryTest.java | 45 +++++++++++++----
.../fit/factory/CollectionReaderFactoryTest.java | 59 ++++++++++++++++++----
.../fit/factory/TypePrioritiesFactoryTest.java | 8 +--
4 files changed, 100 insertions(+), 25 deletions(-)
diff --git a/uimafit-core/src/main/java/org/apache/uima/fit/factory/CollectionReaderFactory.java b/uimafit-core/src/main/java/org/apache/uima/fit/factory/CollectionReaderFactory.java
index de53ef7..86df13d 100644
--- a/uimafit-core/src/main/java/org/apache/uima/fit/factory/CollectionReaderFactory.java
+++ b/uimafit-core/src/main/java/org/apache/uima/fit/factory/CollectionReaderFactory.java
@@ -437,8 +437,10 @@ public final class CollectionReaderFactory {
/**
* A simple factory method for creating a CollectionReaderDescription with a given class, type
- * system description, and configuration data The type system is detected automatically using
- * {@link TypeSystemDescriptionFactory#createTypeSystemDescription()}.
+ * system description, and configuration data. The type system is detected automatically using
+ * {@link TypeSystemDescriptionFactory#createTypeSystemDescription()}. Type priorities are
+ * detected automatically using {@link TypePrioritiesFactory#createTypePriorities()}. Indexes are
+ * detected automatically using {@link FsIndexFactory#createFsIndexCollection()}.
*
* @param readerClass
* The class of the CollectionReader to be created.
@@ -453,8 +455,11 @@ public final class CollectionReaderFactory {
public static CollectionReaderDescription createReaderDescription(
Class<? extends CollectionReader> readerClass, Object... configurationData)
throws ResourceInitializationException {
- TypeSystemDescription tsd = createTypeSystemDescription();
- return createReaderDescription(readerClass, tsd, (TypePriorities) null, configurationData);
+ TypeSystemDescription typeSystem = createTypeSystemDescription();
+ TypePriorities typePriorities = createTypePriorities();
+ FsIndexCollection fsIndexCollection = createFsIndexCollection();
+ return createReaderDescription(readerClass, typeSystem, typePriorities, fsIndexCollection,
+ (Capability[]) null, configurationData);
}
/**
diff --git a/uimafit-core/src/test/java/org/apache/uima/fit/factory/AnalysisEngineFactoryTest.java b/uimafit-core/src/test/java/org/apache/uima/fit/factory/AnalysisEngineFactoryTest.java
index 6cb703a..e5ee069 100644
--- a/uimafit-core/src/test/java/org/apache/uima/fit/factory/AnalysisEngineFactoryTest.java
+++ b/uimafit-core/src/test/java/org/apache/uima/fit/factory/AnalysisEngineFactoryTest.java
@@ -21,6 +21,9 @@ package org.apache.uima.fit.factory;
import static java.util.Arrays.asList;
import static org.apache.uima.fit.factory.AnalysisEngineFactory.createEngine;
import static org.apache.uima.fit.factory.AnalysisEngineFactory.createEngineDescription;
+import static org.apache.uima.fit.factory.AnalysisEngineFactory.createEngineFromPath;
+import static org.apache.uima.fit.factory.TypeSystemDescriptionFactory.createTypeSystemDescription;
+import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
@@ -60,6 +63,7 @@ import org.apache.uima.fit.factory.testAes.ParameterizedAE;
import org.apache.uima.fit.factory.testAes.SerializationTestAnnotator;
import org.apache.uima.fit.factory.testAes.ViewNames;
import org.apache.uima.fit.pipeline.SimplePipeline;
+import org.apache.uima.fit.type.AnalyzedText;
import org.apache.uima.fit.type.Sentence;
import org.apache.uima.fit.type.Token;
import org.apache.uima.fit.util.CasIOUtil;
@@ -70,25 +74,19 @@ import org.apache.uima.pear.tools.PackageBrowser;
import org.apache.uima.pear.tools.PackageInstaller;
import org.apache.uima.resource.PearSpecifier;
import org.apache.uima.resource.ResourceInitializationException;
-import org.apache.uima.resource.ResourceManager;
-import org.apache.uima.resource.ResourceSpecifier;
import org.apache.uima.resource.metadata.Capability;
import org.apache.uima.resource.metadata.ConfigurationParameter;
import org.apache.uima.resource.metadata.ConfigurationParameterDeclarations;
import org.apache.uima.resource.metadata.ConfigurationParameterSettings;
+import org.apache.uima.resource.metadata.FsIndexDescription;
import org.apache.uima.resource.metadata.ProcessingResourceMetaData;
import org.apache.uima.resource.metadata.TypePriorities;
import org.apache.uima.resource.metadata.TypePriorityList;
import org.apache.uima.resource.metadata.TypeSystemDescription;
import org.apache.uima.util.XMLInputSource;
import org.custommonkey.xmlunit.XMLAssert;
-import org.custommonkey.xmlunit.XMLUnit;
-import org.junit.Assert;
import org.junit.Test;
-/**
- */
-
public class AnalysisEngineFactoryTest extends ComponentTestBase {
@Test
@@ -106,8 +104,8 @@ public class AnalysisEngineFactoryTest extends ComponentTestBase {
@Test
public void testCreateAnalysisEngineFromPath() throws UIMAException, IOException {
- AnalysisEngine engine = AnalysisEngineFactory
- .createEngineFromPath("src/main/resources/org/apache/uima/fit/component/NoOpAnnotator.xml");
+ AnalysisEngine engine = createEngineFromPath(
+ "src/main/resources/org/apache/uima/fit/component/NoOpAnnotator.xml");
assertNotNull(engine);
}
@@ -590,4 +588,33 @@ public class AnalysisEngineFactoryTest extends ComponentTestBase {
cas.setDocumentLanguage("en");
ae.process(cas);
}
+
+ @Test
+ public void thatCreateEngineDescriptorAutoDetectionWorks() throws Exception
+ {
+ AnalysisEngineDescription aed = createEngineDescription(NoOpAnnotator.class);
+
+ TypeSystemDescription tsd = createTypeSystemDescription();
+ assertThat(tsd.getType(Token.class.getName()))
+ .as("Token type auto-detection")
+ .isNotNull();
+ assertThat(tsd.getType(Sentence.class.getName()))
+ .as("Sentence type auto-detection")
+ .isNotNull();
+ assertThat(tsd.getType(AnalyzedText.class.getName()))
+ .as("AnalyzedText type auto-detection")
+ .isNotNull();
+
+ TypePriorityList[] typePrioritiesLists = typePriorities.getPriorityLists();
+ assertThat(typePrioritiesLists.length).isEqualTo(1);
+ assertThat(typePrioritiesLists[0].getTypes())
+ .as("Type priorities auto-detection")
+ .containsExactly(Sentence.class.getName(), AnalyzedText.class.getName(), Token.class.getName());
+
+ FsIndexDescription[] indexes = aed.getAnalysisEngineMetaData().getFsIndexCollection().getFsIndexes();
+ assertThat(indexes.length).isEqualTo(1);
+ assertThat(indexes[0])
+ .extracting(FsIndexDescription::getLabel, FsIndexDescription::getTypeName, FsIndexDescription::getKind)
+ .containsExactly("Automatically Scanned Index", Token.class.getName(), FsIndexDescription.KIND_SORTED);
+ }
}
diff --git a/uimafit-core/src/test/java/org/apache/uima/fit/factory/CollectionReaderFactoryTest.java b/uimafit-core/src/test/java/org/apache/uima/fit/factory/CollectionReaderFactoryTest.java
index a43eba7..e2f1a73 100644
--- a/uimafit-core/src/test/java/org/apache/uima/fit/factory/CollectionReaderFactoryTest.java
+++ b/uimafit-core/src/test/java/org/apache/uima/fit/factory/CollectionReaderFactoryTest.java
@@ -18,6 +18,11 @@
*/
package org.apache.uima.fit.factory;
+import static org.apache.uima.fit.factory.CollectionReaderFactory.createReader;
+import static org.apache.uima.fit.factory.CollectionReaderFactory.createReaderDescription;
+import static org.apache.uima.fit.factory.CollectionReaderFactory.createReaderFromPath;
+import static org.apache.uima.fit.factory.TypeSystemDescriptionFactory.createTypeSystemDescription;
+import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
@@ -33,24 +38,26 @@ import org.apache.uima.fit.ComponentTestBase;
import org.apache.uima.fit.descriptor.ResourceMetaData;
import org.apache.uima.fit.factory.testCrs.SingleFileXReader;
import org.apache.uima.fit.pipeline.JCasIterator;
+import org.apache.uima.fit.type.AnalyzedText;
+import org.apache.uima.fit.type.Sentence;
import org.apache.uima.fit.type.Token;
import org.apache.uima.fit.util.JCasUtil;
import org.apache.uima.resource.ResourceInitializationException;
+import org.apache.uima.resource.metadata.FsIndexDescription;
+import org.apache.uima.resource.metadata.TypePriorityList;
+import org.apache.uima.resource.metadata.TypeSystemDescription;
import org.apache.uima.util.Progress;
import org.junit.Test;
-/**
- */
-
public class CollectionReaderFactoryTest extends ComponentTestBase {
@Test
public void testCreateCollectionReader() throws UIMAException, IOException {
CollectionReader reader = CollectionReaderFactory.createReader(
- SingleFileXReader.class, typeSystemDescription, SingleFileXReader.PARAM_FILE_NAME,
- "src/test/resources/data/docs/test.xmi", SingleFileXReader.PARAM_XML_SCHEME,
- SingleFileXReader.XMI);
+ SingleFileXReader.class, typeSystemDescription,
+ SingleFileXReader.PARAM_FILE_NAME, "src/test/resources/data/docs/test.xmi",
+ SingleFileXReader.PARAM_XML_SCHEME, SingleFileXReader.XMI);
JCasIterator jCasIterator = new JCasIterator(reader, typeSystemDescription);
jCas = jCasIterator.next();
@@ -61,7 +68,7 @@ public class CollectionReaderFactoryTest extends ComponentTestBase {
assertEquals("A", token.getPos());
assertEquals("all", token.getStem());
- reader = CollectionReaderFactory.createReader(
+ reader = createReader(
"org.apache.uima.fit.factory.testCrs.SingleFileXReader",
SingleFileXReader.PARAM_FILE_NAME, "src/test/resources/data/docs/test.xmi",
SingleFileXReader.PARAM_XML_SCHEME, SingleFileXReader.XMI);
@@ -75,7 +82,7 @@ public class CollectionReaderFactoryTest extends ComponentTestBase {
assertEquals(".", token.getPos());
assertEquals(".", token.getStem());
- reader = CollectionReaderFactory.createReaderFromPath(
+ reader = createReaderFromPath(
"src/test/resources/org/apache/uima/fit/factory/testCrs/SingleFileXReader.xml",
SingleFileXReader.PARAM_FILE_NAME, "src/test/resources/data/docs/test.xmi",
SingleFileXReader.PARAM_XML_SCHEME, SingleFileXReader.XMI);
@@ -88,7 +95,6 @@ public class CollectionReaderFactoryTest extends ComponentTestBase {
assertEquals("friends", token.getCoveredText());
assertEquals("F", token.getPos());
assertEquals("friend", token.getStem());
-
}
@Test
@@ -103,6 +109,35 @@ public class CollectionReaderFactoryTest extends ComponentTestBase {
}
@Test
+ public void thatCreateReaderDescriptorAutoDetectionWorks() throws Exception
+ {
+ CollectionReaderDescription aed = createReaderDescription(TestCR.class);
+
+ TypeSystemDescription tsd = createTypeSystemDescription();
+ assertThat(tsd.getType(Token.class.getName()))
+ .as("Token type auto-detection")
+ .isNotNull();
+ assertThat(tsd.getType(Sentence.class.getName()))
+ .as("Sentence type auto-detection")
+ .isNotNull();
+ assertThat(tsd.getType(AnalyzedText.class.getName()))
+ .as("AnalyzedText type auto-detection")
+ .isNotNull();
+
+ TypePriorityList[] typePrioritiesLists = typePriorities.getPriorityLists();
+ assertThat(typePrioritiesLists.length).isEqualTo(1);
+ assertThat(typePrioritiesLists[0].getTypes())
+ .as("Type priorities auto-detection")
+ .containsExactly(Sentence.class.getName(), AnalyzedText.class.getName(), Token.class.getName());
+
+ FsIndexDescription[] indexes = aed.getCollectionReaderMetaData().getFsIndexCollection().getFsIndexes();
+ assertThat(indexes.length).isEqualTo(1);
+ assertThat(indexes[0])
+ .extracting(FsIndexDescription::getLabel, FsIndexDescription::getTypeName, FsIndexDescription::getKind)
+ .containsExactly("Automatically Scanned Index", Token.class.getName(), FsIndexDescription.KIND_SORTED);
+ }
+
+ @Test
public void testResourceMetaData() throws Exception
{
CollectionReaderDescription desc = CollectionReaderFactory
@@ -117,6 +152,8 @@ public class CollectionReaderFactoryTest extends ComponentTestBase {
assertEquals("uimaFIT", meta.getVendor());
}
+
+
@ResourceMetaData(name = "dummy", version = "1.0", description = "Just a dummy", copyright = "ASL 2.0", vendor = "uimaFIT")
private class TestCR extends CollectionReader_ImplBase {
@@ -124,19 +161,23 @@ public class CollectionReaderFactoryTest extends ComponentTestBase {
// do not instantiate
}
+ @Override
public void getNext(CAS acas) throws IOException, CollectionException {
// Not required for test
}
+ @Override
public void close() throws IOException {
// Not required for test
}
+ @Override
public Progress[] getProgress() {
// Not required for test
return null;
}
+ @Override
public boolean hasNext() throws IOException, CollectionException {
// Not required for test
return false;
diff --git a/uimafit-core/src/test/java/org/apache/uima/fit/factory/TypePrioritiesFactoryTest.java b/uimafit-core/src/test/java/org/apache/uima/fit/factory/TypePrioritiesFactoryTest.java
index db60a19..97e0eaf 100644
--- a/uimafit-core/src/test/java/org/apache/uima/fit/factory/TypePrioritiesFactoryTest.java
+++ b/uimafit-core/src/test/java/org/apache/uima/fit/factory/TypePrioritiesFactoryTest.java
@@ -21,6 +21,7 @@ package org.apache.uima.fit.factory;
import static org.apache.uima.fit.factory.TypePrioritiesFactory.createTypePriorities;
import static org.apache.uima.fit.factory.TypeSystemDescriptionFactory.createTypeSystemDescription;
+import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.assertEquals;
import org.apache.uima.fit.type.Sentence;
@@ -54,8 +55,9 @@ public class TypePrioritiesFactoryTest {
TypePriorities typePriorities = createTypePriorities();
TypePriorityList[] typePrioritiesLists = typePriorities.getPriorityLists();
- assertEquals(1, typePrioritiesLists.length);
- assertEquals(Sentence.class.getName(), typePrioritiesLists[0].getTypes()[0]);
- assertEquals(Token.class.getName(), typePrioritiesLists[0].getTypes()[1]);
+ assertThat(typePrioritiesLists.length).isEqualTo(1);
+ assertThat(typePrioritiesLists[0].getTypes())
+ .as("Type priorities auto-detection")
+ .containsExactly(Sentence.class.getName(), Token.class.getName());
}
}