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/21 21:48:27 UTC
svn commit: r1875502 - in /uima/ruta/trunk/ruta-core/src:
main/java/org/apache/uima/ruta/action/
main/java/org/apache/uima/ruta/expression/annotation/
main/java/org/apache/uima/ruta/expression/bool/
main/java/org/apache/uima/ruta/expression/feature/ ma...
Author: pkluegl
Date: Sat Mar 21 21:48:27 2020
New Revision: 1875502
URL: http://svn.apache.org/viewvc?rev=1875502&view=rev
Log:
UIMA-6193: enable AddAction to add expressions, extend ListExpression for optional raw expressions
Added:
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/VariableInitialValueTest.java
Modified:
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/AddAction.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationListDelegateVariableExpression.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationListFeatureExpression.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationListLabelExpression.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationListVariableExpression.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/AbstractBooleanListExpression.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanListFeatureExpression.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanListVariableExpression.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/SimpleBooleanListExpression.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/feature/GenericFeatureExpression.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/ListExpression.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/UntypedListExpression.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/NumberListFeatureExpression.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/NumberListVariableExpression.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/SimpleNumberListExpression.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/SimpleStringListExpression.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/StringListFeatureExpression.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/StringListVariableExpression.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/type/SimpleTypeListExpression.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/type/TypeListVariableExpression.java
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/action/AddTest.java
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/NullExpressionTest.java
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/AddAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/AddAction.java?rev=1875502&r1=1875501&r2=1875502&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/AddAction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/AddAction.java Sat Mar 21 21:48:27 2020
@@ -68,23 +68,25 @@ public class AddAction extends AbstractR
Class<?> vgtype = environment.getVariableGenericType(var);
for (IRutaExpression each : elements) {
if (vgtype.equals(Boolean.class) && each instanceof IBooleanExpression) {
- list.add(((IBooleanExpression) each).getBooleanValue(context, stream));
+ list.add(each);
} else if (vgtype.equals(Integer.class) && each instanceof INumberExpression) {
- list.add(((INumberExpression) each).getIntegerValue(context, stream));
+ list.add(each);
} else if (vgtype.equals(Double.class) && each instanceof INumberExpression) {
- list.add(((INumberExpression) each).getDoubleValue(context, stream));
+ list.add(each);
+ } else if (vgtype.equals(Float.class) && each instanceof INumberExpression) {
+ list.add(each);
} else if (vgtype.equals(Type.class) && each instanceof ITypeExpression) {
- list.add(((ITypeExpression) each).getType(context, stream));
+ list.add(each);
} else if (vgtype.equals(String.class) && each instanceof IStringExpression) {
- list.add(((IStringExpression) each).getStringValue(context, stream));
+ list.add(each);
} else if (vgtype.equals(AnnotationFS.class) && each instanceof IAnnotationExpression) {
- AnnotationFS annotation = ((IAnnotationExpression) each).getAnnotation(context, stream);
- if(annotation != null) {
- list.add(annotation);
- }
+ list.add(each);
} else if (each instanceof ListExpression) {
- ListExpression l = (ListExpression) each;
- list.addAll(l.getList(context, stream));
+ ListExpression listExpression = (ListExpression) each;
+ List rawList = listExpression.getRawList(context, stream);
+ if (rawList != null) {
+ list.addAll(rawList);
+ }
}
}
}
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationListDelegateVariableExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationListDelegateVariableExpression.java?rev=1875502&r1=1875501&r2=1875502&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationListDelegateVariableExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationListDelegateVariableExpression.java Sat Mar 21 21:48:27 2020
@@ -50,4 +50,9 @@ public class AnnotationListDelegateVaria
return null;
}
+ @Override
+ public List<?> getRawList(MatchContext context, RutaStream stream) {
+ return null;
+ }
+
}
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationListFeatureExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationListFeatureExpression.java?rev=1875502&r1=1875501&r2=1875502&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationListFeatureExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationListFeatureExpression.java Sat Mar 21 21:48:27 2020
@@ -40,7 +40,7 @@ public class AnnotationListFeatureExpres
super();
this.fe = fe;
}
-
+
@Override
public List<AnnotationFS> getList(MatchContext context, RutaStream stream) {
AnnotationFS annotation = context.getAnnotation();
@@ -58,9 +58,9 @@ public class AnnotationListFeatureExpres
this.fe = fe;
}
-
-
-
-
+ @Override
+ public List<?> getRawList(MatchContext context, RutaStream stream) {
+ return null;
+ }
}
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationListLabelExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationListLabelExpression.java?rev=1875502&r1=1875501&r2=1875502&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationListLabelExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationListLabelExpression.java Sat Mar 21 21:48:27 2020
@@ -31,24 +31,26 @@ import org.apache.uima.ruta.rule.MatchCo
*/
public class AnnotationListLabelExpression extends AbstractAnnotationListExpression {
-private String label;
-
+ private String label;
+
public AnnotationListLabelExpression(String label) {
super();
this.label = label;
}
-
+
@SuppressWarnings("unchecked")
@Override
public List<AnnotationFS> getList(MatchContext context, RutaStream stream) {
return context.getParent().getEnvironment().getVariableValue(label, List.class, stream);
}
-
+
public String getLabel() {
return label;
}
-
-
+ @Override
+ public List<?> getRawList(MatchContext context, RutaStream stream) {
+ return null;
+ }
}
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationListVariableExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationListVariableExpression.java?rev=1875502&r1=1875501&r2=1875502&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationListVariableExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationListVariableExpression.java Sat Mar 21 21:48:27 2020
@@ -19,6 +19,7 @@
package org.apache.uima.ruta.expression.annotation;
+import java.util.ArrayList;
import java.util.List;
import org.apache.uima.cas.text.AnnotationFS;
@@ -35,13 +36,25 @@ public class AnnotationListVariableExpre
this.var = var;
}
-
@Override
public List<AnnotationFS> getList(MatchContext context, RutaStream stream) {
+ List<?> list = getRawList(context, stream);
+ List<AnnotationFS> result = new ArrayList<>();
+ for (Object each : list) {
+ if (each instanceof IAnnotationExpression) {
+ result.add(((IAnnotationExpression) each).getAnnotation(context, stream));
+ }
+ if (each instanceof AnnotationFS) {
+ result.add((AnnotationFS) each);
+ }
+ }
+ return result;
+ }
+
+ @Override
+ public List<?> getRawList(MatchContext context, RutaStream stream) {
RutaBlock parent = context.getParent();
- @SuppressWarnings("unchecked")
- List<AnnotationFS> list = parent.getEnvironment().getVariableValue(var, List.class, stream);
- return list;
+ return parent.getEnvironment().getVariableValue(var, List.class, stream);
}
}
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/AbstractBooleanListExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/AbstractBooleanListExpression.java?rev=1875502&r1=1875501&r2=1875502&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/AbstractBooleanListExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/AbstractBooleanListExpression.java Sat Mar 21 21:48:27 2020
@@ -25,8 +25,9 @@ import org.apache.uima.ruta.RutaStream;
import org.apache.uima.ruta.expression.list.ListExpression;
import org.apache.uima.ruta.rule.MatchContext;
-public abstract class AbstractBooleanListExpression extends ListExpression<Boolean> implements IBooleanListExpression{
-
+public abstract class AbstractBooleanListExpression extends ListExpression<Boolean>
+ implements IBooleanListExpression {
+
@Override
public List<Boolean> getBooleanList(MatchContext context, RutaStream stream) {
return getList(context, stream);
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanListFeatureExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanListFeatureExpression.java?rev=1875502&r1=1875501&r2=1875502&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanListFeatureExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanListFeatureExpression.java Sat Mar 21 21:48:27 2020
@@ -95,4 +95,9 @@ public class BooleanListFeatureExpressio
this.fe = fe;
}
+ @Override
+ public List<?> getRawList(MatchContext context, RutaStream stream) {
+ return null;
+ }
+
}
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanListVariableExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanListVariableExpression.java?rev=1875502&r1=1875501&r2=1875502&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanListVariableExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanListVariableExpression.java Sat Mar 21 21:48:27 2020
@@ -35,11 +35,9 @@ public class BooleanListVariableExpressi
this.var = var;
}
- @SuppressWarnings("unchecked")
@Override
public List<Boolean> getList(MatchContext context, RutaStream stream) {
- RutaBlock parent = context.getParent();
- List<Object> list = parent.getEnvironment().getVariableValue(var, List.class, stream);
+ List<?> list = getRawList(context, stream);
List<Boolean> result = new ArrayList<Boolean>();
for (Object each : list) {
if (each instanceof IBooleanExpression) {
@@ -55,6 +53,10 @@ public class BooleanListVariableExpressi
return var;
}
-
+ @Override
+ public List<?> getRawList(MatchContext context, RutaStream stream) {
+ RutaBlock parent = context.getParent();
+ return parent.getEnvironment().getVariableValue(var, List.class, stream);
+ }
}
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/SimpleBooleanListExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/SimpleBooleanListExpression.java?rev=1875502&r1=1875501&r2=1875502&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/SimpleBooleanListExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/SimpleBooleanListExpression.java Sat Mar 21 21:48:27 2020
@@ -47,4 +47,10 @@ public class SimpleBooleanListExpression
return list;
}
+ @Override
+ public List<?> getRawList(MatchContext context, RutaStream stream) {
+
+ return getList();
+ }
+
}
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/feature/GenericFeatureExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/feature/GenericFeatureExpression.java?rev=1875502&r1=1875501&r2=1875502&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/feature/GenericFeatureExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/feature/GenericFeatureExpression.java Sat Mar 21 21:48:27 2020
@@ -207,4 +207,9 @@ public class GenericFeatureExpression ex
return result;
}
+ @Override
+ public List<?> getRawList(MatchContext context, RutaStream stream) {
+ return null;
+ }
+
}
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/ListExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/ListExpression.java?rev=1875502&r1=1875501&r2=1875502&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/ListExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/ListExpression.java Sat Mar 21 21:48:27 2020
@@ -29,6 +29,13 @@ public abstract class ListExpression<T>
public abstract List<T> getList(MatchContext context, RutaStream stream);
+ public abstract List<?> getRawList(MatchContext context, RutaStream stream);
+
+// @Override
+// public List<IRutaExpression> getRawList(MatchContext context, RutaStream stream) {
+// return null;
+// }
+
@Override
public String getStringValue(MatchContext context, RutaStream stream) {
return getList(context, stream).toString();
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/UntypedListExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/UntypedListExpression.java?rev=1875502&r1=1875501&r2=1875502&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/UntypedListExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/UntypedListExpression.java Sat Mar 21 21:48:27 2020
@@ -66,4 +66,10 @@ public class UntypedListExpression exten
return list;
}
+ @Override
+ public List<?> getRawList(MatchContext context, RutaStream stream) {
+
+ return list;
+ }
+
}
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/NumberListFeatureExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/NumberListFeatureExpression.java?rev=1875502&r1=1875501&r2=1875502&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/NumberListFeatureExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/NumberListFeatureExpression.java Sat Mar 21 21:48:27 2020
@@ -116,4 +116,9 @@ public class NumberListFeatureExpression
this.fe = fe;
}
+ @Override
+ public List<?> getRawList(MatchContext context, RutaStream stream) {
+ return null;
+ }
+
}
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/NumberListVariableExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/NumberListVariableExpression.java?rev=1875502&r1=1875501&r2=1875502&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/NumberListVariableExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/NumberListVariableExpression.java Sat Mar 21 21:48:27 2020
@@ -35,11 +35,9 @@ public class NumberListVariableExpressio
this.var = var;
}
- @SuppressWarnings("unchecked")
@Override
public List<Number> getList(MatchContext context, RutaStream stream) {
- RutaBlock parent = context.getParent();
- List<Object> list = parent.getEnvironment().getVariableValue(var, List.class, stream);
+ List<?> list = getRawList(context, stream);
List<Number> result = new ArrayList<Number>();
for (Object each : list) {
if (each instanceof INumberExpression) {
@@ -55,4 +53,11 @@ public class NumberListVariableExpressio
public String getVar() {
return var;
}
+
+ @Override
+ public List<?> getRawList(MatchContext context, RutaStream stream) {
+ RutaBlock parent = context.getParent();
+ return parent.getEnvironment().getVariableValue(var, List.class, stream);
+
+ }
}
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/SimpleNumberListExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/SimpleNumberListExpression.java?rev=1875502&r1=1875501&r2=1875502&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/SimpleNumberListExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/SimpleNumberListExpression.java Sat Mar 21 21:48:27 2020
@@ -47,4 +47,10 @@ public class SimpleNumberListExpression
public List<INumberExpression> getList() {
return list;
}
+
+ @Override
+ public List<?> getRawList(MatchContext context, RutaStream stream) {
+
+ return getList();
+ }
}
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/SimpleStringListExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/SimpleStringListExpression.java?rev=1875502&r1=1875501&r2=1875502&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/SimpleStringListExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/SimpleStringListExpression.java Sat Mar 21 21:48:27 2020
@@ -47,4 +47,9 @@ public class SimpleStringListExpression
public List<IStringExpression> getList() {
return list;
}
+
+ @Override
+ public List<?> getRawList(MatchContext context, RutaStream stream) {
+ return getList();
+ }
}
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/StringListFeatureExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/StringListFeatureExpression.java?rev=1875502&r1=1875501&r2=1875502&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/StringListFeatureExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/StringListFeatureExpression.java Sat Mar 21 21:48:27 2020
@@ -95,4 +95,9 @@ public class StringListFeatureExpression
this.fe = fe;
}
+ @Override
+ public List<?> getRawList(MatchContext context, RutaStream stream) {
+ return null;
+ }
+
}
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/StringListVariableExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/StringListVariableExpression.java?rev=1875502&r1=1875501&r2=1875502&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/StringListVariableExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/StringListVariableExpression.java Sat Mar 21 21:48:27 2020
@@ -35,11 +35,9 @@ public class StringListVariableExpressio
this.var = var;
}
- @SuppressWarnings("unchecked")
@Override
public List<String> getList(MatchContext context, RutaStream stream) {
- RutaBlock parent = context.getParent();
- List<Object> list = parent.getEnvironment().getVariableValue(var, List.class, stream);
+ List<?> list = getRawList(context, stream);
List<String> result = new ArrayList<String>();
for (Object each : list) {
if (each instanceof AbstractStringExpression) {
@@ -56,5 +54,10 @@ public class StringListVariableExpressio
return var;
}
-
+ @Override
+ public List<?> getRawList(MatchContext context, RutaStream stream) {
+ RutaBlock parent = context.getParent();
+ return parent.getEnvironment().getVariableValue(var, List.class, stream);
+ }
+
}
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/type/SimpleTypeListExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/type/SimpleTypeListExpression.java?rev=1875502&r1=1875501&r2=1875502&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/type/SimpleTypeListExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/type/SimpleTypeListExpression.java Sat Mar 21 21:48:27 2020
@@ -47,4 +47,9 @@ public class SimpleTypeListExpression ex
public List<ITypeExpression> getList() {
return list;
}
+
+ @Override
+ public List<?> getRawList(MatchContext context, RutaStream stream) {
+ return getList();
+ }
}
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/type/TypeListVariableExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/type/TypeListVariableExpression.java?rev=1875502&r1=1875501&r2=1875502&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/type/TypeListVariableExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/type/TypeListVariableExpression.java Sat Mar 21 21:48:27 2020
@@ -36,24 +36,23 @@ public class TypeListVariableExpression
this.var = var;
}
- @SuppressWarnings("unchecked")
@Override
public List<Type> getList(MatchContext context, RutaStream stream) {
RutaBlock parent = context.getParent();
- List<Object> list = parent.getEnvironment().getVariableValue(var, List.class, stream);
+ List<?> list = getRawList(context, stream);
List<Type> result = new ArrayList<Type>();
for (Object each : list) {
if (each instanceof ITypeExpression) {
result.add(((ITypeExpression) each).getType(context, stream));
} else if (each instanceof Type) {
result.add((Type) each);
- } else if(each instanceof String) {
+ } else if (each instanceof String) {
Type type = parent.getEnvironment().getType((String) each);
- if(type != null) {
+ if (type != null) {
result.add(type);
} else {
- throw new IllegalArgumentException("Not able to resolve type: " + each +
- " in script " +context.getParent().getName());
+ throw new IllegalArgumentException("Not able to resolve type: " + each + " in script "
+ + context.getParent().getName());
}
}
}
@@ -64,5 +63,10 @@ public class TypeListVariableExpression
return var;
}
-
+ @Override
+ public List<?> getRawList(MatchContext context, RutaStream stream) {
+ RutaBlock parent = context.getParent();
+ return parent.getEnvironment().getVariableValue(var, List.class, stream);
+ }
+
}
Modified: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/action/AddTest.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/action/AddTest.java?rev=1875502&r1=1875501&r2=1875502&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/action/AddTest.java (original)
+++ uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/action/AddTest.java Sat Mar 21 21:48:27 2020
@@ -27,7 +27,7 @@ import org.junit.Test;
public class AddTest {
@Test
- public void testAnnotations() {
+ public void testAnnotations() throws Exception {
String document = "Some text.";
String script = "";
script += "ANNOTATION a;";
@@ -38,18 +38,32 @@ public class AddTest {
script += "Document{SIZE(as,2,2)->T2};";
script += "as{->T3};";
- CAS cas = null;
- try {
- cas = RutaTestUtils.getCAS(document);
- Ruta.apply(cas, script);
- } catch (Exception e) {
- e.printStackTrace();
- }
+ CAS cas = RutaTestUtils.getCAS(document);
+ Ruta.apply(cas, script);
RutaTestUtils.assertAnnotationsEquals(cas, 1, 1, "Some text.");
RutaTestUtils.assertAnnotationsEquals(cas, 2, 1, "Some text.");
RutaTestUtils.assertAnnotationsEquals(cas, 3, 2, "Some", "text");
+ }
+
+ @Test
+ public void testVariable() throws Exception {
+ String document = "This is a test.";
+
+ String script = "";
+ script += "STRING s = \"a\";";
+ script += "STRINGLIST sl = {s};";
+ script += "Document{CONTAINS(sl, \"a\") -> T1};";
+ script += "Document{ -> ADD(sl, s)};";
+ script += "Document{ -> s = \"b\"};";
+ script += "Document{CONTAINS(sl, \"a\") -> T2};";
+ script += "Document{CONTAINS(sl, \"b\") -> T3};";
+
+ CAS cas = RutaTestUtils.getCAS(document);
+ Ruta.apply(cas, script);
- cas.release();
+ RutaTestUtils.assertAnnotationsEquals(cas, 1, 1, "This is a test.");
+ RutaTestUtils.assertAnnotationsEquals(cas, 2, 0);
+ RutaTestUtils.assertAnnotationsEquals(cas, 3, 1, "This is a test.");
}
}
Modified: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/NullExpressionTest.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/NullExpressionTest.java?rev=1875502&r1=1875501&r2=1875502&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/NullExpressionTest.java (original)
+++ uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/NullExpressionTest.java Sat Mar 21 21:48:27 2020
@@ -33,7 +33,7 @@ import org.junit.Test;
public class NullExpressionTest {
@Test
- public void test() {
+ public void test() throws Exception {
String document = "Some text.";
String script = "";
script += "CREATE(A, \"a\" = \"test\", \"b\" = SW), CREATE(B, \"a\" = \"test\", \"b\" = SW);\n";
@@ -46,13 +46,12 @@ public class NullExpressionTest {
script += "B{FEATURE(\"a\", null)-> T3};";
script += "B{FEATURE(\"b\", null)-> T4};";
-
Map<String, String> typeMap = new TreeMap<String, String>();
String typeName1 = "A";
typeMap.put(typeName1, "uima.tcas.Annotation");
String typeName2 = "B";
typeMap.put(typeName2, "uima.tcas.Annotation");
-
+
Map<String, List<TestFeature>> featureMap = new TreeMap<String, List<TestFeature>>();
List<TestFeature> list = new ArrayList<RutaTestUtils.TestFeature>();
featureMap.put(typeName1, list);
@@ -61,15 +60,9 @@ public class NullExpressionTest {
list.add(new TestFeature(fn1, "", "uima.cas.String"));
String fn2 = "b";
list.add(new TestFeature(fn2, "", "uima.tcas.Annotation"));
-
-
- CAS cas = null;
- try {
- cas = RutaTestUtils.getCAS(document, typeMap, featureMap);
- Ruta.apply(cas, script);
- } catch (Exception e) {
- e.printStackTrace();
- }
+
+ CAS cas = RutaTestUtils.getCAS(document, typeMap, featureMap);
+ Ruta.apply(cas, script);
RutaTestUtils.assertAnnotationsEquals(cas, 1, 1, "Some text.");
RutaTestUtils.assertAnnotationsEquals(cas, 2, 1, "Some text.");
@@ -78,6 +71,5 @@ public class NullExpressionTest {
RutaTestUtils.assertAnnotationsEquals(cas, 5, 1, "Some text.");
RutaTestUtils.assertAnnotationsEquals(cas, 6, 1, "Some text.");
- cas.release();
}
}
Added: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/VariableInitialValueTest.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/VariableInitialValueTest.java?rev=1875502&view=auto
==============================================================================
--- uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/VariableInitialValueTest.java (added)
+++ uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/VariableInitialValueTest.java Sat Mar 21 21:48:27 2020
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.uima.ruta.expression;
+
+import org.apache.uima.cas.CAS;
+import org.apache.uima.ruta.engine.Ruta;
+import org.apache.uima.ruta.engine.RutaTestUtils;
+import org.junit.Test;
+
+public class VariableInitialValueTest {
+
+ @Test
+ public void testStringVariableAsInitialValueOfList() throws Exception {
+ String document = "This is a test.";
+
+ String script = "";
+ script += "STRING s = \"a\";";
+ script += "STRINGLIST sl = {s};";
+ script += "Document{CONTAINS(sl, \"a\") -> T1};";
+ script += "Document{ -> s = \"b\"};";
+ script += "Document{CONTAINS(sl, \"a\") -> T2};";
+ script += "Document{CONTAINS(sl, \"b\") -> T3};";
+
+ CAS cas = RutaTestUtils.getCAS(document);
+ Ruta.apply(cas, script);
+
+ RutaTestUtils.assertAnnotationsEquals(cas, 1, 1, "This is a test.");
+ RutaTestUtils.assertAnnotationsEquals(cas, 2, 0);
+ RutaTestUtils.assertAnnotationsEquals(cas, 3, 1, "This is a test.");
+
+ }
+
+ @Test
+ public void testIntVariableAsInitialValueOfList() throws Exception {
+ String document = "This is a test.";
+
+ String script = "";
+ script += "INT i = 1;";
+ script += "INTLIST il = {i};";
+ script += "Document{CONTAINS(il, 1) -> T1};";
+ script += "Document{ -> i = 2};";
+ script += "Document{CONTAINS(il, 1) -> T2};";
+ script += "Document{CONTAINS(il, 2) -> T3};";
+
+ CAS cas = RutaTestUtils.getCAS(document);
+ Ruta.apply(cas, script);
+
+ RutaTestUtils.assertAnnotationsEquals(cas, 1, 1, "This is a test.");
+ RutaTestUtils.assertAnnotationsEquals(cas, 2, 0);
+ RutaTestUtils.assertAnnotationsEquals(cas, 3, 1, "This is a test.");
+
+ }
+
+}