You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by ap...@apache.org on 2014/02/02 02:21:50 UTC

svn commit: r1563535 - in /uima/ruta/trunk/ruta-core/src: main/java/org/apache/uima/ruta/RutaEnvironment.java test/java/org/apache/uima/ruta/ImportStatementsTest.java

Author: apatry
Date: Sun Feb  2 01:21:49 2014
New Revision: 1563535

URL: http://svn.apache.org/r1563535
Log:
UIMA-3303 Import type aliases when strictMode is off

Modified:
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java
    uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/ImportStatementsTest.java

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java?rev=1563535&r1=1563534&r2=1563535&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java Sun Feb  2 01:21:49 2014
@@ -186,6 +186,7 @@ public class RutaEnvironment {
       } else {
         // import all types known to the cas
         importAllTypes(cas.getTypeSystem());
+        importTypeAliases(cas.getTypeSystem());
       }
 
       // "Document" can be resolved to "uima.tcas.DocumentAnnotation" or "org.apache.uima.ruta.type.Document",
@@ -222,6 +223,27 @@ public class RutaEnvironment {
   }
 
   /**
+   * Imports all type aliases.
+   *
+   * @param casTS Cas type system.
+   */
+  private void importTypeAliases(TypeSystem casTS) {
+    // Add types that are imported explicitly
+    for (List<Alias> aliases : typeImports.values()) {
+      for (Alias alias : aliases) {
+        if (!alias.shortName.equals(alias.longName)) {
+          // we only import aliases
+          Type type = casTS.getType(alias.longName);
+          if (type == null) {
+            throw new RuntimeException("Type '" + alias.longName + "' not found");
+          }
+          addType(alias.shortName, casTS.getType(alias.longName));
+        }
+      }
+    }
+  }
+
+  /**
    * Import all types that are declared by the script or the typesystems it reference.
    *
    * @param casTS Type system containing all known types.

Modified: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/ImportStatementsTest.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/ImportStatementsTest.java?rev=1563535&r1=1563534&r2=1563535&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/ImportStatementsTest.java (original)
+++ uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/ImportStatementsTest.java Sun Feb  2 01:21:49 2014
@@ -132,6 +132,21 @@ public class ImportStatementsTest {
   }
 
   @Test
+  public void testImportTypeAsStrictModeOff() throws Exception {
+    AnalysisEngine ae = createAE(NAMESPACE + "/" + NAME + "ImportTypeAs", false);
+    try {
+      CAS cas = ae.newCAS();
+      cas.setDocumentText("First Second");
+      ae.process(cas);
+
+      assertEquals(Arrays.asList("First"), selectText(cas, "org.apache.uima.ruta.Type1"));
+      assertEquals(Arrays.asList("Second"), selectText(cas, "org.apache.uima.ruta.Type2"));
+    } finally {
+      ae.destroy();
+    }
+  }
+
+  @Test
   public void testImportStarFromTypeSystem() throws Exception {
     AnalysisEngine ae = createAE(NAMESPACE + "/" + NAME + "ImportStarFromTypeSystem", true);
     try {