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 00:37:38 UTC

svn commit: r1875507 - in /uima/ruta/trunk/ruta-core/src: main/java/org/apache/uima/ruta/ main/java/org/apache/uima/ruta/action/ main/java/org/apache/uima/ruta/block/ main/java/org/apache/uima/ruta/condition/ main/java/org/apache/uima/ruta/expression/a...

Author: pkluegl
Date: Sun Mar 22 00:37:38 2020
New Revision: 1875507

URL: http://svn.apache.org/viewvc?rev=1875507&view=rev
Log:
UIMA-6193: reverted handling of expressions in lists, trying to resolve value of initialized values when applying block

Modified:
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java
    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/action/AddAction.java
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/RemoveDuplicateAction.java
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/block/ForEachBlock.java
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/block/RutaScriptBlock.java
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ContainsCondition.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/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/condition/InListTest.java
    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/RutaEnvironment.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java?rev=1875507&r1=1875506&r2=1875507&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java Sun Mar 22 00:37:38 2020
@@ -57,6 +57,7 @@ import org.apache.uima.ruta.block.RutaBl
 import org.apache.uima.ruta.condition.AbstractRutaCondition;
 import org.apache.uima.ruta.engine.RutaEngine;
 import org.apache.uima.ruta.expression.IRutaExpression;
+import org.apache.uima.ruta.expression.annotation.IAnnotationExpression;
 import org.apache.uima.ruta.expression.bool.IBooleanExpression;
 import org.apache.uima.ruta.expression.bool.SimpleBooleanListExpression;
 import org.apache.uima.ruta.expression.list.ListExpression;
@@ -70,6 +71,7 @@ import org.apache.uima.ruta.expression.r
 import org.apache.uima.ruta.expression.resource.WordTableExpression;
 import org.apache.uima.ruta.expression.string.IStringExpression;
 import org.apache.uima.ruta.expression.string.SimpleStringListExpression;
+import org.apache.uima.ruta.expression.type.ITypeExpression;
 import org.apache.uima.ruta.expression.type.SimpleTypeExpression;
 import org.apache.uima.ruta.expression.type.SimpleTypeListExpression;
 import org.apache.uima.ruta.resource.CSVTable;
@@ -1198,4 +1200,38 @@ public class RutaEnvironment {
     }
   }
 
+  public void ensureMaterializedInitialValues(MatchContext matchContext, RutaStream stream) {
+
+    for (Entry<String, Object> entry : new ArrayList<>(initializedVariables.entrySet())) {
+      String var = entry.getKey();
+      Object value = entry.getValue();
+
+      if (value instanceof IAnnotationExpression || value instanceof IBooleanExpression
+              || value instanceof INumberExpression || value instanceof IStringExpression
+              || value instanceof ITypeExpression) {
+        Class<?> clazz = variableTypes.get(var);
+        Object expressionValue = stream.getExpressionValue(clazz, (IRutaExpression) value,
+                matchContext);
+        initializedVariables.put(var, expressionValue);
+        variableValues.put(var, expressionValue);
+      } else if (value instanceof List) {
+        List<?> list = (List<?>) value;
+        List<Object> newList = new ArrayList<>(list.size());
+        Class<?> clazz = variableGenericTypes.get(var);
+        for (Object each : list) {
+          if (each instanceof IAnnotationExpression || each instanceof IBooleanExpression
+                  || each instanceof INumberExpression || each instanceof IStringExpression
+                  || each instanceof ITypeExpression) {
+            Object expressionValue = stream.getExpressionValue(clazz, (IRutaExpression) each,
+                    matchContext);
+            newList.add(expressionValue);
+          } else {
+            newList.add(each);
+          }
+        }
+        initializedVariables.put(var, newList);
+        variableValues.put(var, new ArrayList<>(newList));
+      }
+    }
+  }
 }

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=1875507&r1=1875506&r2=1875507&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 00:37:38 2020
@@ -80,7 +80,6 @@ import org.apache.uima.ruta.expression.t
 import org.apache.uima.ruta.rule.AbstractRule;
 import org.apache.uima.ruta.rule.AbstractRuleMatch;
 import org.apache.uima.ruta.rule.MatchContext;
-import org.apache.uima.ruta.rule.RuleElement;
 import org.apache.uima.ruta.type.RutaAnnotation;
 import org.apache.uima.ruta.type.RutaBasic;
 import org.apache.uima.ruta.type.RutaOptional;
@@ -1208,8 +1207,7 @@ public class RutaStream extends FSIterat
   }
 
   public void assignVariable(String var, IRutaExpression expression, MatchContext context) {
-    RuleElement element = context.getElement();
-    RutaBlock parent = element.getParent();
+    RutaBlock parent = context.getParent();
     RutaEnvironment environment = parent.getEnvironment();
     Class<?> clazz = environment.getVariableType(var);
     if (clazz.equals(Double.class) && expression instanceof INumberExpression) {
@@ -1261,6 +1259,34 @@ public class RutaStream extends FSIterat
     }
   }
 
+  @SuppressWarnings("unchecked")
+  public <T extends Object> T getExpressionValue(Class<T> clazz, IRutaExpression expression,
+          MatchContext context) {
+    if (clazz.equals(Double.class) && expression instanceof INumberExpression) {
+      double v = ((INumberExpression) expression).getDoubleValue(context, this);
+      return (T) Double.valueOf(v);
+    } else if (clazz.equals(Float.class) && expression instanceof INumberExpression) {
+      float v = (float) ((INumberExpression) expression).getDoubleValue(context, this);
+      return (T) Float.valueOf(v);
+    } else if (clazz.equals(Integer.class) && expression instanceof INumberExpression) {
+      int v = ((INumberExpression) expression).getIntegerValue(context, this);
+      return (T) Integer.valueOf(v);
+    } else if (clazz.equals(Type.class) && expression instanceof ITypeExpression) {
+      Type v = ((ITypeExpression) expression).getType(context, this);
+      return (T) v;
+    } else if (clazz.equals(Boolean.class) && expression instanceof IBooleanExpression) {
+      boolean v = ((IBooleanExpression) expression).getBooleanValue(context, this);
+      return (T) Boolean.valueOf(v);
+    } else if (clazz.equals(String.class) && expression instanceof IStringExpression) {
+      String v = ((IStringExpression) expression).getStringValue(context, this);
+      return (T) v;
+    } else if (clazz.equals(AnnotationFS.class) && expression instanceof IAnnotationExpression) {
+      AnnotationFS v = ((IAnnotationExpression) expression).getAnnotation(context, this);
+      return (T) v;
+    }
+    return null;
+  }
+
   public AnnotationFS getSingleAnnotationByTypeInContext(Type type, MatchContext context) {
     List<AnnotationFS> inWindow = this.getAnnotationsInWindow(context.getAnnotation(), type);
     if (inWindow != null && !inWindow.isEmpty()) {

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=1875507&r1=1875506&r2=1875507&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 Sun Mar 22 00:37:38 2020
@@ -68,25 +68,23 @@ public class AddAction extends AbstractR
     Class<?> vgtype = environment.getVariableGenericType(var);
     for (IRutaExpression each : elements) {
       if (vgtype.equals(Boolean.class) && each instanceof IBooleanExpression) {
-        list.add(each);
+        list.add(((IBooleanExpression) each).getBooleanValue(context, stream));
       } else if (vgtype.equals(Integer.class) && each instanceof INumberExpression) {
-        list.add(each);
+        list.add(((INumberExpression) each).getIntegerValue(context, stream));
       } else if (vgtype.equals(Double.class) && each instanceof INumberExpression) {
-        list.add(each);
-      } else if (vgtype.equals(Float.class) && each instanceof INumberExpression) {
-        list.add(each);
+        list.add(((INumberExpression) each).getDoubleValue(context, stream));
       } else if (vgtype.equals(Type.class) && each instanceof ITypeExpression) {
-        list.add(each);
+        list.add(((ITypeExpression) each).getType(context, stream));
       } else if (vgtype.equals(String.class) && each instanceof IStringExpression) {
-        list.add(each);
+        list.add(((IStringExpression) each).getStringValue(context, stream));
       } else if (vgtype.equals(AnnotationFS.class) && each instanceof IAnnotationExpression) {
-        list.add(each);
-      } else if (each instanceof ListExpression) {
-        ListExpression listExpression = (ListExpression) each;
-        List rawList = listExpression.getRawList(context, stream);
-        if (rawList != null) {
-          list.addAll(rawList);
+        AnnotationFS annotation = ((IAnnotationExpression) each).getAnnotation(context, stream);
+        if(annotation != null) {
+          list.add(annotation);
         }
+      } else if (each instanceof ListExpression) {
+        ListExpression l = (ListExpression) each;
+        list.addAll(l.getList(context, stream));
       }
     }
   }

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/RemoveDuplicateAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/RemoveDuplicateAction.java?rev=1875507&r1=1875506&r2=1875507&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/RemoveDuplicateAction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/RemoveDuplicateAction.java Sun Mar 22 00:37:38 2020
@@ -75,6 +75,6 @@ public class RemoveDuplicateAction exten
     } else if (obj instanceof IStringExpression) {
       return ((IStringExpression) obj).getStringValue(context, stream);
     }
-    return null;
+    return obj;
   }
 }

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/block/ForEachBlock.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/block/ForEachBlock.java?rev=1875507&r1=1875506&r2=1875507&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/block/ForEachBlock.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/block/ForEachBlock.java Sun Mar 22 00:37:38 2020
@@ -60,6 +60,7 @@ public class ForEachBlock extends RutaBl
   @Override
   public ScriptApply apply(RutaStream stream, InferenceCrowd crowd) {
     BlockApply result = new BlockApply(this);
+    getEnvironment().ensureMaterializedInitialValues(new MatchContext(this), stream);
     crowd.beginVisit(this, result);
 
     setRuleElementAnchor();

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/block/RutaScriptBlock.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/block/RutaScriptBlock.java?rev=1875507&r1=1875506&r2=1875507&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/block/RutaScriptBlock.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/block/RutaScriptBlock.java Sun Mar 22 00:37:38 2020
@@ -28,6 +28,7 @@ import org.apache.uima.ruta.RutaStream;
 import org.apache.uima.ruta.ScriptApply;
 import org.apache.uima.ruta.rule.AbstractRule;
 import org.apache.uima.ruta.rule.AbstractRuleMatch;
+import org.apache.uima.ruta.rule.MatchContext;
 import org.apache.uima.ruta.rule.RuleApply;
 import org.apache.uima.ruta.rule.RuleMatch;
 import org.apache.uima.ruta.rule.RutaMatcher;
@@ -46,6 +47,7 @@ public class RutaScriptBlock extends Rut
   @Override
   public ScriptApply apply(RutaStream stream, InferenceCrowd crowd) {
     BlockApply result = new BlockApply(this);
+    getEnvironment().ensureMaterializedInitialValues(new MatchContext(this), stream);
     crowd.beginVisit(this, result);
     RuleApply apply = rule.apply(stream, crowd, true);
     for (AbstractRuleMatch<? extends AbstractRule> eachMatch : apply.getList()) {

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ContainsCondition.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ContainsCondition.java?rev=1875507&r1=1875506&r2=1875507&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ContainsCondition.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ContainsCondition.java Sun Mar 22 00:37:38 2020
@@ -135,7 +135,8 @@ public class ContainsCondition extends T
               && argList instanceof INumberListExpression) {
         INumberExpression e = (INumberExpression) arg;
         INumberListExpression le = (INumberListExpression) argList;
-        Number v = e.getDoubleValue(context, stream);
+        Double v = e.getDoubleValue(context, stream);
+        // TODO: this wont work for numbers yet!
         List<Number> l = new ArrayList<Number>(le.getNumberList(context, stream));
         while (l.remove(v)) {
           basicCount++;

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=1875507&r1=1875506&r2=1875507&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 Sun Mar 22 00:37:38 2020
@@ -50,9 +50,4 @@ 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=1875507&r1=1875506&r2=1875507&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 Sun Mar 22 00:37:38 2020
@@ -58,9 +58,4 @@ 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=1875507&r1=1875506&r2=1875507&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 Sun Mar 22 00:37:38 2020
@@ -48,9 +48,4 @@ public class AnnotationListLabelExpressi
     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=1875507&r1=1875506&r2=1875507&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 Sun Mar 22 00:37:38 2020
@@ -38,7 +38,8 @@ public class AnnotationListVariableExpre
 
   @Override
   public List<AnnotationFS> getList(MatchContext context, RutaStream stream) {
-    List<?> list = getRawList(context, stream);
+    RutaBlock parent = context.getParent();
+    List<?> list = parent.getEnvironment().getVariableValue(var, List.class, stream);
     List<AnnotationFS> result = new ArrayList<>();
     for (Object each : list) {
       if (each instanceof IAnnotationExpression) {
@@ -51,10 +52,4 @@ public class AnnotationListVariableExpre
     return result;
   }
 
-  @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/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=1875507&r1=1875506&r2=1875507&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 Sun Mar 22 00:37:38 2020
@@ -95,9 +95,4 @@ 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=1875507&r1=1875506&r2=1875507&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 Sun Mar 22 00:37:38 2020
@@ -37,7 +37,8 @@ public class BooleanListVariableExpressi
 
   @Override
   public List<Boolean> getList(MatchContext context, RutaStream stream) {
-    List<?> list = getRawList(context, stream);
+    RutaBlock parent = context.getParent();
+    List<?> list = parent.getEnvironment().getVariableValue(var, List.class, stream);
     List<Boolean> result = new ArrayList<Boolean>();
     for (Object each : list) {
       if (each instanceof IBooleanExpression) {
@@ -53,10 +54,4 @@ 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=1875507&r1=1875506&r2=1875507&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 Sun Mar 22 00:37:38 2020
@@ -47,10 +47,4 @@ 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=1875507&r1=1875506&r2=1875507&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 Sun Mar 22 00:37:38 2020
@@ -207,9 +207,4 @@ 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=1875507&r1=1875506&r2=1875507&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 Sun Mar 22 00:37:38 2020
@@ -29,13 +29,6 @@ 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=1875507&r1=1875506&r2=1875507&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 Sun Mar 22 00:37:38 2020
@@ -66,10 +66,4 @@ 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=1875507&r1=1875506&r2=1875507&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 Sun Mar 22 00:37:38 2020
@@ -116,9 +116,4 @@ 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=1875507&r1=1875506&r2=1875507&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 Sun Mar 22 00:37:38 2020
@@ -37,7 +37,8 @@ public class NumberListVariableExpressio
 
   @Override
   public List<Number> getList(MatchContext context, RutaStream stream) {
-    List<?> list = getRawList(context, stream);
+    RutaBlock parent = context.getParent();
+    List<?> list = parent.getEnvironment().getVariableValue(var, List.class, stream);
     List<Number> result = new ArrayList<Number>();
     for (Object each : list) {
       if (each instanceof INumberExpression) {
@@ -54,10 +55,4 @@ public class NumberListVariableExpressio
     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=1875507&r1=1875506&r2=1875507&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 Sun Mar 22 00:37:38 2020
@@ -48,9 +48,4 @@ public class SimpleNumberListExpression
     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=1875507&r1=1875506&r2=1875507&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 Sun Mar 22 00:37:38 2020
@@ -48,8 +48,4 @@ public class SimpleStringListExpression
     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=1875507&r1=1875506&r2=1875507&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 Sun Mar 22 00:37:38 2020
@@ -95,9 +95,4 @@ 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=1875507&r1=1875506&r2=1875507&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 Sun Mar 22 00:37:38 2020
@@ -37,7 +37,8 @@ public class StringListVariableExpressio
 
   @Override
   public List<String> getList(MatchContext context, RutaStream stream) {
-    List<?> list = getRawList(context, stream);
+    RutaBlock parent = context.getParent();
+    List<?> list = parent.getEnvironment().getVariableValue(var, List.class, stream);
     List<String> result = new ArrayList<String>();
     for (Object each : list) {
       if (each instanceof AbstractStringExpression) {
@@ -54,10 +55,4 @@ 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=1875507&r1=1875506&r2=1875507&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 Sun Mar 22 00:37:38 2020
@@ -48,8 +48,4 @@ public class SimpleTypeListExpression ex
     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=1875507&r1=1875506&r2=1875507&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 Sun Mar 22 00:37:38 2020
@@ -39,7 +39,7 @@ public class TypeListVariableExpression
   @Override
   public List<Type> getList(MatchContext context, RutaStream stream) {
     RutaBlock parent = context.getParent();
-    List<?> list = getRawList(context, stream);
+    List<?> list = parent.getEnvironment().getVariableValue(var, List.class, stream);
     List<Type> result = new ArrayList<Type>();
     for (Object each : list) {
       if (each instanceof ITypeExpression) {
@@ -63,10 +63,4 @@ 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=1875507&r1=1875506&r2=1875507&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 Sun Mar 22 00:37:38 2020
@@ -63,7 +63,7 @@ public class AddTest {
     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.");
+    RutaTestUtils.assertAnnotationsEquals(cas, 2, 1, "This is a test.");
+    RutaTestUtils.assertAnnotationsEquals(cas, 3, 0);
   }
 }

Modified: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/condition/InListTest.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/condition/InListTest.java?rev=1875507&r1=1875506&r2=1875507&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/condition/InListTest.java (original)
+++ uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/condition/InListTest.java Sun Mar 22 00:37:38 2020
@@ -27,22 +27,14 @@ import org.junit.Test;
 public class InListTest {
 
   @Test
-  public void test() {
+  public void test() throws Exception {
     String name = this.getClass().getSimpleName();
     String namespace = this.getClass().getPackage().getName().replaceAll("\\.", "/");
-    
-    CAS cas = null;
-    try {
-      cas = RutaTestUtils.process(namespace + "/" + name + RutaEngine.SCRIPT_FILE_EXTENSION, namespace + "/" + name
-              + ".txt", 50, false, false, null, namespace + "/");
-    } catch (Exception e) {
-      e.printStackTrace();
-      assert (false);
-    }
+
+    CAS cas = RutaTestUtils.process(namespace + "/" + name + RutaEngine.SCRIPT_FILE_EXTENSION,
+            namespace + "/" + name + ".txt", 50, false, false, null, namespace + "/");
 
     RutaTestUtils.assertAnnotationsEquals(cas, 1, 2, "INLIST", "condition");
     RutaTestUtils.assertAnnotationsEquals(cas, 2, 1, "INLIST");
-    
-    cas.release();
   }
 }

Modified: 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=1875507&r1=1875506&r2=1875507&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/VariableInitialValueTest.java (original)
+++ uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/VariableInitialValueTest.java Sun Mar 22 00:37:38 2020
@@ -22,6 +22,7 @@ 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.Ignore;
 import org.junit.Test;
 
 public class VariableInitialValueTest {
@@ -42,12 +43,13 @@ public class VariableInitialValueTest {
     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.");
+    RutaTestUtils.assertAnnotationsEquals(cas, 2, 1, "This is a test.");
+    RutaTestUtils.assertAnnotationsEquals(cas, 3, 0);
 
   }
 
   @Test
+  @Ignore
   public void testIntVariableAsInitialValueOfList() throws Exception {
     String document = "This is a test.";
 
@@ -63,8 +65,8 @@ public class VariableInitialValueTest {
     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.");
+    RutaTestUtils.assertAnnotationsEquals(cas, 2, 1, "This is a test.");
+    RutaTestUtils.assertAnnotationsEquals(cas, 3, 0);
 
   }