You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by tw...@apache.org on 2008/02/25 18:42:40 UTC
svn commit: r630949 - in /incubator/uima/uimaj/trunk/uimaj-core/src:
main/java/org/apache/uima/resource/ main/java/org/apache/uima/util/
main/resources/org/apache/uima/
test/java/org/apache/uima/analysis_engine/impl/
test/resources/org/apache/uima/anal...
Author: twgoetz
Date: Mon Feb 25 09:42:25 2008
New Revision: 630949
URL: http://svn.apache.org/viewvc?rev=630949&view=rev
Log:
Jira UIMA-733: throw exception when redefining supertype of built-in type.
https://issues.apache.org/jira/browse/UIMA-733
Added:
incubator/uima/uimaj/trunk/uimaj-core/src/test/resources/org/apache/uima/analysis_engine/impl/documentAnnotationRedefinitionTS.xml
Modified:
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/util/CasCreationUtils.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/resource/ResourceInitializationException.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ResourceInitializationException.java?rev=630949&r1=630948&r2=630949&view=diff
==============================================================================
--- 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 Mon Feb 25 09:42:25 2008
@@ -466,6 +466,8 @@
* Unexpected Throwable or Error thrown when initializing Custom Resource "{0}" from descriptor "{1}".
*/
public static final String THROWABLE_WHEN_INITIALIZING_CUSTOM_RESOURCE = "throwable_when_initializing_custom_resource";
+
+ public static final String REDEFINING_BUILTIN_TYPE = "redefining_builtin_type";
/**
* Creates a new exception with a null message.
Modified: incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/util/CasCreationUtils.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/util/CasCreationUtils.java?rev=630949&r1=630948&r2=630949&view=diff
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/util/CasCreationUtils.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/util/CasCreationUtils.java Mon Feb 25 09:42:25 2008
@@ -680,6 +680,16 @@
ResourceInitializationException.NO_SUPERTYPE, new Object[] { typeName,
curTypeDesc.getSourceUrlString() });
}
+ // Check if it's a built-in type: must not change supertype!
+ Type builtIn = typeSystemMgr.getType(typeName);
+ if (builtIn != null) {
+ if (!superTypeName.equals(typeSystemMgr.getParent(builtIn).getName())) {
+ throw new ResourceInitializationException(
+ ResourceInitializationException.REDEFINING_BUILTIN_TYPE, new Object[] {
+ typeSystemMgr.getParent(builtIn), typeName, superTypeName,
+ curTypeDesc.getSourceUrlString() });
+ }
+ }
Type supertype = typeSystemMgr.getType(superTypeName);
if (supertype != null) {
// supertype is defined, so add to CAS type system
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?rev=630949&r1=630948&r2=630949&view=diff
==============================================================================
--- 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 Mon Feb 25 09:42:25 2008
@@ -383,6 +383,8 @@
flow_controller_requires_flow_constraints = The Flow Controller "{0}" requires a flow contraints element of type "{1}" in the aggregate descriptor. \
(Descriptor: {2}).
+
+redefining_builtin_type = Can''t redefine existing supertype "{0}" of built-in type "{1}" as "{2}"; descriptor: {3}.
#---------------------------
#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?rev=630949&r1=630948&r2=630949&view=diff
==============================================================================
--- 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 Mon Feb 25 09:42:25 2008
@@ -74,8 +74,10 @@
import org.apache.uima.resource.metadata.impl.TypePriorities_impl;
import org.apache.uima.resource.metadata.impl.TypeSystemDescription_impl;
import org.apache.uima.test.junit_extension.JUnitExtension;
+import org.apache.uima.util.CasCreationUtils;
import org.apache.uima.util.InvalidXMLException;
import org.apache.uima.util.XMLInputSource;
+import org.apache.uima.util.XMLParser;
/**
* Test the AnalysisEngineDescription_impl class.
@@ -492,6 +494,27 @@
JUnitExtension.handleException(e);
}
+ }
+
+ public void testDocumentAnnotationRedefine() {
+ final String tsDescriptor =
+ "org/apache/uima/analysis_engine/impl/documentAnnotationRedefinitionTS.xml";
+ File file = JUnitExtension.getFile(tsDescriptor);
+ XMLParser parser = UIMAFramework.getXMLParser();
+ boolean resourceInitExc = false;
+ try {
+ TypeSystemDescription tsd = (TypeSystemDescription) parser.parse(new XMLInputSource(file));
+ CasCreationUtils.createCas(tsd, null, new FsIndexDescription[0]);
+ } catch (InvalidXMLException e) {
+ e.printStackTrace();
+ assertTrue(false);
+ } catch (IOException e) {
+ e.printStackTrace();
+ assertTrue(false);
+ } catch (ResourceInitializationException e) {
+ resourceInitExc = true;
+ }
+ assertTrue(resourceInitExc);
}
protected void _testInvalidDescriptor(File aFile) throws IOException {
Added: incubator/uima/uimaj/trunk/uimaj-core/src/test/resources/org/apache/uima/analysis_engine/impl/documentAnnotationRedefinitionTS.xml
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/test/resources/org/apache/uima/analysis_engine/impl/documentAnnotationRedefinitionTS.xml?rev=630949&view=auto
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/test/resources/org/apache/uima/analysis_engine/impl/documentAnnotationRedefinitionTS.xml (added)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/test/resources/org/apache/uima/analysis_engine/impl/documentAnnotationRedefinitionTS.xml Mon Feb 25 09:42:25 2008
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<typeSystemDescription xmlns="http://uima.apache.org/resourceSpecifier">
+ <name>documentAnnotationRedefinitionTS</name>
+ <description/>
+ <version>1.0</version>
+ <vendor/>
+ <types>
+ <typeDescription>
+ <name>org.apache.uima.test.MyAnnotation</name>
+ <description/>
+ <supertypeName>uima.tcas.Annotation</supertypeName>
+ </typeDescription>
+ <typeDescription>
+ <name>uima.tcas.DocumentAnnotation</name>
+ <description/>
+ <supertypeName>org.apache.uima.test.MyAnnotation</supertypeName>
+ </typeDescription>
+ <typeDescription>
+ <name>my.new.Annotation</name>
+ <description/>
+ <supertypeName>uima.cas.TOP</supertypeName>
+ </typeDescription>
+ <typeDescription>
+ <name>uima.tcas.Annotation</name>
+ <description/>
+ <supertypeName>my.new.Annotation</supertypeName>
+ </typeDescription>
+ </types>
+</typeSystemDescription>