You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by al...@apache.org on 2007/01/25 21:23:15 UTC
svn commit: r499948 - in /incubator/uima/uimaj/trunk/uimaj-core/src:
main/java/org/apache/uima/analysis_engine/impl/
main/java/org/apache/uima/resource/
main/java/org/apache/uima/resource/impl/ main/resources/org/apache/uima/
test/java/org/apache/uima/...
Author: alally
Date: Thu Jan 25 12:23:12 2007
New Revision: 499948
URL: http://svn.apache.org/viewvc?view=rev&rev=499948
Log:
Improved error message when descriptor for fixedFlow or
capabilityLanguageFlow references an undefined delegate key.
UIMA-229: https://issues.apache.org/jira/browse/UIMA-229
Added:
incubator/uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/InvalidAggregate_UndefinedKeyInFlow.xml
Modified:
incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/AnalysisEngineDescription_impl.java
incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ResourceInitializationException.java
incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/ResourceCreationSpecifier_impl.java
incubator/uima/uimaj/trunk/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties
incubator/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/AnalysisEngineDescription_implTest.java
Modified: incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/AnalysisEngineDescription_impl.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/AnalysisEngineDescription_impl.java?view=diff&rev=499948&r1=499947&r2=499948
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/AnalysisEngineDescription_impl.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/AnalysisEngineDescription_impl.java Thu Jan 25 12:23:12 2007
@@ -33,11 +33,16 @@
import java.util.Set;
import java.util.TreeMap;
+import javax.security.auth.callback.LanguageCallback;
+
import org.apache.uima.Constants;
import org.apache.uima.UIMAFramework;
import org.apache.uima.analysis_engine.AnalysisEngine;
import org.apache.uima.analysis_engine.AnalysisEngineDescription;
import org.apache.uima.analysis_engine.metadata.AnalysisEngineMetaData;
+import org.apache.uima.analysis_engine.metadata.CapabilityLanguageFlow;
+import org.apache.uima.analysis_engine.metadata.FixedFlow;
+import org.apache.uima.analysis_engine.metadata.FlowConstraints;
import org.apache.uima.analysis_engine.metadata.FlowControllerDeclaration;
import org.apache.uima.analysis_engine.metadata.SofaMapping;
import org.apache.uima.analysis_engine.metadata.impl.AnalysisEngineMetaData_impl;
@@ -288,23 +293,41 @@
* check configuration parameter settings - that must be done by an explicit call to
* validateConfigurationParameterSettings.
*
- * @param aDesc
- * the AnalysisEngineDescripion to validate
- *
+ * @param aResourceManager
+ * a ResourceManager instance to use to resolve imports by name.
+ *
* @throws ResourceInitializationException
* if <code>aDesc</code> is invalid
* @throws ResourceConfigurationException
* if the configuration parameter settings in <code>aDesc</code> are invalid
*/
- public void validate() throws ResourceInitializationException, ResourceConfigurationException {
+ public void validate(ResourceManager aResourceManager) throws ResourceInitializationException, ResourceConfigurationException {
// do validation common to all descriptor types (e.g. config parameters)
- super.validate();
+ super.validate(aResourceManager);
// TypeSystem may not be specified for an Aggregate Analysis Engine
if (!isPrimitive() && getAnalysisEngineMetaData().getTypeSystem() != null) {
throw new ResourceInitializationException(
ResourceInitializationException.AGGREGATE_AE_TYPE_SYSTEM,
new Object[] { getSourceUrlString() });
+ }
+
+ //Keys in FixedFlow or LanguageCapabilityFlow must be defined
+ FlowConstraints fc = getAnalysisEngineMetaData().getFlowConstraints();
+ String[] keys = null;
+ if (fc instanceof FixedFlow) {
+ keys = ((FixedFlow)fc).getFixedFlow();
+ }
+ else if (fc instanceof CapabilityLanguageFlow) {
+ keys = ((CapabilityLanguageFlow)fc).getCapabilityLanguageFlow();
+ }
+ if (keys != null) {
+ for (int i = 0; i < keys.length; i++) {
+ if (!getDelegateAnalysisEngineSpecifiersWithImports().containsKey(keys[i])) {
+ throw new ResourceInitializationException(ResourceInitializationException.UNDEFINED_KEY_IN_FLOW,
+ new Object[]{getAnalysisEngineMetaData().getName(), keys[i], getSourceUrlString()});
+ }
+ }
}
}
Modified: incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ResourceInitializationException.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ResourceInitializationException.java?view=diff&rev=499948&r1=499947&r2=499948
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ResourceInitializationException.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ResourceInitializationException.java Thu Jan 25 12:23:12 2007
@@ -424,6 +424,13 @@
public static final String SOFA_MAPPING_NOT_SUPPORTED_FOR_REMOTE = "sofa_mapping_not_supported_for_remote";
/**
+ * Message key for a standard UIMA exception message: The descriptor for Aggregate Analysis Engine "{0}"
+ * specified an invalid flow. The key "{1}" was used in the flow but is not defined as a key in the
+ * <delegateAnalysisEngineSpecifiers> element of the descriptor.
+ */
+ public static final String UNDEFINED_KEY_IN_FLOW = "undefined_key_in_flow";
+
+ /**
* Creates a new exception with a null message.
*/
public ResourceInitializationException() {
Modified: incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/ResourceCreationSpecifier_impl.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/ResourceCreationSpecifier_impl.java?view=diff&rev=499948&r1=499947&r2=499948
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/ResourceCreationSpecifier_impl.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/ResourceCreationSpecifier_impl.java Thu Jan 25 12:23:12 2007
@@ -205,7 +205,7 @@
* @throws ResourceConfigurationException
* if the configuration parameter settings in <code>aDesc</code> are invalid
*/
- public void validate() throws ResourceInitializationException, ResourceConfigurationException {
+ public final void validate() throws ResourceInitializationException, ResourceConfigurationException {
validate(UIMAFramework.newDefaultResourceManager());
}
Modified: incubator/uima/uimaj/trunk/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties?view=diff&rev=499948&r1=499947&r2=499948
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties Thu Jan 25 12:23:12 2007
@@ -354,6 +354,9 @@
supported for remote Analysis Engines. A workaround is to wrap the remotely deployed AE in an Aggregate (on the remote side), \
and specify Sofa mappings in that aggregate.
+undefined_key_in_flow = The descriptor for Aggregate Analysis Engine "{0}" specified an invalid flow. The key "{1}" was used in the flow \
+ but is not defined as a key in the <delegateAnalysisEngineSpecifiers> element of the descriptor. (Descriptor: {2})
+
#---------------------------
#ResourceAccessException
#---------------------------
Modified: incubator/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/AnalysisEngineDescription_implTest.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/AnalysisEngineDescription_implTest.java?view=diff&rev=499948&r1=499947&r2=499948
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/AnalysisEngineDescription_implTest.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/AnalysisEngineDescription_implTest.java Thu Jan 25 12:23:12 2007
@@ -462,6 +462,21 @@
File dataPathDir = JUnitExtension.getFile("TextAnalysisEngineImplTest/dataPathDir");
resMgr.setDataPath(dataPathDir.getCanonicalPath());
desc.validate(resMgr);
+
+ //test invalid aggregate with undefined key in flow
+ in = new XMLInputSource(JUnitExtension
+ .getFile("TextAnalysisEngineImplTest/InvalidAggregate_UndefinedKeyInFlow.xml"));
+ desc = UIMAFramework.getXMLParser().parseAnalysisEngineDescription(in);
+ try {
+ desc.validate();
+ fail();
+ }
+ catch(ResourceInitializationException e) {
+ e.printStackTrace();
+ assertEquals(ResourceInitializationException.UNDEFINED_KEY_IN_FLOW, e.getMessageKey());
+ assertNotNull(e.getMessage());
+ assertFalse(e.getMessage().startsWith("EXCEPTION MESSAGE LOCALIZATION FAILED"));
+ }
}
public void testGetAllComponentSpecifiers() throws Exception {
Added: incubator/uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/InvalidAggregate_UndefinedKeyInFlow.xml
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/InvalidAggregate_UndefinedKeyInFlow.xml?view=auto&rev=499948
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/InvalidAggregate_UndefinedKeyInFlow.xml (added)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/test/resources/TextAnalysisEngineImplTest/InvalidAggregate_UndefinedKeyInFlow.xml Thu Jan 25 12:23:12 2007
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ -->
+
+<!-- Descriptor for testing configuration groups. -->
+
+<taeDescription xmlns="http://uima.apache.org/resourceSpecifier">
+<frameworkImplementation>org.apache.uima.java</frameworkImplementation>
+<primitive>false</primitive>
+
+<delegateAnalysisEngineSpecifiers>
+<delegateAnalysisEngine key="Annotator1">
+ <import location="AnnotatorWithConfigurationGroups.xml"/>
+</delegateAnalysisEngine>
+
+<delegateAnalysisEngine key="Annotator2">
+ <import location="AnnotatorWithConfigurationGroups.xml"/>
+</delegateAnalysisEngine>
+</delegateAnalysisEngineSpecifiers>
+
+<analysisEngineMetaData>
+<name>Invalid Aggregate - Undefined Key in Flow</name>
+<description>This aggregate descriptor uses key "Annotator3" in its flow, but that key
+ is not defined. This should be caught during validation.</description>
+<version>1.0</version>
+<vendor>The Apache Software Foundation</vendor>
+
+<flowConstraints>
+ <fixedFlow>
+ <node>Annotator1</node>
+ <node>Annotator2</node>
+ <node>Annotator3</node> <!-- Invalid -->
+ </fixedFlow>
+</flowConstraints>
+
+<!-- Capabilities: Inputs and Outputs -->
+<capabilities>
+<capability>
+<inputs/>
+<outputs/>
+<languagesSupported/>
+</capability>
+</capabilities>
+
+<operationalProperties>
+ <modifiesCas>true</modifiesCas>
+ <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
+ <outputsNewCASes>false</outputsNewCASes>
+</operationalProperties>
+
+</analysisEngineMetaData>
+
+</taeDescription>