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 2016/08/25 09:24:32 UTC

svn commit: r1757638 - in /uima/ruta/trunk/ruta-core/src: main/antlr3/org/apache/uima/ruta/parser/ main/java/org/apache/uima/ruta/ main/java/org/apache/uima/ruta/action/ main/java/org/apache/uima/ruta/condition/ main/java/org/apache/uima/ruta/expressio...

Author: pkluegl
Date: Thu Aug 25 09:24:32 2016
New Revision: 1757638

URL: http://svn.apache.org/viewvc?rev=1757638&view=rev
Log:
UIMA-4623
- allow string expression for initial values of word list/table
- added tests
- fixed foreach composed test

Added:
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/StringWordListExpression.java   (with props)
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/StringWordTableExpression.java   (with props)
    uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/resource/
    uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/resource/WordListStringExpressionTest.java   (with props)
    uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/resource/WordTableStringExpressionTest.java   (with props)
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/RutaEnvironment.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/MarkFastAction.java
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkTableAction.java
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/RemoveAction.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/action/TrieAction.java
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/InListCondition.java
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/ExpressionFactory.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/annotation/AnnotationListVariableIndexExpression.java
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationVariableExpression.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/BooleanVariableExpression.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/NumberVariableExpression.java
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/ExternalWordListExpression.java
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/ExternalWordTableExpression.java
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/LiteralWordListExpression.java
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/LiteralWordTableExpression.java
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/ReferenceWordListExpression.java
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/ReferenceWordTableExpression.java
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/WordListExpression.java
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/WordTableExpression.java
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/RemoveFunction.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/string/StringVariableExpression.java
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/type/TypeListVariableExpression.java
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/type/TypeVariableExpression.java
    uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/block/ForEachBlockTest.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=1757638&r1=1757637&r2=1757638&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 Thu Aug 25 09:24:32 2016
@@ -543,13 +543,13 @@ List<String> vars = new ArrayList<String
 	|
 	type = WORDLIST 
 	{!isVariableOfType($blockDeclaration::env, input.LT(1).getText(), type.getText())}? 
-	name = Identifier (ASSIGN_EQUAL list = wordListExpression)? 
+	name = Identifier (ASSIGN_EQUAL list = wordListOrStringExpression)? 
 	{addVariable($blockDeclaration::env, name.getText(), type.getText());if(list != null){setValue($blockDeclaration::env, name.getText(), list);}} 
 	SEMI 
 	| 
 	type = WORDTABLE 
 	{!isVariableOfType($blockDeclaration::env, input.LT(1).getText(), type.getText())}? 
-	name = Identifier (ASSIGN_EQUAL table = wordTableExpression)? 
+	name = Identifier (ASSIGN_EQUAL table = wordTableOrStringExpression)? 
 	{addVariable($blockDeclaration::env, name.getText(), type.getText());if(table != null){setValue($blockDeclaration::env, name.getText(), table);}}
 	SEMI 
 	|
@@ -2507,13 +2507,21 @@ List<IStringExpression> args = new Array
 	RESOURCE LPAREN name = dottedId (COMMA arg = stringExpression {args.add(arg);} )* RPAREN
 	{expr = ExpressionFactory.createExternalWordListExpression(name, args);}
 	|
-	id = Identifier
-	{expr = ExpressionFactory.createReferenceWordListExpression(id);}
-	|
 	path = RessourceLiteral
 	{expr = ExpressionFactory.createLiteralWordListExpression(path);}
+	|
+	id = Identifier
+	{expr = ExpressionFactory.createReferenceWordListExpression(id);}
 	;
 
+wordListOrStringExpression returns [WordListExpression expr = null]
+	:
+	(stringExpression)=> string = stringExpression
+	{expr = ExpressionFactory.createStringWordListExpression(string);}
+	|	
+	e = wordListExpression
+	{expr = e;}
+	;
 
 wordTableExpression returns [WordTableExpression expr = null]
 @init  {
@@ -2523,11 +2531,21 @@ List<IStringExpression> args = new Array
 	RESOURCE LPAREN name = dottedId (COMMA arg = stringExpression {args.add(arg);} )* RPAREN
 	{expr = ExpressionFactory.createExternalWordTableExpression(name, args);}
 	|
+	path = RessourceLiteral
+	{expr = ExpressionFactory.createLiteralWordTableExpression(path);}
+	|
 	id = Identifier
 	{expr = ExpressionFactory.createReferenceWordTableExpression(id);}
+	;
+
+wordTableOrStringExpression returns [WordTableExpression expr = null]
+	:
+	(stringExpression)=>string = stringExpression
+	{expr = ExpressionFactory.createStringWordTableExpression(string);}
+	|	
+	e = wordTableExpression
+	{expr = e;}
 	|
-	path = RessourceLiteral
-	{expr = ExpressionFactory.createLiteralWordTableExpression(path);}
 	;
 
 // not checked

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=1757638&r1=1757637&r2=1757638&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 Thu Aug 25 09:24:32 2016
@@ -62,6 +62,8 @@ import org.apache.uima.ruta.expression.n
 import org.apache.uima.ruta.expression.number.SimpleNumberListExpression;
 import org.apache.uima.ruta.expression.resource.LiteralWordListExpression;
 import org.apache.uima.ruta.expression.resource.LiteralWordTableExpression;
+import org.apache.uima.ruta.expression.resource.StringWordListExpression;
+import org.apache.uima.ruta.expression.resource.StringWordTableExpression;
 import org.apache.uima.ruta.expression.resource.WordListExpression;
 import org.apache.uima.ruta.expression.resource.WordTableExpression;
 import org.apache.uima.ruta.expression.string.IStringExpression;
@@ -680,7 +682,7 @@ public class RutaEnvironment {
 	public RutaTable getWordTable(String table) {
 		RutaTable result = tables.get(table);
 		if (result == null) {
-			if (table.endsWith("csv")) {
+			if (table.endsWith("csv") || table.endsWith("txt") || table.endsWith("tsv")) {
 				ResourceLoader resourceLoader = new RutaResourceLoader(getResourcePaths());
 				Resource resource = resourceLoader.getResource(table);
 				if (resource.exists()) {
@@ -818,7 +820,7 @@ public class RutaEnvironment {
 		return null;
 	}
 
-	public <T> T getVariableValue(String name, Class<T> type) {
+	public <T> T getVariableValue(String name, Class<T> type, RutaStream stream) {
 		if (variableAliases.containsKey(name)) {
 			name = variableAliases.get(name);
 		}
@@ -855,23 +857,23 @@ public class RutaEnvironment {
 			MatchContext context = new MatchContext(owner);
 			if (RutaWordList.class.isAssignableFrom(type) && result instanceof WordListExpression) {
 				WordListExpression wle = (WordListExpression) result;
-				RutaWordList list = wle.getList(context);
+				RutaWordList list = wle.getList(context, stream);
 				return type.cast(list);
 			} else if (RutaTable.class.isAssignableFrom(type) && result instanceof WordTableExpression) {
 				WordTableExpression wte = (WordTableExpression) result;
-				RutaTable table = wte.getTable(context);
+				RutaTable table = wte.getTable(context, stream);
 				return type.cast(table);
 			} else {
 				return type.cast(result);
 			}
 		} else if (owner.getParent() != null) {
-			return owner.getParent().getEnvironment().getVariableValue(name, type);
+			return owner.getParent().getEnvironment().getVariableValue(name, type, stream);
 		}
 		return null;
 	}
 
-	public Object getVariableValue(String name) {
-		return getVariableValue(name, Object.class);
+	public Object getVariableValue(String name, RutaStream stream) {
+		return getVariableValue(name, Object.class, stream);
 	}
 
 	@SuppressWarnings("rawtypes")
@@ -899,10 +901,14 @@ public class RutaEnvironment {
 			}
 			if (clazz.equals(RutaWordList.class) && value instanceof LiteralWordListExpression) {
 				return value;
+			}	else if (clazz.equals(RutaWordList.class) && value instanceof StringWordListExpression) {
+	        return value;
 			} else if (clazz.equals(RutaWordList.class) && value instanceof String) {
 				return value;
 			} else if (clazz.equals(RutaTable.class) && value instanceof LiteralWordTableExpression) {
 				return value;
+			} else if (clazz.equals(RutaTable.class) && value instanceof StringWordTableExpression) {
+        return value;
 			} else if (clazz.equals(RutaTable.class) && value instanceof String) {
 				return value;
 			} else if (clazz.equals(List.class) && value instanceof ListExpression) {

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=1757638&r1=1757637&r2=1757638&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 Thu Aug 25 09:24:32 2016
@@ -63,7 +63,7 @@ public class AddAction extends AbstractR
     RuleElement element = context.getElement();
     RutaBlock parent = element.getParent();
     RutaEnvironment environment = parent.getEnvironment();
-    List list = environment.getVariableValue(var, List.class);
+    List list = environment.getVariableValue(var, List.class, stream);
     // Class<?> vtype = environment.getVariableType(var);
     Class<?> vgtype = environment.getVariableGenericType(var);
     for (IRutaExpression each : elements) {

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkFastAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkFastAction.java?rev=1757638&r1=1757637&r2=1757638&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkFastAction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkFastAction.java Thu Aug 25 09:24:32 2016
@@ -80,7 +80,7 @@ public class MarkFastAction extends Abst
       RutaWordList wl = null;
       element.getParent();
       if (list != null) {
-        wl = list.getList(context);
+        wl = list.getList(context, stream);
       } else if (stringList != null) {
         wl = new TreeWordList(stringList.getList(context, stream), false);
       }

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkTableAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkTableAction.java?rev=1757638&r1=1757637&r2=1757638&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkTableAction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkTableAction.java Thu Aug 25 09:24:32 2016
@@ -90,7 +90,10 @@ public class MarkTableAction extends Abs
     RuleMatch match = context.getRuleMatch();
     RuleElement element = context.getElement();
     element.getParent();
-    RutaTable table = tableExpr.getTable(context);
+    RutaTable table = tableExpr.getTable(context, stream);
+    if(table == null) {
+      return;
+    }
     int index = indexExpr.getIntegerValue(context, stream);
     Type type = typeExpr.getType(context, stream);
     Map<String, Integer> map = new HashMap<String, Integer>();

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/RemoveAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/RemoveAction.java?rev=1757638&r1=1757637&r2=1757638&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/RemoveAction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/RemoveAction.java Thu Aug 25 09:24:32 2016
@@ -62,7 +62,7 @@ public class RemoveAction extends Abstra
   public void execute(MatchContext context, RutaStream stream, InferenceCrowd crowd) {
     RuleElement element = context.getElement();
     RutaBlock parent = element.getParent();
-    List list = parent.getEnvironment().getVariableValue(var, List.class);
+    List list = parent.getEnvironment().getVariableValue(var, List.class, stream);
     Class<?> vgtype = parent.getEnvironment().getVariableGenericType(var);
     List<Object> toRemove = new ArrayList<Object>();
     for (Object entry : list) {

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=1757638&r1=1757637&r2=1757638&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 Thu Aug 25 09:24:32 2016
@@ -50,7 +50,7 @@ public class RemoveDuplicateAction exten
   @Override
   public void execute(MatchContext context, RutaStream stream, InferenceCrowd crowd) {
     RuleElement element = context.getElement();
-    List list = element.getParent().getEnvironment().getVariableValue(var, List.class);
+    List list = element.getParent().getEnvironment().getVariableValue(var, List.class, stream);
     Collection<Object> values = new HashSet<Object>();
     List<Object> result = new ArrayList<Object>();
     for (Object each : list) {

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/TrieAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/TrieAction.java?rev=1757638&r1=1757637&r2=1757638&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/TrieAction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/TrieAction.java Thu Aug 25 09:24:32 2016
@@ -92,7 +92,7 @@ public class TrieAction extends Abstract
     double distanceValue = distance.getDoubleValue(context, stream);
     String ignoreCharValue = ignoreChar.getStringValue(context, stream);
 
-    RutaWordList wl = list.getList(context);
+    RutaWordList wl = list.getList(context, stream);
     if (wl != null) {
       Collection<AnnotationFS> found = wl.find(stream, typeMap, ignoreCaseValue, ignoreLengthValue,
               editValue, distanceValue, ignoreCharValue);

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/InListCondition.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/InListCondition.java?rev=1757638&r1=1757637&r2=1757638&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/InListCondition.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/InListCondition.java Thu Aug 25 09:24:32 2016
@@ -62,7 +62,7 @@ public class InListCondition extends Ter
       return new EvaluatedCondition(this, false);
     }
     if (stringList == null) {
-      RutaWordList wordList = listExpr.getList(context);
+      RutaWordList wordList = listExpr.getList(context, stream);
       return new EvaluatedCondition(this, wordList.contains(text, false, 0, null, 0, true));
     }
     List<String> sList = stringList.getList(context, stream);

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/ExpressionFactory.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/ExpressionFactory.java?rev=1757638&r1=1757637&r2=1757638&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/ExpressionFactory.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/ExpressionFactory.java Thu Aug 25 09:24:32 2016
@@ -69,6 +69,8 @@ import org.apache.uima.ruta.expression.r
 import org.apache.uima.ruta.expression.resource.LiteralWordTableExpression;
 import org.apache.uima.ruta.expression.resource.ReferenceWordListExpression;
 import org.apache.uima.ruta.expression.resource.ReferenceWordTableExpression;
+import org.apache.uima.ruta.expression.resource.StringWordListExpression;
+import org.apache.uima.ruta.expression.resource.StringWordTableExpression;
 import org.apache.uima.ruta.expression.resource.WordListExpression;
 import org.apache.uima.ruta.expression.resource.WordTableExpression;
 import org.apache.uima.ruta.expression.string.AbstractStringExpression;
@@ -217,6 +219,14 @@ public class ExpressionFactory {
   public static WordTableExpression createLiteralWordTableExpression(Token path) {
     return new LiteralWordTableExpression(path.getText());
   }
+  
+  public static WordListExpression createStringWordListExpression(IStringExpression expr) {
+    return new StringWordListExpression(expr);
+  }
+
+  public static WordTableExpression createStringWordTableExpression(IStringExpression expr) {
+    return new StringWordTableExpression(expr);
+  }
 
   public static IBooleanExpression createBooleanTypeExpression(ITypeExpression e1, Token op,
           ITypeExpression e2) {

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=1757638&r1=1757637&r2=1757638&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 Thu Aug 25 09:24:32 2016
@@ -40,7 +40,7 @@ public class AnnotationListVariableExpre
   public List<AnnotationFS> getList(MatchContext context, RutaStream stream) {
     RutaBlock parent = context.getParent();
     @SuppressWarnings("unchecked")
-    List<AnnotationFS> list = parent.getEnvironment().getVariableValue(var, List.class);
+    List<AnnotationFS> list = parent.getEnvironment().getVariableValue(var, List.class, stream);
     return list;
   }
 

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationListVariableIndexExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationListVariableIndexExpression.java?rev=1757638&r1=1757637&r2=1757638&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationListVariableIndexExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationListVariableIndexExpression.java Thu Aug 25 09:24:32 2016
@@ -46,7 +46,7 @@ private String var;
   public AnnotationFS getAnnotation(MatchContext context, RutaStream stream) {
     RutaBlock parent = context.getParent();
     @SuppressWarnings("unchecked")
-    List<AnnotationFS> list = parent.getEnvironment().getVariableValue(var, List.class);
+    List<AnnotationFS> list = parent.getEnvironment().getVariableValue(var, List.class, stream);
     if(list != null && index >= 0 && index < list.size()) {
       return list.get(index);
     }

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationVariableExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationVariableExpression.java?rev=1757638&r1=1757637&r2=1757638&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationVariableExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationVariableExpression.java Thu Aug 25 09:24:32 2016
@@ -41,7 +41,7 @@ private String var;
   @Override
   public AnnotationFS getAnnotation(MatchContext context, RutaStream stream) {
     RutaBlock parent = context.getParent();
-    AnnotationFS variableValue = parent.getEnvironment().getVariableValue(var, AnnotationFS.class);
+    AnnotationFS variableValue = parent.getEnvironment().getVariableValue(var, AnnotationFS.class, stream);
     return variableValue;
   }
 

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=1757638&r1=1757637&r2=1757638&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 Thu Aug 25 09:24:32 2016
@@ -39,7 +39,7 @@ public class BooleanListVariableExpressi
   @Override
   public List<Boolean> getList(MatchContext context, RutaStream stream) {
     RutaBlock parent = context.getParent();
-    List<Object> list = parent.getEnvironment().getVariableValue(var, List.class);
+    List<Object> list = parent.getEnvironment().getVariableValue(var, List.class, stream);
     List<Boolean> result = new ArrayList<Boolean>();
     for (Object each : list) {
       if (each instanceof IBooleanExpression) {

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanVariableExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanVariableExpression.java?rev=1757638&r1=1757637&r2=1757638&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanVariableExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanVariableExpression.java Thu Aug 25 09:24:32 2016
@@ -35,7 +35,7 @@ public class BooleanVariableExpression e
   @Override
   public boolean getBooleanValue(MatchContext context, RutaStream stream) {
     RutaBlock parent = context.getParent();
-    Boolean variableValue = parent.getEnvironment().getVariableValue(var, Boolean.class);
+    Boolean variableValue = parent.getEnvironment().getVariableValue(var, Boolean.class, stream);
     if (variableValue == null) {
       return false;
     }

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=1757638&r1=1757637&r2=1757638&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 Thu Aug 25 09:24:32 2016
@@ -39,7 +39,7 @@ public class NumberListVariableExpressio
   @Override
   public List<Number> getList(MatchContext context, RutaStream stream) {
     RutaBlock parent = context.getParent();
-    List<Object> list = parent.getEnvironment().getVariableValue(var, List.class);
+    List<Object> list = parent.getEnvironment().getVariableValue(var, List.class, stream);
     List<Number> result = new ArrayList<Number>();
     for (Object each : list) {
       if (each instanceof INumberExpression) {

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/NumberVariableExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/NumberVariableExpression.java?rev=1757638&r1=1757637&r2=1757638&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/NumberVariableExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/NumberVariableExpression.java Thu Aug 25 09:24:32 2016
@@ -34,7 +34,7 @@ public class NumberVariableExpression ex
 
   public double getDoubleValue(MatchContext context, RutaStream stream) {
     RutaBlock parent = context.getParent();
-    Object value = parent.getEnvironment().getVariableValue(getVar());
+    Object value = parent.getEnvironment().getVariableValue(getVar(), stream);
     double variableValue = 0;
     if (value instanceof Number) {
       variableValue = ((Number) value).doubleValue();
@@ -44,7 +44,7 @@ public class NumberVariableExpression ex
 
   public float getFloatValue(MatchContext context, RutaStream stream) {
     RutaBlock parent = context.getParent();
-    Object value = parent.getEnvironment().getVariableValue(getVar());
+    Object value = parent.getEnvironment().getVariableValue(getVar(), stream);
     float variableValue = 0;
     if (value instanceof Number) {
       variableValue = ((Number) value).floatValue();
@@ -54,7 +54,7 @@ public class NumberVariableExpression ex
 
   public int getIntegerValue(MatchContext context, RutaStream stream) {
     RutaBlock parent = context.getParent();
-    Object value = parent.getEnvironment().getVariableValue(getVar());
+    Object value = parent.getEnvironment().getVariableValue(getVar(), stream);
     int variableValue = 0;
     if (value instanceof Number) {
       variableValue = ((Number) value).intValue();

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/ExternalWordListExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/ExternalWordListExpression.java?rev=1757638&r1=1757637&r2=1757638&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/ExternalWordListExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/ExternalWordListExpression.java Thu Aug 25 09:24:32 2016
@@ -22,6 +22,7 @@ package org.apache.uima.ruta.expression.
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.uima.ruta.RutaStream;
 import org.apache.uima.ruta.expression.string.IStringExpression;
 import org.apache.uima.ruta.resource.RutaWordList;
 import org.apache.uima.ruta.rule.MatchContext;
@@ -39,7 +40,7 @@ public class ExternalWordListExpression
   }
 
   @Override
-  public RutaWordList getList(MatchContext context) {
+  public RutaWordList getList(MatchContext context, RutaStream stream) {
     List<String> argList = new ArrayList<String>();
     for (IStringExpression each : args) {
       argList.add(each.getStringValue(context, null));

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/ExternalWordTableExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/ExternalWordTableExpression.java?rev=1757638&r1=1757637&r2=1757638&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/ExternalWordTableExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/ExternalWordTableExpression.java Thu Aug 25 09:24:32 2016
@@ -22,6 +22,7 @@ package org.apache.uima.ruta.expression.
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.uima.ruta.RutaStream;
 import org.apache.uima.ruta.expression.string.IStringExpression;
 import org.apache.uima.ruta.resource.RutaTable;
 import org.apache.uima.ruta.rule.MatchContext;
@@ -39,7 +40,7 @@ public class ExternalWordTableExpression
   }
 
   @Override
-  public RutaTable getTable(MatchContext context) {
+  public RutaTable getTable(MatchContext context, RutaStream stream) {
     List<String> argList = new ArrayList<String>();
     for (IStringExpression each : args) {
       argList.add(each.getStringValue(context, null));

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/LiteralWordListExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/LiteralWordListExpression.java?rev=1757638&r1=1757637&r2=1757638&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/LiteralWordListExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/LiteralWordListExpression.java Thu Aug 25 09:24:32 2016
@@ -19,6 +19,7 @@
 
 package org.apache.uima.ruta.expression.resource;
 
+import org.apache.uima.ruta.RutaStream;
 import org.apache.uima.ruta.block.RutaBlock;
 import org.apache.uima.ruta.resource.RutaWordList;
 import org.apache.uima.ruta.rule.MatchContext;
@@ -41,7 +42,7 @@ public class LiteralWordListExpression e
   }
 
   @Override
-  public RutaWordList getList(MatchContext context) {
+  public RutaWordList getList(MatchContext context, RutaStream stream) {
     RutaBlock parent = context.getParent();
     RutaWordList list = parent.getEnvironment().getWordList(getText());
     return list;

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/LiteralWordTableExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/LiteralWordTableExpression.java?rev=1757638&r1=1757637&r2=1757638&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/LiteralWordTableExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/LiteralWordTableExpression.java Thu Aug 25 09:24:32 2016
@@ -19,6 +19,7 @@
 
 package org.apache.uima.ruta.expression.resource;
 
+import org.apache.uima.ruta.RutaStream;
 import org.apache.uima.ruta.block.RutaBlock;
 import org.apache.uima.ruta.resource.RutaTable;
 import org.apache.uima.ruta.rule.MatchContext;
@@ -41,7 +42,7 @@ public class LiteralWordTableExpression
   }
 
   @Override
-  public RutaTable getTable(MatchContext context) {
+  public RutaTable getTable(MatchContext context, RutaStream stream) {
     RutaBlock parent = context.getParent();
     RutaTable table = parent.getEnvironment().getWordTable(getText());
     return table;

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/ReferenceWordListExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/ReferenceWordListExpression.java?rev=1757638&r1=1757637&r2=1757638&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/ReferenceWordListExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/ReferenceWordListExpression.java Thu Aug 25 09:24:32 2016
@@ -19,6 +19,7 @@
 
 package org.apache.uima.ruta.expression.resource;
 
+import org.apache.uima.ruta.RutaStream;
 import org.apache.uima.ruta.block.RutaBlock;
 import org.apache.uima.ruta.resource.RutaWordList;
 import org.apache.uima.ruta.rule.MatchContext;
@@ -33,9 +34,9 @@ public class ReferenceWordListExpression
   }
 
   @Override
-  public RutaWordList getList(MatchContext context) {
+  public RutaWordList getList(MatchContext context, RutaStream stream) {
     RutaBlock parent = context.getParent();
-    return parent.getEnvironment().getVariableValue(ref, RutaWordList.class);
+    return parent.getEnvironment().getVariableValue(ref, RutaWordList.class, stream);
   }
 
   public String getRef() {

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/ReferenceWordTableExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/ReferenceWordTableExpression.java?rev=1757638&r1=1757637&r2=1757638&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/ReferenceWordTableExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/ReferenceWordTableExpression.java Thu Aug 25 09:24:32 2016
@@ -19,6 +19,7 @@
 
 package org.apache.uima.ruta.expression.resource;
 
+import org.apache.uima.ruta.RutaStream;
 import org.apache.uima.ruta.block.RutaBlock;
 import org.apache.uima.ruta.resource.RutaTable;
 import org.apache.uima.ruta.rule.MatchContext;
@@ -33,9 +34,9 @@ public class ReferenceWordTableExpressio
   }
 
   @Override
-  public RutaTable getTable(MatchContext context) {
+  public RutaTable getTable(MatchContext context, RutaStream stream) {
     RutaBlock parent = context.getParent();
-    return parent.getEnvironment().getVariableValue(ref, RutaTable.class);
+    return parent.getEnvironment().getVariableValue(ref, RutaTable.class, stream);
   }
 
   public String getRef() {

Added: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/StringWordListExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/StringWordListExpression.java?rev=1757638&view=auto
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/StringWordListExpression.java (added)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/StringWordListExpression.java Thu Aug 25 09:24:32 2016
@@ -0,0 +1,50 @@
+/*
+ * 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.resource;
+
+import org.apache.uima.ruta.RutaStream;
+import org.apache.uima.ruta.block.RutaBlock;
+import org.apache.uima.ruta.expression.string.IStringExpression;
+import org.apache.uima.ruta.resource.RutaWordList;
+import org.apache.uima.ruta.rule.MatchContext;
+
+public class StringWordListExpression extends WordListExpression {
+
+  private final IStringExpression expression;
+
+  public StringWordListExpression(IStringExpression expression) {
+    super();
+    this.expression = expression;
+    
+  }
+
+  @Override
+  public RutaWordList getList(MatchContext context, RutaStream stream) {
+    RutaBlock parent = context.getParent();
+    String stringValue = expression.getStringValue(context, stream);
+    RutaWordList list = parent.getEnvironment().getWordList(stringValue);
+    return list;
+  }
+
+  public IStringExpression getExpression() {
+    return expression;
+  }
+
+}

Propchange: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/StringWordListExpression.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/StringWordTableExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/StringWordTableExpression.java?rev=1757638&view=auto
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/StringWordTableExpression.java (added)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/StringWordTableExpression.java Thu Aug 25 09:24:32 2016
@@ -0,0 +1,50 @@
+/*
+ * 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.resource;
+
+import org.apache.uima.ruta.RutaStream;
+import org.apache.uima.ruta.block.RutaBlock;
+import org.apache.uima.ruta.expression.string.IStringExpression;
+import org.apache.uima.ruta.resource.RutaTable;
+import org.apache.uima.ruta.rule.MatchContext;
+
+public class StringWordTableExpression extends WordTableExpression {
+
+  private final IStringExpression expression;
+
+  public StringWordTableExpression(IStringExpression expression) {
+    super();
+    this.expression = expression;
+    
+  }
+
+  @Override
+  public RutaTable getTable(MatchContext context, RutaStream stream) {
+    RutaBlock parent = context.getParent();
+    String stringValue = expression.getStringValue(context, stream);
+    RutaTable table = parent.getEnvironment().getWordTable(stringValue);
+    return table;
+  }
+
+  public IStringExpression getExpression() {
+    return expression;
+  }
+
+}

Propchange: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/StringWordTableExpression.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/WordListExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/WordListExpression.java?rev=1757638&r1=1757637&r2=1757638&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/WordListExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/WordListExpression.java Thu Aug 25 09:24:32 2016
@@ -19,12 +19,13 @@
 
 package org.apache.uima.ruta.expression.resource;
 
+import org.apache.uima.ruta.RutaStream;
 import org.apache.uima.ruta.expression.RutaExpression;
 import org.apache.uima.ruta.resource.RutaWordList;
 import org.apache.uima.ruta.rule.MatchContext;
 
 public abstract class WordListExpression extends RutaExpression {
 
-  public abstract RutaWordList getList(MatchContext context);
+  public abstract RutaWordList getList(MatchContext context, RutaStream stream);
 
 }

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/WordTableExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/WordTableExpression.java?rev=1757638&r1=1757637&r2=1757638&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/WordTableExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/WordTableExpression.java Thu Aug 25 09:24:32 2016
@@ -19,12 +19,13 @@
 
 package org.apache.uima.ruta.expression.resource;
 
+import org.apache.uima.ruta.RutaStream;
 import org.apache.uima.ruta.expression.RutaExpression;
 import org.apache.uima.ruta.resource.RutaTable;
 import org.apache.uima.ruta.rule.MatchContext;
 
 public abstract class WordTableExpression extends RutaExpression {
 
-  public abstract RutaTable getTable(MatchContext context);
+  public abstract RutaTable getTable(MatchContext context, RutaStream stream);
 
 }

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/RemoveFunction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/RemoveFunction.java?rev=1757638&r1=1757637&r2=1757638&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/RemoveFunction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/RemoveFunction.java Thu Aug 25 09:24:32 2016
@@ -41,7 +41,7 @@ public class RemoveFunction extends Stri
   public String getStringValue(MatchContext context, RutaStream stream) {
     RutaBlock parent = context.getParent();
     StringBuilder result = new StringBuilder();
-    String value = parent.getEnvironment().getVariableValue(var, String.class);
+    String value = parent.getEnvironment().getVariableValue(var, String.class, stream);
     for (IStringExpression each : list) {
       String string = each.getStringValue(context, stream);
       String[] split = value.split(string);

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=1757638&r1=1757637&r2=1757638&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 Thu Aug 25 09:24:32 2016
@@ -39,7 +39,7 @@ public class StringListVariableExpressio
   @Override
   public List<String> getList(MatchContext context, RutaStream stream) {
     RutaBlock parent = context.getParent();
-    List<Object> list = parent.getEnvironment().getVariableValue(var, List.class);
+    List<Object> list = parent.getEnvironment().getVariableValue(var, List.class, stream);
     List<String> result = new ArrayList<String>();
     for (Object each : list) {
       if (each instanceof AbstractStringExpression) {

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/StringVariableExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/StringVariableExpression.java?rev=1757638&r1=1757637&r2=1757638&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/StringVariableExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/StringVariableExpression.java Thu Aug 25 09:24:32 2016
@@ -35,7 +35,7 @@ public class StringVariableExpression ex
   @Override
   public String getStringValue(MatchContext context, RutaStream stream) {
     RutaBlock parent = context.getParent();
-    String variableValue = parent.getEnvironment().getVariableValue(getVar(), String.class);
+    String variableValue = parent.getEnvironment().getVariableValue(getVar(), String.class, stream);
     return variableValue;
   }
 

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=1757638&r1=1757637&r2=1757638&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 Thu Aug 25 09:24:32 2016
@@ -40,7 +40,7 @@ public class TypeListVariableExpression
   @Override
   public List<Type> getList(MatchContext context, RutaStream stream) {
     RutaBlock parent = context.getParent();
-    List<Object> list = parent.getEnvironment().getVariableValue(var, List.class);
+    List<Object> list = parent.getEnvironment().getVariableValue(var, List.class, stream);
     List<Type> result = new ArrayList<Type>();
     for (Object each : list) {
       if (each instanceof ITypeExpression) {

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/type/TypeVariableExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/type/TypeVariableExpression.java?rev=1757638&r1=1757637&r2=1757638&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/type/TypeVariableExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/type/TypeVariableExpression.java Thu Aug 25 09:24:32 2016
@@ -52,7 +52,7 @@ public class TypeVariableExpression exte
   @Override
   public Type getType(MatchContext context, RutaStream stream) {
     RutaBlock parent = context.getParent();
-    Type type = parent.getEnvironment().getVariableValue(var, Type.class);
+    Type type = parent.getEnvironment().getVariableValue(var, Type.class, stream);
     if (type == null) {
       throw new IllegalArgumentException("Not able to resolve type variable: " + var);
     }

Modified: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/block/ForEachBlockTest.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/block/ForEachBlockTest.java?rev=1757638&r1=1757637&r2=1757638&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/block/ForEachBlockTest.java (original)
+++ uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/block/ForEachBlockTest.java Thu Aug 25 09:24:32 2016
@@ -183,7 +183,7 @@ public class ForEachBlockTest {
   public void testComposed() throws Exception {
     String script = "NUM{-> T1};";
     script += "FOREACH(t) T1{}{\n";
-    script += "(t (SW NUM)* (SPECIAL NUM)?{-PARTOF(T2)}){->T2};";
+    script += "(t (SW NUM)* (SPECIAL NUM)?){-PARTOF(T2) ->T2};";
     script += "}";
 
     CAS cas = RutaTestUtils.getCAS("text 4x2^3 text");

Added: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/resource/WordListStringExpressionTest.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/resource/WordListStringExpressionTest.java?rev=1757638&view=auto
==============================================================================
--- uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/resource/WordListStringExpressionTest.java (added)
+++ uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/resource/WordListStringExpressionTest.java Thu Aug 25 09:24:32 2016
@@ -0,0 +1,45 @@
+/*
+ * 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.resource;
+
+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 WordListStringExpressionTest {
+
+
+  @Test
+  public void test() throws Exception {
+    String document = "1 0 0 text 2 0 0.";
+
+    String script="STRING s = \"org/apache/uima/ruta/action/\";\n";
+    script +="WORDLIST wl = s + \"MarkFastTestList.txt\";\n";
+    script +="MARKFAST(T1,wl);\n";
+    
+    CAS cas = RutaTestUtils.getCAS(document);
+    Ruta.apply(cas, script);
+    
+    RutaTestUtils.assertAnnotationsEquals(cas, 1, 2, "1 0 0", "2 0 0");
+
+  }
+  
+}

Propchange: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/resource/WordListStringExpressionTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/resource/WordTableStringExpressionTest.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/resource/WordTableStringExpressionTest.java?rev=1757638&view=auto
==============================================================================
--- uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/resource/WordTableStringExpressionTest.java (added)
+++ uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/resource/WordTableStringExpressionTest.java Thu Aug 25 09:24:32 2016
@@ -0,0 +1,102 @@
+/*
+ * 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.resource;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+
+import org.apache.uima.cas.CAS;
+import org.apache.uima.cas.FSIterator;
+import org.apache.uima.cas.Feature;
+import org.apache.uima.cas.Type;
+import org.apache.uima.cas.text.AnnotationFS;
+import org.apache.uima.cas.text.AnnotationIndex;
+import org.apache.uima.ruta.engine.Ruta;
+import org.apache.uima.ruta.engine.RutaTestUtils;
+import org.apache.uima.ruta.engine.RutaTestUtils.TestFeature;
+import org.junit.Test;
+
+public class WordTableStringExpressionTest {
+
+
+  @Test
+  public void test() throws Exception {
+    String document = "Kluegl Schor Kottmann";
+
+    String script="STRING s = \"org/apache/uima/ruta/action/\";\n";
+    script +="WORDTABLE table = s + \"table.csv\";\n";
+    script +="MARKTABLE(Person, 1, table, true, 0, \"-.,\", 10, \"firstname\" = 2, \"system\" = 3);\n";
+    
+    Map<String, String> complexTypes = new TreeMap<String, String>();
+    String typeName = "org.apache.uima.Person";
+    complexTypes.put(typeName, "uima.tcas.Annotation");
+    
+    Map<String, List<TestFeature>> features = new TreeMap<String, List<TestFeature>>();
+    List<TestFeature> list = new ArrayList<RutaTestUtils.TestFeature>();
+    features.put(typeName, list);
+    String fn1 = "firstname";
+    list.add(new TestFeature(fn1, "", "uima.cas.String"));
+    String fn2 = "system";
+    list.add(new TestFeature(fn2, "", "uima.cas.String"));
+    
+    CAS cas = RutaTestUtils.getCAS(document, complexTypes, features);
+    Ruta.apply(cas, script);
+    
+    Type t = null;
+    AnnotationIndex<AnnotationFS> ai = null;
+    FSIterator<AnnotationFS> iterator = null;
+    AnnotationFS next = null;
+    String v1 = null;
+    String v2 = null;
+    t = cas.getTypeSystem().getType(typeName);
+    Feature f1 = t.getFeatureByBaseName(fn1);
+    Feature f2 = t.getFeatureByBaseName(fn2);
+    ai = cas.getAnnotationIndex(t);
+    
+    assertEquals(3, ai.size());
+    iterator = ai.iterator();
+    
+    next = iterator.next();
+    v1 = next.getStringValue(f1);
+    v2 = next.getStringValue(f2);
+    assertEquals("Peter", v1);
+    assertEquals("Ruta", v2);
+    
+    next = iterator.next();
+    v1 = next.getStringValue(f1);
+    v2 = next.getStringValue(f2);
+    assertEquals("Marshall", v1);
+    assertEquals("UIMA", v2);
+    
+    next = iterator.next();
+    v1 = next.getStringValue(f1);
+    v2 = next.getStringValue(f2);
+    assertEquals("Joern", v1);
+    assertEquals("CAS Editor", v2);
+    
+    cas.release();    
+
+  }
+  
+}

Propchange: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/resource/WordTableStringExpressionTest.java
------------------------------------------------------------------------------
    svn:eol-style = native