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>