Author: rec Date: Fri May 24 22:26:51 2013 New Revision: 1486239 URL: http://svn.apache.org/r1486239 Log: [UIMA-2891] Check if type priorities may be configured on an aggregate - Added unit test if type prios on an aggregate have an effect.
Modified: uima/sandbox/uimafit/trunk/uimafit/src/test/java/org/apache/uima/fit/factory/AnalysisEngineFactoryTest.java Modified: uima/sandbox/uimafit/trunk/uimafit/src/test/java/org/apache/uima/fit/factory/AnalysisEngineFactoryTest.java URL: http://svn.apache.org/viewvc/uima/sandbox/uimafit/trunk/uimafit/src/test/java/org/apache/uima/fit/factory/AnalysisEngineFactoryTest.java?rev=1486239&r1=1486238&r2=1486239&view=diff ============================================================================== --- uima/sandbox/uimafit/trunk/uimafit/src/test/java/org/apache/uima/fit/factory/AnalysisEngineFactoryTest.java (original) +++ uima/sandbox/uimafit/trunk/uimafit/src/test/java/org/apache/uima/fit/factory/AnalysisEngineFactoryTest.java Fri May 24 22:26:51 2013 @@ -18,12 +18,16 @@ */ package org.apache.uima.fit.factory; +import static java.util.Arrays.asList; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; +import static org.apache.uima.fit.factory.AnalysisEngineFactory.createAggregateDescription; +import static org.apache.uima.fit.factory.AnalysisEngineFactory.createPrimitiveDescription; +import static org.apache.uima.fit.factory.AnalysisEngineFactory.createAggregate; import java.io.IOException; import java.lang.reflect.Array; @@ -61,8 +65,10 @@ import org.apache.uima.resource.metadata 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.ProcessingResourceMetaData; import org.apache.uima.resource.metadata.TypePriorities; import org.apache.uima.resource.metadata.TypePriorityList; +import org.apache.uima.resource.metadata.TypeSystemDescription; import org.junit.Test; /** @@ -427,15 +433,14 @@ public class AnalysisEngineFactoryTest e .getOperationalProperties().isMultipleDeploymentAllowed()); } } - + @Test - public void testResourceMetaData() throws Exception - { + public void testResourceMetaData() throws Exception { AnalysisEngineDescription desc = AnalysisEngineFactory .createPrimitiveDescription(AnnotatorWithMetaDataClass.class); - + org.apache.uima.resource.metadata.ResourceMetaData meta = desc.getMetaData(); - + assertEquals("dummy", meta.getName()); assertEquals("1.0", meta.getVersion()); assertEquals("Just a dummy", meta.getDescription()); @@ -491,7 +496,44 @@ public class AnalysisEngineFactoryTest e descriptions.add(AnalysisEngineFactory.createPrimitiveDescription(NoOpAnnotator.class)); descriptions.add(AnalysisEngineFactory.createPrimitiveDescription(NoOpAnnotator.class)); List<String> names = new ArrayList<String>(); - + AnalysisEngineFactory.createAggregateDescription(descriptions, names, null, null, null); } + + /** + * Configuring new types on an aggregate is not allowed, but configuring new priorities is + * allowed. Just testing if it actually works. + * + * @see <a href="https://issues.apache.org/jira/browse/UIMA-2891">UIMA-2891</a> + */ + @Test + public void testExtraTypeConfigsOnAggregate() throws Exception { + TypeSystemDescription typeSystem = TypeSystemDescriptionFactory.createTypeSystemDescription(); + TypePriorities extraPrios = TypePrioritiesFactory.createTypePriorities(Sentence.class, + Token.class); + + // This one doesn't use any auto-configuration + AnalysisEngineDescription ae = createPrimitiveDescription(UnannotatedAnnotatorClass.class, + typeSystem, null, null, null, null, null, null); + + // Try configuring priorities on the aggregate + AnalysisEngineDescription aae = createAggregateDescription(asList(ae), asList("ae1"), + extraPrios, null, null); + + AnalysisEngine engine = createAggregate(aae); + ProcessingResourceMetaData meta = engine.getProcessingResourceMetaData(); + + // When the meta data from the ae and the aae are merged in the engine, then it should be a + // new instance. + assertFalse("Merged meta-data is same instance as original", + aae.getMetaData().hashCode() == meta.hashCode()); + assertFalse("Merged meta-data is same instance as original", + ae.getMetaData().hashCode() == meta.hashCode()); + + // Check that the priorities arrived + TypePriorities expected = ((ProcessingResourceMetaData) aae.getMetaData()).getTypePriorities(); + TypePriorities actual = meta.getTypePriorities(); + assertArrayEquals(expected.getPriorityLists()[0].getTypes(), + actual.getPriorityLists()[0].getTypes()); + } }