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 2020/03/22 20:34:30 UTC
svn commit: r1875524 - in /uima/ruta/trunk/ruta-core/src:
main/java/org/apache/uima/ruta/ main/java/org/apache/uima/ruta/expression/
test/java/org/apache/uima/ruta/expression/annotation/
Author: pkluegl
Date: Sun Mar 22 20:34:30 2020
New Revision: 1875524
URL: http://svn.apache.org/viewvc?rev=1875524&view=rev
Log:
UIMA-6191: workaround for missing functionality: missing boolean expression for AnnotationTypeExpression and missing feature in feature expression
Modified:
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaStream.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/MatchReference.java
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/annotation/AnnotationVariableExpressionTest.java
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaStream.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaStream.java?rev=1875524&r1=1875523&r2=1875524&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaStream.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaStream.java Sun Mar 22 20:34:30 2020
@@ -67,6 +67,7 @@ import org.apache.uima.ruta.expression.b
import org.apache.uima.ruta.expression.bool.IBooleanListExpression;
import org.apache.uima.ruta.expression.feature.CoveredTextFeature;
import org.apache.uima.ruta.expression.feature.FeatureExpression;
+import org.apache.uima.ruta.expression.feature.FeatureMatchExpression;
import org.apache.uima.ruta.expression.feature.GenericFeatureExpression;
import org.apache.uima.ruta.expression.feature.LazyFeature;
import org.apache.uima.ruta.expression.feature.SimpleFeatureExpression;
@@ -1255,7 +1256,25 @@ public class RutaStream extends FSIterat
List<Type> v = ((ITypeListExpression) expression).getTypeList(context, this);
environment.setVariableValue(var, v);
}
-
+ } else if (clazz.equals(Boolean.class) && expression instanceof AnnotationTypeExpression) {
+ // special not yet supported use case: b = a1==a2
+ // TODO: this should be solved by having a boolean expression and an atomic feature
+ // expression?
+ AnnotationTypeExpression ate = (AnnotationTypeExpression) expression;
+ AnnotationFS annotation = ate.getAnnotation(context, this);
+ FeatureExpression featureExpression = ate.getFeatureExpression();
+ if (featureExpression instanceof FeatureMatchExpression) {
+ FeatureMatchExpression fme = (FeatureMatchExpression) featureExpression;
+ IRutaExpression arg = fme.getArg();
+ if (arg instanceof IAnnotationExpression) {
+ AnnotationFS argAnnotation = ((IAnnotationExpression) arg).getAnnotation(context, this);
+ if (StringUtils.equals(fme.getOp(), "==")) {
+ environment.setVariableValue(var, annotation == argAnnotation);
+ } else if (StringUtils.equals(fme.getOp(), "!=")) {
+ environment.setVariableValue(var, annotation != argAnnotation);
+ }
+ }
+ }
}
}
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/MatchReference.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/MatchReference.java?rev=1875524&r1=1875523&r2=1875524&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/MatchReference.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/MatchReference.java Sun Mar 22 20:34:30 2020
@@ -137,6 +137,10 @@ public class MatchReference extends Ruta
features = tail;
}
}
+ if (featureExpression == null && comparator != null && argument != null) {
+ featureExpression = new FeatureMatchExpression(this, comparator, argument);
+ }
+
initialized = true;
if (typeExpression == null && typeListExpression == null && annotationExpression == null
&& annotationListExpression == null) {
Modified: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/annotation/AnnotationVariableExpressionTest.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/annotation/AnnotationVariableExpressionTest.java?rev=1875524&r1=1875523&r2=1875524&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/annotation/AnnotationVariableExpressionTest.java (original)
+++ uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/annotation/AnnotationVariableExpressionTest.java Sun Mar 22 20:34:30 2020
@@ -41,7 +41,6 @@ import org.apache.uima.ruta.engine.Ruta;
import org.apache.uima.ruta.engine.RutaEngine;
import org.apache.uima.ruta.engine.RutaTestUtils;
import org.apache.uima.ruta.engine.RutaTestUtils.TestFeature;
-import org.junit.Ignore;
import org.junit.Test;
public class AnnotationVariableExpressionTest {
@@ -270,11 +269,10 @@ public class AnnotationVariableExpressio
RutaTestUtils.assertAnnotationsEquals(cas, 2, 0);
}
-
+
@Test
- @Ignore
public void testCompareGlobalVariableInAction() throws Exception {
-
+
String document = "Some text.";
String script = "";
script += "ANNOTATION a1, a2;\n";
@@ -283,15 +281,14 @@ public class AnnotationVariableExpressio
script += "Document{-> b1 = a1==a2};\n";
script += "Document{-> b2 = a1!=a2};\n";
script += "Document{b1==false-> T1};\n";
- script += "Document{b2==true-> T2};\n";
-
+ script += "Document{b2==true -> T2};\n";
+
CAS cas = RutaTestUtils.getCAS(document);
Ruta.apply(cas, script);
-
+
RutaTestUtils.assertAnnotationsEquals(cas, 1, 1);
RutaTestUtils.assertAnnotationsEquals(cas, 2, 1);
-
+
}
-
}