You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by pk...@apache.org on 2013/05/04 17:36:58 UTC

svn commit: r1479130 - in /uima/sandbox/ruta/trunk/ruta-core/src: main/java/org/apache/uima/ruta/engine/Ruta.java test/java/org/apache/uima/ruta/engine/RutaTest.java

Author: pkluegl
Date: Sat May  4 15:36:46 2013
New Revision: 1479130

URL: http://svn.apache.org/r1479130
Log:
UIMA-2823
- added method for creating an analysis engine description
- added test

Modified:
    uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/engine/Ruta.java
    uima/sandbox/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/engine/RutaTest.java

Modified: uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/engine/Ruta.java
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/engine/Ruta.java?rev=1479130&r1=1479129&r2=1479130&view=diff
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/engine/Ruta.java (original)
+++ uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/engine/Ruta.java Sat May  4 15:36:46 2013
@@ -25,15 +25,23 @@ import java.io.InputStream;
 import java.net.URISyntaxException;
 import java.net.URL;
 import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
 
 import org.apache.commons.io.IOUtils;
 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.AnalysisEngineProcessException;
+import org.apache.uima.analysis_engine.metadata.AnalysisEngineMetaData;
 import org.apache.uima.cas.CAS;
 import org.apache.uima.resource.ResourceConfigurationException;
 import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.resource.ResourceSpecifier;
+import org.apache.uima.resource.metadata.ConfigurationParameterSettings;
+import org.apache.uima.resource.metadata.TypeSystemDescription;
+import org.apache.uima.util.CasCreationUtils;
 import org.apache.uima.util.FileUtils;
 import org.apache.uima.util.InvalidXMLException;
 import org.apache.uima.util.XMLInputSource;
@@ -46,15 +54,15 @@ public class Ruta {
     String viewName = cas.getViewName();
     URL aedesc = RutaEngine.class.getResource("BasicEngine.xml");
     AnalysisEngine ae = wrapAnalysisEngine(aedesc, viewName);
-    
+
     File scriptFile = File.createTempFile("Ruta", RutaEngine.SCRIPT_FILE_EXTENSION);
     scriptFile.deleteOnExit();
     if (!script.startsWith("PACKAGE")) {
       script = "PACKAGE org.apache.uima.ruta;\n" + script;
     }
     FileUtils.saveString2File(script, scriptFile);
-    ae.setConfigParameterValue(RutaEngine.SCRIPT_PATHS, new String[] { scriptFile
-            .getParentFile().getAbsolutePath() });
+    ae.setConfigParameterValue(RutaEngine.SCRIPT_PATHS, new String[] { scriptFile.getParentFile()
+            .getAbsolutePath() });
     String name = scriptFile.getName().substring(0, scriptFile.getName().length() - 5);
     ae.setConfigParameterValue(RutaEngine.MAIN_SCRIPT, name);
     ae.reconfigure();
@@ -69,9 +77,9 @@ public class Ruta {
     return wrapAnalysisEngine(descriptorUrl, viewName, false, Charset.defaultCharset().name());
   }
 
-  public static AnalysisEngine wrapAnalysisEngine(URL descriptorUrl, String viewName, boolean rutaEngine, 
-          String encoding) throws ResourceInitializationException, ResourceConfigurationException,
-          InvalidXMLException, IOException, URISyntaxException {
+  public static AnalysisEngine wrapAnalysisEngine(URL descriptorUrl, String viewName,
+          boolean rutaEngine, String encoding) throws ResourceInitializationException,
+          ResourceConfigurationException, InvalidXMLException, IOException, URISyntaxException {
     if (viewName.equals(CAS.NAME_DEFAULT_SOFA)) {
       XMLInputSource in = new XMLInputSource(descriptorUrl);
       ResourceSpecifier specifier = UIMAFramework.getXMLParser().parseResourceSpecifier(in);
@@ -79,7 +87,7 @@ public class Ruta {
       return ae;
     } else {
       InputStream inputStream = null;
-      if(rutaEngine) {
+      if (rutaEngine) {
         inputStream = Ruta.class.getResourceAsStream("AAEDBasicEngine.xml");
       } else {
         inputStream = Ruta.class.getResourceAsStream("AAED.xml");
@@ -98,4 +106,38 @@ public class Ruta {
     }
   }
 
+  public static AnalysisEngineDescription createAnalysisEngineDescription(String script)
+          throws IOException, InvalidXMLException, ResourceInitializationException {
+    return createAnalysisEngineDescription(script, (TypeSystemDescription[]) null);
+  }
+
+  public static AnalysisEngineDescription createAnalysisEngineDescription(String script,
+          TypeSystemDescription... tsds) throws IOException, InvalidXMLException,
+          ResourceInitializationException {
+    File scriptFile = File.createTempFile("Ruta", RutaEngine.SCRIPT_FILE_EXTENSION);
+    scriptFile.deleteOnExit();
+    if (!script.startsWith("PACKAGE")) {
+      script = "PACKAGE org.apache.uima.ruta;\n" + script;
+    }
+    FileUtils.saveString2File(script, scriptFile);
+    URL url = RutaEngine.class.getResource("BasicEngine.xml");
+    XMLInputSource in = new XMLInputSource(url);
+    AnalysisEngineDescription aed = (AnalysisEngineDescription) UIMAFramework.getXMLParser()
+            .parseResourceSpecifier(in);
+    AnalysisEngineMetaData metaData = aed.getAnalysisEngineMetaData();
+    ConfigurationParameterSettings settings = metaData.getConfigurationParameterSettings();
+    settings.setParameterValue(RutaEngine.SCRIPT_PATHS, new String[] { scriptFile.getParentFile()
+            .getAbsolutePath() });
+    String name = scriptFile.getName().substring(0, scriptFile.getName().length() - 5);
+    settings.setParameterValue(RutaEngine.MAIN_SCRIPT, name);
+    if (tsds != null) {
+      List<TypeSystemDescription> tsdList = new ArrayList<TypeSystemDescription>();
+      tsdList.add(metaData.getTypeSystem());
+      tsdList.addAll(Arrays.asList(tsds));
+      TypeSystemDescription typeSystemDescription = CasCreationUtils.mergeTypeSystems(tsdList);
+      metaData.setTypeSystem(typeSystemDescription);
+    }
+    return aed;
+  }
+
 }

Modified: uima/sandbox/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/engine/RutaTest.java
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/engine/RutaTest.java?rev=1479130&r1=1479129&r2=1479130&view=diff
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/engine/RutaTest.java (original)
+++ uima/sandbox/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/engine/RutaTest.java Sat May  4 15:36:46 2013
@@ -24,13 +24,19 @@ import static org.junit.Assert.assertEqu
 import java.net.URL;
 
 import org.apache.uima.UIMAFramework;
+import org.apache.uima.analysis_engine.AnalysisEngine;
+import org.apache.uima.analysis_engine.AnalysisEngineDescription;
 import org.apache.uima.cas.CAS;
 import org.apache.uima.cas.FSIterator;
+import org.apache.uima.cas.Type;
 import org.apache.uima.cas.text.AnnotationFS;
 import org.apache.uima.cas.text.AnnotationIndex;
 import org.apache.uima.resource.metadata.FsIndexDescription;
+import org.apache.uima.resource.metadata.TypeDescription;
 import org.apache.uima.resource.metadata.TypePriorities;
 import org.apache.uima.resource.metadata.TypeSystemDescription;
+import org.apache.uima.resource.metadata.impl.TypeDescription_impl;
+import org.apache.uima.resource.metadata.impl.TypeSystemDescription_impl;
 import org.apache.uima.ruta.RutaTestUtils;
 import org.apache.uima.util.CasCreationUtils;
 import org.apache.uima.util.XMLInputSource;
@@ -39,7 +45,7 @@ import org.junit.Test;
 public class RutaTest {
 
   @Test
-  public void test() throws Exception {
+  public void testApply() throws Exception {
     URL typePrioritiesUrl = RutaTestUtils.class.getResource("TypePriorities.xml");
     URL tsUrl = RutaTestUtils.class.getResource("BasicTypeSystem.xml");
     Object descriptor = UIMAFramework.getXMLParser().parse(new XMLInputSource(tsUrl));
@@ -73,7 +79,35 @@ public class RutaTest {
     assertEquals(1, ai.size());
     assertEquals("Some document.", iterator.next().getCoveredText());
     
-    
     cas.release();
   }
+  
+  @Test
+  public void testCreateAnalysisEngineDescription() throws Exception {
+    TypeSystemDescription_impl tsdi = new TypeSystemDescription_impl();
+    String t1 = "some.type.Test1";
+    String t2 = "some.type.Test2";
+    TypeDescription_impl ti1 = new TypeDescription_impl(t1, "", "uima.tcas.Annotation");
+    TypeDescription_impl ti2 = new TypeDescription_impl(t2, "", "uima.tcas.Annotation");
+    tsdi.setTypes(new TypeDescription[] {ti1, ti2});
+    
+    String script = "CW SW{-> MARK(Test1)};\n Test1 SW{-> MARK(Test2)};";
+    AnalysisEngineDescription aed = Ruta.createAnalysisEngineDescription(script, tsdi);
+    AnalysisEngine ae = UIMAFramework.produceAnalysisEngine(aed);
+    CAS cas = ae.newCAS();
+    cas.setDocumentText("Only some text.");
+    ae.process(cas);
+
+    Type type1 = cas.getTypeSystem().getType(t1);
+    AnnotationIndex<AnnotationFS> ai1 = cas.getAnnotationIndex(type1);
+    assertEquals(1, ai1.size());
+    assertEquals("some", ai1.iterator().get().getCoveredText());
+    
+    Type type2 = cas.getTypeSystem().getType(t2);
+    AnnotationIndex<AnnotationFS> ai2 = cas.getAnnotationIndex(type2);
+    assertEquals(1, ai2.size());
+    assertEquals("text", ai2.iterator().get().getCoveredText());
+  }
+  
+  
 }