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());
+ }
+
+
}