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 2019/05/22 10:38:43 UTC
svn commit: r1859714 - in /uima/ruta/trunk/ruta-core/src:
main/antlr3/org/apache/uima/ruta/parser/
main/java/org/apache/uima/ruta/descriptor/
test/java/org/apache/uima/ruta/descriptor/
test/java/org/apache/uima/ruta/engine/
Author: pkluegl
Date: Wed May 22 10:38:43 2019
New Revision: 1859714
URL: http://svn.apache.org/viewvc?rev=1859714&view=rev
Log:
UIMA-6051: fixing complete name in types declared in anonymous scripts
Modified:
uima/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaParser.g
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaDescriptorBuilder.java
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/descriptor/GenerateDescriptorTest.java
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/engine/RutaEngineTest.java
Modified: uima/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaParser.g
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaParser.g?rev=1859714&r1=1859713&r2=1859714&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaParser.g (original)
+++ uima/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaParser.g Wed May 22 10:38:43 2019
@@ -242,44 +242,57 @@ public void setExternalFactory(RutaExter
public void addType(RutaBlock parent, Token nameToken, Token parentTypeToken, List featureTypes,
List featureNames) {
- String name = nameToken.getText();
- String parentType = "uima.tcas.Annotation";
- if(parentTypeToken != null) {
- parentType = parentTypeToken.getText();
+
+
+
+ String name = nameToken.getText();
+ String parentType = "uima.tcas.Annotation";
+ if(parentTypeToken != null) {
+ parentType = parentTypeToken.getText();
}
+
String resolvedType = name;
+
if (!name.contains(".")) {
- if(StringUtils.isBlank(moduleName)) {
- resolvedType = namespace + "." + name;
+ List<String> typeNameParts = new ArrayList<>();
+
+ if(parent != null && !StringUtils.isBlank(parent.getNamespace())) {
+ typeNameParts.add(parent.getNamespace());
} else {
- resolvedType = namespace + "." + moduleName + "." + name;
- }
+ if(!StringUtils.isBlank(namespace)) {
+ typeNameParts.add(namespace);
+ }
+ if(!StringUtils.isBlank(moduleName)) {
+ typeNameParts.add(moduleName);
+ }
+ }
+ typeNameParts.add(name);
+ resolvedType = StringUtils.join(typeNameParts, ".");
}
- parent.getEnvironment().declareType(resolvedType);
- if(descInfo != null) {
- name = parent.getNamespace() + "." + name.trim();
- String descriptionString = null;
- if(StringUtils.isBlank(namespace)) {
- if(StringUtils.isBlank(moduleName)) {
- descriptionString = "Type defined in unknown script.";
- } else {
- descriptionString = "Type defined in " + moduleName;
- }
-
- } else {
- descriptionString = "Type defined in " + parent.getNamespace();
- }
- descInfo.addType(name, descriptionString, parentType);
- if(featureTypes != null && featureNames != null) {
- for (int i = 0; i < featureTypes.size(); i++) {
- Object object = featureTypes.get(i);
- String ftype = (String) featureTypes.get(i);
- String fname = (String) featureNames.get(i);
- descInfo.addFeature(name, fname, fname, ftype);
- }
- }
+ parent.getEnvironment().declareType(resolvedType);
+
+ if(descInfo != null) {
+ String descriptionString = null;
+ if(StringUtils.isBlank(namespace)) {
+ if(StringUtils.isBlank(moduleName)) {
+ descriptionString = "Type defined in unknown script.";
+ } else {
+ descriptionString = "Type defined in " + moduleName;
+ }
+ } else {
+ descriptionString = "Type defined in " + parent.getNamespace();
+ }
+ descInfo.addType(resolvedType, descriptionString, parentType);
+ if(featureTypes != null && featureNames != null) {
+ for (int i = 0; i < featureTypes.size(); i++) {
+ Object object = featureTypes.get(i);
+ String ftype = (String) featureTypes.get(i);
+ String fname = (String) featureNames.get(i);
+ descInfo.addFeature(resolvedType, fname, fname, ftype);
+ }
+ }
}
- }
+ }
public boolean isType(RutaBlock parent, String type) {
return parent.getEnvironment().getType(type) != null || type.equals("Document");
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaDescriptorBuilder.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaDescriptorBuilder.java?rev=1859714&r1=1859713&r2=1859714&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaDescriptorBuilder.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaDescriptorBuilder.java Wed May 22 10:38:43 2019
@@ -399,8 +399,6 @@ public class RutaDescriptorBuilder {
if (name.indexOf(".") == -1) {
if (types.containsKey(name)) {
name = types.get(name);
- } else {
- name = packageName + "." + name;
}
}
int lastIndexOf = name.lastIndexOf(".");
Modified: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/descriptor/GenerateDescriptorTest.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/descriptor/GenerateDescriptorTest.java?rev=1859714&r1=1859713&r2=1859714&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/descriptor/GenerateDescriptorTest.java (original)
+++ uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/descriptor/GenerateDescriptorTest.java Wed May 22 10:38:43 2019
@@ -180,7 +180,7 @@ public class GenerateDescriptorTest {
}
@Test
- public void testRuleScriptName() throws Exception {
+ public void testTypeWithRuleScriptNameWithPackage() throws Exception {
String script = "";
script += "PACKAGE test.package;\n";
@@ -191,7 +191,7 @@ public class GenerateDescriptorTest {
RutaBuildOptions options = new RutaBuildOptions();
RutaDescriptorInformation descriptorInformation = rdf.parseDescriptorInformation(script, null,
options);
- String typeSystemOutput = "target/temp/testRuleScriptName_TypeSystem.xml";
+ String typeSystemOutput = "target/temp/testTypeWithRuleScriptNameWithPackage_TypeSystem.xml";
ClassLoader classLoader = GenerateDescriptorTest.class.getClassLoader();
TypeSystemDescription tsd = rdf.createTypeSystemDescription(typeSystemOutput,
descriptorInformation, options, classLoader);
@@ -202,6 +202,29 @@ public class GenerateDescriptorTest {
Assert.assertNotNull(tagType);
}
+
+ @Test
+ public void testTypeWithRuleScriptNameWithoutPackage() throws Exception {
+
+ String script = "";
+ script += "DECLARE SimpleType;\n";
+
+ RutaDescriptorFactory rdf = new RutaDescriptorFactory(GenerateDescriptorTest.basicTSUrl,
+ GenerateDescriptorTest.basicAEUrl);
+ RutaBuildOptions options = new RutaBuildOptions();
+ RutaDescriptorInformation descriptorInformation = rdf.parseDescriptorInformation(script, null,
+ options);
+ String typeSystemOutput = "target/temp/testTypeWithRuleScriptNameWithoutPackage_TypeSystem.xml";
+ ClassLoader classLoader = GenerateDescriptorTest.class.getClassLoader();
+ TypeSystemDescription tsd = rdf.createTypeSystemDescription(typeSystemOutput,
+ descriptorInformation, options, classLoader);
+ ResourceManager rm = new ResourceManager_impl(classLoader);
+ tsd.resolveImports(rm);
+
+ TypeDescription tagType = tsd.getType("SimpleType");
+ Assert.assertNotNull(tagType);
+
+ }
@Test
public void testScriptOnly() throws Exception {
Modified: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/engine/RutaEngineTest.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/engine/RutaEngineTest.java?rev=1859714&r1=1859713&r2=1859714&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/engine/RutaEngineTest.java (original)
+++ uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/engine/RutaEngineTest.java Wed May 22 10:38:43 2019
@@ -26,17 +26,27 @@ import java.util.List;
import org.apache.commons.lang3.NotImplementedException;
import org.apache.commons.lang3.reflect.FieldUtils;
+import org.apache.commons.lang3.tuple.Pair;
+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.cas.CAS;
+import org.apache.uima.cas.Type;
+import org.apache.uima.cas.text.AnnotationFS;
import org.apache.uima.fit.factory.AnalysisEngineFactory;
import org.apache.uima.fit.internal.ResourceManagerFactory;
import org.apache.uima.fit.internal.ResourceManagerFactory.ResourceManagerCreator;
+import org.apache.uima.fit.util.CasUtil;
import org.apache.uima.jcas.JCas;
import org.apache.uima.resource.ResourceInitializationException;
import org.apache.uima.resource.ResourceManager;
+import org.apache.uima.resource.metadata.TypeSystemDescription;
import org.apache.uima.ruta.RutaProcessRuntimeException;
import org.apache.uima.ruta.TypeUsageInformation;
+import org.apache.uima.ruta.descriptor.RutaBuildOptions;
+import org.apache.uima.ruta.descriptor.RutaDescriptorFactory;
+import org.apache.uima.ruta.descriptor.RutaDescriptorInformation;
import org.junit.Assert;
import org.junit.Test;
@@ -179,4 +189,56 @@ public class RutaEngineTest {
ae.process(cas);
}
+ @Test
+ public void testProcessWithRulesDeclareWithoutPackage() throws Throwable {
+
+ String rules = "DECLARE MyType; SW{-> MyType};";
+ String text = "This is a test";
+
+ RutaDescriptorFactory rdf = new RutaDescriptorFactory();
+ RutaBuildOptions buildOptions = new RutaBuildOptions();
+ RutaDescriptorInformation descriptorInformation = rdf.parseDescriptorInformation(rules, "",
+ buildOptions);
+ Pair<AnalysisEngineDescription, TypeSystemDescription> descriptions = rdf
+ .createDescriptions(null, null, descriptorInformation, buildOptions, null, null, null);
+
+ AnalysisEngine ae = UIMAFramework.produceAnalysisEngine(descriptions.getLeft());
+ CAS cas = ae.newCAS();
+ cas.setDocumentText(text);
+
+ ae.process(cas);
+
+ Type type = cas.getTypeSystem().getType("MyType");
+ Assert.assertNotNull(type);
+ Collection<AnnotationFS> select = CasUtil.select(cas, type);
+ Assert.assertEquals(3, select.size());
+
+ }
+
+ @Test
+ public void testProcessWithRulesDeclareWithPackage() throws Throwable {
+
+ String rules = "PACKAGE pack; DECLARE MyType; SW{-> MyType};";
+ String text = "This is a test";
+
+ RutaDescriptorFactory rdf = new RutaDescriptorFactory();
+ RutaBuildOptions buildOptions = new RutaBuildOptions();
+ RutaDescriptorInformation descriptorInformation = rdf.parseDescriptorInformation(rules, "",
+ buildOptions);
+ Pair<AnalysisEngineDescription, TypeSystemDescription> descriptions = rdf
+ .createDescriptions(null, null, descriptorInformation, buildOptions, null, null, null);
+
+ AnalysisEngine ae = UIMAFramework.produceAnalysisEngine(descriptions.getLeft());
+ CAS cas = ae.newCAS();
+ cas.setDocumentText(text);
+
+ ae.process(cas);
+
+ Type type = cas.getTypeSystem().getType("pack.MyType");
+ Assert.assertNotNull(type);
+ Collection<AnnotationFS> select = CasUtil.select(cas, type);
+ Assert.assertEquals(3, select.size());
+
+ }
+
}