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 2013/12/06 09:41:09 UTC

svn commit: r1548429 [3/5] - in /uima/ruta/trunk: example-projects/ruta-ep-example-extensions/src/main/java/org/apache/uima/ruta/example/extensions/ ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/ ruta-core/src/main/java/org/apache/uima/ruta/ ru...

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/CountCondition.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/CountCondition.java?rev=1548429&r1=1548428&r2=1548429&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/CountCondition.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/CountCondition.java Fri Dec  6 08:41:07 2013
@@ -25,16 +25,16 @@ import java.util.List;
 import org.apache.uima.cas.Type;
 import org.apache.uima.cas.text.AnnotationFS;
 import org.apache.uima.ruta.RutaStream;
-import org.apache.uima.ruta.expression.RutaExpression;
-import org.apache.uima.ruta.expression.bool.BooleanExpression;
+import org.apache.uima.ruta.expression.IRutaExpression;
+import org.apache.uima.ruta.expression.bool.IBooleanExpression;
 import org.apache.uima.ruta.expression.list.BooleanListExpression;
 import org.apache.uima.ruta.expression.list.ListExpression;
 import org.apache.uima.ruta.expression.list.NumberListExpression;
 import org.apache.uima.ruta.expression.list.StringListExpression;
 import org.apache.uima.ruta.expression.list.TypeListExpression;
-import org.apache.uima.ruta.expression.number.NumberExpression;
+import org.apache.uima.ruta.expression.number.INumberExpression;
 import org.apache.uima.ruta.expression.number.SimpleNumberExpression;
-import org.apache.uima.ruta.expression.string.StringExpression;
+import org.apache.uima.ruta.expression.string.IStringExpression;
 import org.apache.uima.ruta.expression.type.TypeExpression;
 import org.apache.uima.ruta.rule.EvaluatedCondition;
 import org.apache.uima.ruta.rule.RuleElement;
@@ -42,25 +42,25 @@ import org.apache.uima.ruta.visitor.Infe
 
 public class CountCondition extends TypeSentiveCondition {
 
-  private final NumberExpression min;
+  private final INumberExpression min;
 
-  private final NumberExpression max;
+  private final INumberExpression max;
 
   private final String var;
 
   private ListExpression list;
 
-  private RutaExpression arg;
+  private IRutaExpression arg;
 
-  public CountCondition(TypeExpression type, NumberExpression min, NumberExpression max, String var) {
+  public CountCondition(TypeExpression type, INumberExpression min, INumberExpression max, String var) {
     super(type);
     this.min = min == null ? new SimpleNumberExpression(Integer.MIN_VALUE) : min;
     this.max = max == null ? new SimpleNumberExpression(Integer.MAX_VALUE) : max;
     this.var = var;
   }
 
-  public CountCondition(ListExpression list, RutaExpression a, NumberExpression min,
-          NumberExpression max, String var) {
+  public CountCondition(ListExpression list, IRutaExpression a, INumberExpression min,
+          INumberExpression max, String var) {
     super((TypeExpression) null);
     this.list = list;
     this.arg = a;
@@ -84,24 +84,24 @@ public class CountCondition extends Type
       return new EvaluatedCondition(this, value);
     } else {
       int count = 0;
-      if (arg instanceof BooleanExpression && list instanceof BooleanListExpression) {
-        BooleanExpression e = (BooleanExpression) arg;
+      if (arg instanceof IBooleanExpression && list instanceof BooleanListExpression) {
+        IBooleanExpression e = (IBooleanExpression) arg;
         BooleanListExpression le = (BooleanListExpression) list;
         boolean v = e.getBooleanValue(element.getParent(), annotation, stream);
         List<Boolean> l = new ArrayList<Boolean>(le.getList(element.getParent(), stream));
         while (l.remove(v)) {
           count++;
         }
-      } else if (arg instanceof NumberExpression && list instanceof NumberListExpression) {
-        NumberExpression e = (NumberExpression) arg;
+      } else if (arg instanceof INumberExpression && list instanceof NumberListExpression) {
+        INumberExpression e = (INumberExpression) arg;
         NumberListExpression le = (NumberListExpression) list;
         Number v = e.getDoubleValue(element.getParent(), annotation, stream);
         List<Number> l = new ArrayList<Number>(le.getList(element.getParent(), stream));
         while (l.remove(v)) {
           count++;
         }
-      } else if (arg instanceof StringExpression && list instanceof StringListExpression) {
-        StringExpression e = (StringExpression) arg;
+      } else if (arg instanceof IStringExpression && list instanceof StringListExpression) {
+        IStringExpression e = (IStringExpression) arg;
         StringListExpression le = (StringListExpression) list;
         String v = e.getStringValue(element.getParent(), annotation, stream);
         List<String> l = new ArrayList<String>(le.getList(element.getParent(), stream));
@@ -126,11 +126,11 @@ public class CountCondition extends Type
     }
   }
 
-  public NumberExpression getMin() {
+  public INumberExpression getMin() {
     return min;
   }
 
-  public NumberExpression getMax() {
+  public INumberExpression getMax() {
     return max;
   }
 
@@ -142,7 +142,7 @@ public class CountCondition extends Type
     return list;
   }
 
-  public RutaExpression getArg() {
+  public IRutaExpression getArg() {
     return arg;
   }
 }

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/CurrentCountCondition.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/CurrentCountCondition.java?rev=1548429&r1=1548428&r2=1548429&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/CurrentCountCondition.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/CurrentCountCondition.java Fri Dec  6 08:41:07 2013
@@ -23,7 +23,7 @@ import java.util.Iterator;
 
 import org.apache.uima.cas.text.AnnotationFS;
 import org.apache.uima.ruta.RutaStream;
-import org.apache.uima.ruta.expression.number.NumberExpression;
+import org.apache.uima.ruta.expression.number.INumberExpression;
 import org.apache.uima.ruta.expression.number.SimpleNumberExpression;
 import org.apache.uima.ruta.expression.type.TypeExpression;
 import org.apache.uima.ruta.rule.EvaluatedCondition;
@@ -31,13 +31,13 @@ import org.apache.uima.ruta.rule.RuleEle
 import org.apache.uima.ruta.visitor.InferenceCrowd;
 
 public class CurrentCountCondition extends TypeSentiveCondition {
-  private final NumberExpression min;
+  private final INumberExpression min;
 
-  private final NumberExpression max;
+  private final INumberExpression max;
 
   private final String var;
 
-  public CurrentCountCondition(TypeExpression type, NumberExpression min, NumberExpression max,
+  public CurrentCountCondition(TypeExpression type, INumberExpression min, INumberExpression max,
           String var) {
     super(type);
     this.min = min == null ? new SimpleNumberExpression(Integer.MIN_VALUE) : min;
@@ -67,11 +67,11 @@ public class CurrentCountCondition exten
     return new EvaluatedCondition(this, value);
   }
 
-  public NumberExpression getMin() {
+  public INumberExpression getMin() {
     return min;
   }
 
-  public NumberExpression getMax() {
+  public INumberExpression getMax() {
     return max;
   }
 

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/FeatureCondition.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/FeatureCondition.java?rev=1548429&r1=1548428&r2=1548429&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/FeatureCondition.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/FeatureCondition.java Fri Dec  6 08:41:07 2013
@@ -23,9 +23,9 @@ import org.apache.uima.cas.Feature;
 import org.apache.uima.cas.text.AnnotationFS;
 import org.apache.uima.ruta.RutaStream;
 import org.apache.uima.ruta.UIMAConstants;
-import org.apache.uima.ruta.expression.bool.BooleanExpression;
-import org.apache.uima.ruta.expression.number.NumberExpression;
-import org.apache.uima.ruta.expression.string.StringExpression;
+import org.apache.uima.ruta.expression.bool.IBooleanExpression;
+import org.apache.uima.ruta.expression.number.INumberExpression;
+import org.apache.uima.ruta.expression.string.IStringExpression;
 import org.apache.uima.ruta.expression.type.TypeExpression;
 import org.apache.uima.ruta.rule.EvaluatedCondition;
 import org.apache.uima.ruta.rule.RuleElement;
@@ -33,37 +33,37 @@ import org.apache.uima.ruta.visitor.Infe
 
 public class FeatureCondition extends AbstractRutaCondition {
 
-  private final StringExpression featureStringExpression;
+  private final IStringExpression featureStringExpression;
 
-  private StringExpression stringExpr;
+  private IStringExpression stringExpr;
 
-  private NumberExpression numberExpr;
+  private INumberExpression numberExpr;
 
-  private BooleanExpression booleanExpr;
+  private IBooleanExpression booleanExpr;
 
   private TypeExpression typeExpr;
 
-  protected FeatureCondition(StringExpression feature) {
+  protected FeatureCondition(IStringExpression feature) {
     super();
     this.featureStringExpression = feature;
   }
 
-  public FeatureCondition(StringExpression feature, StringExpression stringExpr) {
+  public FeatureCondition(IStringExpression feature, IStringExpression stringExpr) {
     this(feature);
     this.stringExpr = stringExpr;
   }
 
-  public FeatureCondition(StringExpression feature, NumberExpression numberExpr) {
+  public FeatureCondition(IStringExpression feature, INumberExpression numberExpr) {
     this(feature);
     this.numberExpr = numberExpr;
   }
 
-  public FeatureCondition(StringExpression feature, BooleanExpression booleanExpr) {
+  public FeatureCondition(IStringExpression feature, IBooleanExpression booleanExpr) {
     this(feature);
     this.booleanExpr = booleanExpr;
   }
 
-  public FeatureCondition(StringExpression feature, TypeExpression typeExpr, String variable,
+  public FeatureCondition(IStringExpression feature, TypeExpression typeExpr, String variable,
           RuleElement re) {
     this(feature);
     this.typeExpr = typeExpr;
@@ -124,19 +124,19 @@ public class FeatureCondition extends Ab
     return new EvaluatedCondition(this, false);
   }
 
-  public StringExpression getFeatureStringExpression() {
+  public IStringExpression getFeatureStringExpression() {
     return featureStringExpression;
   }
 
-  public StringExpression getStringExpr() {
+  public IStringExpression getStringExpr() {
     return stringExpr;
   }
 
-  public NumberExpression getNumberExpr() {
+  public INumberExpression getNumberExpr() {
     return numberExpr;
   }
 
-  public BooleanExpression getBooleanExpr() {
+  public IBooleanExpression getBooleanExpr() {
     return booleanExpr;
   }
 

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/IfCondition.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/IfCondition.java?rev=1548429&r1=1548428&r2=1548429&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/IfCondition.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/IfCondition.java Fri Dec  6 08:41:07 2013
@@ -21,16 +21,16 @@ package org.apache.uima.ruta.condition;
 
 import org.apache.uima.cas.text.AnnotationFS;
 import org.apache.uima.ruta.RutaStream;
-import org.apache.uima.ruta.expression.bool.BooleanExpression;
+import org.apache.uima.ruta.expression.bool.IBooleanExpression;
 import org.apache.uima.ruta.rule.EvaluatedCondition;
 import org.apache.uima.ruta.rule.RuleElement;
 import org.apache.uima.ruta.visitor.InferenceCrowd;
 
 public class IfCondition extends AbstractRutaCondition {
 
-  private final BooleanExpression expression;
+  private final IBooleanExpression expression;
 
-  public IfCondition(BooleanExpression e) {
+  public IfCondition(IBooleanExpression e) {
     super();
     this.expression = e;
   }
@@ -42,7 +42,7 @@ public class IfCondition extends Abstrac
             stream));
   }
 
-  public BooleanExpression getExpression() {
+  public IBooleanExpression getExpression() {
     return expression;
   }
 

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ImplicitCondition.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ImplicitCondition.java?rev=1548429&r1=1548428&r2=1548429&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ImplicitCondition.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ImplicitCondition.java Fri Dec  6 08:41:07 2013
@@ -29,8 +29,8 @@ import org.apache.uima.cas.Type;
 import org.apache.uima.cas.TypeSystem;
 import org.apache.uima.cas.text.AnnotationFS;
 import org.apache.uima.ruta.RutaStream;
-import org.apache.uima.ruta.expression.RutaExpression;
-import org.apache.uima.ruta.expression.bool.BooleanExpression;
+import org.apache.uima.ruta.expression.IRutaExpression;
+import org.apache.uima.ruta.expression.bool.IBooleanExpression;
 import org.apache.uima.ruta.expression.feature.FeatureMatchExpression;
 import org.apache.uima.ruta.expression.type.TypeExpression;
 import org.apache.uima.ruta.rule.EvaluatedCondition;
@@ -39,9 +39,9 @@ import org.apache.uima.ruta.visitor.Infe
 
 public class ImplicitCondition extends AbstractRutaCondition {
 
-  private RutaExpression expr;
+  private IRutaExpression expr;
 
-  public ImplicitCondition(RutaExpression expr) {
+  public ImplicitCondition(IRutaExpression expr) {
     super();
     this.expr = expr;
   }
@@ -49,8 +49,8 @@ public class ImplicitCondition extends A
   @Override
   public EvaluatedCondition eval(AnnotationFS annotation, RuleElement element, RutaStream stream,
           InferenceCrowd crowd) {
-    if (expr instanceof BooleanExpression) {
-      BooleanExpression be = (BooleanExpression) expr;
+    if (expr instanceof IBooleanExpression) {
+      IBooleanExpression be = (IBooleanExpression) expr;
       return new EvaluatedCondition(this, be.getBooleanValue(element.getParent(), null, stream));
     } else if (expr instanceof FeatureMatchExpression) {
       FeatureMatchExpression fme = (FeatureMatchExpression) expr;
@@ -82,11 +82,11 @@ public class ImplicitCondition extends A
     return result;
   }
 
-  public RutaExpression getExpr() {
+  public IRutaExpression getExpr() {
     return expr;
   }
 
-  public void setExpr(RutaExpression expr) {
+  public void setExpr(IRutaExpression expr) {
     this.expr = expr;
   }
 }

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=1548429&r1=1548428&r2=1548429&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 Fri Dec  6 08:41:07 2013
@@ -23,9 +23,9 @@ import java.util.List;
 
 import org.apache.uima.cas.text.AnnotationFS;
 import org.apache.uima.ruta.RutaStream;
-import org.apache.uima.ruta.expression.bool.BooleanExpression;
+import org.apache.uima.ruta.expression.bool.IBooleanExpression;
 import org.apache.uima.ruta.expression.list.StringListExpression;
-import org.apache.uima.ruta.expression.number.NumberExpression;
+import org.apache.uima.ruta.expression.number.INumberExpression;
 import org.apache.uima.ruta.expression.resource.WordListExpression;
 import org.apache.uima.ruta.resource.RutaWordList;
 import org.apache.uima.ruta.rule.EvaluatedCondition;
@@ -34,24 +34,24 @@ import org.apache.uima.ruta.visitor.Infe
 
 public class InListCondition extends TerminalRutaCondition {
 
-  private BooleanExpression relative;
+  private IBooleanExpression relative;
 
-  private final NumberExpression distance;
+  private final INumberExpression distance;
 
   private WordListExpression listExpr;
 
   private StringListExpression stringList;
 
-  public InListCondition(WordListExpression listExpr, NumberExpression distance,
-          BooleanExpression relative) {
+  public InListCondition(WordListExpression listExpr, INumberExpression distance,
+          IBooleanExpression relative) {
     super();
     this.listExpr = listExpr;
     this.distance = distance;
     this.relative = relative;
   }
 
-  public InListCondition(StringListExpression list, NumberExpression distance,
-          BooleanExpression relative) {
+  public InListCondition(StringListExpression list, INumberExpression distance,
+          IBooleanExpression relative) {
     super();
     this.distance = distance;
     this.relative = relative;
@@ -71,11 +71,11 @@ public class InListCondition extends Ter
     return new EvaluatedCondition(this, contains);
   }
 
-  public BooleanExpression getRelative() {
+  public IBooleanExpression getRelative() {
     return relative;
   }
 
-  public NumberExpression getDistance() {
+  public INumberExpression getDistance() {
     return distance;
   }
 

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/MOfNCondition.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/MOfNCondition.java?rev=1548429&r1=1548428&r2=1548429&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/MOfNCondition.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/MOfNCondition.java Fri Dec  6 08:41:07 2013
@@ -24,19 +24,19 @@ import java.util.List;
 
 import org.apache.uima.cas.text.AnnotationFS;
 import org.apache.uima.ruta.RutaStream;
-import org.apache.uima.ruta.expression.number.NumberExpression;
+import org.apache.uima.ruta.expression.number.INumberExpression;
 import org.apache.uima.ruta.rule.EvaluatedCondition;
 import org.apache.uima.ruta.rule.RuleElement;
 import org.apache.uima.ruta.visitor.InferenceCrowd;
 
 public class MOfNCondition extends ComposedRutaCondition {
 
-  private final NumberExpression min;
+  private final INumberExpression min;
 
-  private final NumberExpression max;
+  private final INumberExpression max;
 
-  public MOfNCondition(List<AbstractRutaCondition> conditions, NumberExpression min,
-          NumberExpression max) {
+  public MOfNCondition(List<AbstractRutaCondition> conditions, INumberExpression min,
+          INumberExpression max) {
     super(conditions);
     this.min = min;
     this.max = max;
@@ -61,11 +61,11 @@ public class MOfNCondition extends Compo
     return new EvaluatedCondition(this, value, evals);
   }
 
-  public NumberExpression getMin() {
+  public INumberExpression getMin() {
     return min;
   }
 
-  public NumberExpression getMax() {
+  public INumberExpression getMax() {
     return max;
   }
 }

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/NearCondition.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/NearCondition.java?rev=1548429&r1=1548428&r2=1548429&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/NearCondition.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/NearCondition.java Fri Dec  6 08:41:07 2013
@@ -23,9 +23,9 @@ import org.apache.uima.cas.FSIterator;
 import org.apache.uima.cas.FeatureStructure;
 import org.apache.uima.cas.text.AnnotationFS;
 import org.apache.uima.ruta.RutaStream;
-import org.apache.uima.ruta.expression.bool.BooleanExpression;
+import org.apache.uima.ruta.expression.bool.IBooleanExpression;
 import org.apache.uima.ruta.expression.bool.SimpleBooleanExpression;
-import org.apache.uima.ruta.expression.number.NumberExpression;
+import org.apache.uima.ruta.expression.number.INumberExpression;
 import org.apache.uima.ruta.expression.number.SimpleNumberExpression;
 import org.apache.uima.ruta.expression.type.TypeExpression;
 import org.apache.uima.ruta.rule.EvaluatedCondition;
@@ -35,16 +35,16 @@ import org.apache.uima.ruta.visitor.Infe
 
 public class NearCondition extends TypeSentiveCondition {
 
-  private final NumberExpression min;
+  private final INumberExpression min;
 
-  private final NumberExpression max;
+  private final INumberExpression max;
 
-  private final BooleanExpression forward;
+  private final IBooleanExpression forward;
 
-  private final BooleanExpression filtered;
+  private final IBooleanExpression filtered;
 
-  public NearCondition(TypeExpression type, NumberExpression min, NumberExpression max,
-          BooleanExpression forward, BooleanExpression filtered) {
+  public NearCondition(TypeExpression type, INumberExpression min, INumberExpression max,
+          IBooleanExpression forward, IBooleanExpression filtered) {
     super(type);
     this.min = min == null ? new SimpleNumberExpression(1) : min;
     this.max = max == null ? new SimpleNumberExpression(1) : max;
@@ -89,19 +89,19 @@ public class NearCondition extends TypeS
     return new EvaluatedCondition(this, false);
   }
 
-  public NumberExpression getMin() {
+  public INumberExpression getMin() {
     return min;
   }
 
-  public NumberExpression getMax() {
+  public INumberExpression getMax() {
     return max;
   }
 
-  public BooleanExpression getForward() {
+  public IBooleanExpression getForward() {
     return forward;
   }
 
-  public BooleanExpression getFiltered() {
+  public IBooleanExpression getFiltered() {
     return filtered;
   }
 }

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/PositionCondition.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/PositionCondition.java?rev=1548429&r1=1548428&r2=1548429&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/PositionCondition.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/PositionCondition.java Fri Dec  6 08:41:07 2013
@@ -26,8 +26,8 @@ import org.apache.uima.cas.FSIterator;
 import org.apache.uima.cas.Type;
 import org.apache.uima.cas.text.AnnotationFS;
 import org.apache.uima.ruta.RutaStream;
-import org.apache.uima.ruta.expression.bool.BooleanExpression;
-import org.apache.uima.ruta.expression.number.NumberExpression;
+import org.apache.uima.ruta.expression.bool.IBooleanExpression;
+import org.apache.uima.ruta.expression.number.INumberExpression;
 import org.apache.uima.ruta.expression.type.TypeExpression;
 import org.apache.uima.ruta.rule.EvaluatedCondition;
 import org.apache.uima.ruta.rule.RuleElement;
@@ -37,12 +37,12 @@ import org.apache.uima.ruta.visitor.Infe
 
 public class PositionCondition extends TypeSentiveCondition {
 
-  private final NumberExpression position;
+  private final INumberExpression position;
 
-  private final BooleanExpression relative;
+  private final IBooleanExpression relative;
 
-  public PositionCondition(TypeExpression type, NumberExpression position,
-          BooleanExpression relative) {
+  public PositionCondition(TypeExpression type, INumberExpression position,
+          IBooleanExpression relative) {
     super(type);
     this.position = position;
     this.relative = relative;
@@ -136,11 +136,11 @@ public class PositionCondition extends T
     return false;
   }
 
-  public NumberExpression getPosition() {
+  public INumberExpression getPosition() {
     return position;
   }
 
-  public BooleanExpression getRelative() {
+  public IBooleanExpression getRelative() {
     return relative;
   }
 

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/RegExpCondition.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/RegExpCondition.java?rev=1548429&r1=1548428&r2=1548429&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/RegExpCondition.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/RegExpCondition.java Fri Dec  6 08:41:07 2013
@@ -24,27 +24,27 @@ import java.util.regex.Pattern;
 
 import org.apache.uima.cas.text.AnnotationFS;
 import org.apache.uima.ruta.RutaStream;
-import org.apache.uima.ruta.expression.bool.BooleanExpression;
+import org.apache.uima.ruta.expression.bool.IBooleanExpression;
 import org.apache.uima.ruta.expression.bool.SimpleBooleanExpression;
-import org.apache.uima.ruta.expression.string.StringExpression;
+import org.apache.uima.ruta.expression.string.IStringExpression;
 import org.apache.uima.ruta.rule.EvaluatedCondition;
 import org.apache.uima.ruta.rule.RuleElement;
 import org.apache.uima.ruta.visitor.InferenceCrowd;
 
 public class RegExpCondition extends TerminalRutaCondition {
-  private final StringExpression pattern;
+  private final IStringExpression pattern;
 
-  private final BooleanExpression ignoreCase;
+  private final IBooleanExpression ignoreCase;
 
-  private StringExpression variable;
+  private IStringExpression variable;
 
-  public RegExpCondition(StringExpression pattern, BooleanExpression ignoreCase) {
+  public RegExpCondition(IStringExpression pattern, IBooleanExpression ignoreCase) {
     super();
     this.pattern = pattern;
     this.ignoreCase = ignoreCase == null ? new SimpleBooleanExpression(false) : ignoreCase;
   }
 
-  public RegExpCondition(StringExpression v, StringExpression pattern, BooleanExpression ignoreCase) {
+  public RegExpCondition(IStringExpression v, IStringExpression pattern, IBooleanExpression ignoreCase) {
     this(pattern, ignoreCase);
     this.variable = v;
   }
@@ -79,15 +79,15 @@ public class RegExpCondition extends Ter
     return new EvaluatedCondition(this, matches);
   }
 
-  public StringExpression getPattern() {
+  public IStringExpression getPattern() {
     return pattern;
   }
 
-  public StringExpression getVariable() {
+  public IStringExpression getVariable() {
     return variable;
   }
 
-  public BooleanExpression getIgnoreCase() {
+  public IBooleanExpression getIgnoreCase() {
     return ignoreCase;
   }
 

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ScoreCondition.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ScoreCondition.java?rev=1548429&r1=1548428&r2=1548429&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ScoreCondition.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ScoreCondition.java Fri Dec  6 08:41:07 2013
@@ -25,7 +25,7 @@ import org.apache.uima.cas.Type;
 import org.apache.uima.cas.text.AnnotationFS;
 import org.apache.uima.jcas.tcas.Annotation;
 import org.apache.uima.ruta.RutaStream;
-import org.apache.uima.ruta.expression.number.NumberExpression;
+import org.apache.uima.ruta.expression.number.INumberExpression;
 import org.apache.uima.ruta.expression.number.SimpleNumberExpression;
 import org.apache.uima.ruta.rule.EvaluatedCondition;
 import org.apache.uima.ruta.rule.RuleElement;
@@ -33,13 +33,13 @@ import org.apache.uima.ruta.type.RutaAnn
 import org.apache.uima.ruta.visitor.InferenceCrowd;
 
 public class ScoreCondition extends TerminalRutaCondition {
-  private final NumberExpression min;
+  private final INumberExpression min;
 
-  private final NumberExpression max;
+  private final INumberExpression max;
 
   private final String var;
 
-  public ScoreCondition(NumberExpression min, NumberExpression max, String var) {
+  public ScoreCondition(INumberExpression min, INumberExpression max, String var) {
     super();
     this.min = min == null ? new SimpleNumberExpression(Integer.MIN_VALUE) : min;
     this.max = max == null ? new SimpleNumberExpression(Integer.MAX_VALUE) : max;
@@ -68,11 +68,11 @@ public class ScoreCondition extends Term
     return new EvaluatedCondition(this, value);
   }
 
-  public NumberExpression getMin() {
+  public INumberExpression getMin() {
     return min;
   }
 
-  public NumberExpression getMax() {
+  public INumberExpression getMax() {
     return max;
   }
 

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/SizeCondition.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/SizeCondition.java?rev=1548429&r1=1548428&r2=1548429&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/SizeCondition.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/SizeCondition.java Fri Dec  6 08:41:07 2013
@@ -22,7 +22,7 @@ package org.apache.uima.ruta.condition;
 import org.apache.uima.cas.text.AnnotationFS;
 import org.apache.uima.ruta.RutaStream;
 import org.apache.uima.ruta.expression.list.ListExpression;
-import org.apache.uima.ruta.expression.number.NumberExpression;
+import org.apache.uima.ruta.expression.number.INumberExpression;
 import org.apache.uima.ruta.expression.number.SimpleNumberExpression;
 import org.apache.uima.ruta.rule.EvaluatedCondition;
 import org.apache.uima.ruta.rule.RuleElement;
@@ -32,13 +32,13 @@ public class SizeCondition extends Abstr
 
   private ListExpression<?> listExpr;
 
-  private NumberExpression minExpr;
+  private INumberExpression minExpr;
 
-  private NumberExpression maxExpr;
+  private INumberExpression maxExpr;
 
   private String varExpr;
 
-  public SizeCondition(ListExpression<?> list, NumberExpression min, NumberExpression max,
+  public SizeCondition(ListExpression<?> list, INumberExpression min, INumberExpression max,
           String string) {
     super();
     this.listExpr = list;
@@ -63,11 +63,11 @@ public class SizeCondition extends Abstr
     return listExpr;
   }
 
-  public NumberExpression getMinExpr() {
+  public INumberExpression getMinExpr() {
     return minExpr;
   }
 
-  public NumberExpression getMaxExpr() {
+  public INumberExpression getMaxExpr() {
     return maxExpr;
   }
 

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/TotalCountCondition.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/TotalCountCondition.java?rev=1548429&r1=1548428&r2=1548429&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/TotalCountCondition.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/TotalCountCondition.java Fri Dec  6 08:41:07 2013
@@ -23,7 +23,7 @@ import java.util.Iterator;
 
 import org.apache.uima.cas.text.AnnotationFS;
 import org.apache.uima.ruta.RutaStream;
-import org.apache.uima.ruta.expression.number.NumberExpression;
+import org.apache.uima.ruta.expression.number.INumberExpression;
 import org.apache.uima.ruta.expression.number.SimpleNumberExpression;
 import org.apache.uima.ruta.expression.type.TypeExpression;
 import org.apache.uima.ruta.rule.EvaluatedCondition;
@@ -31,13 +31,13 @@ import org.apache.uima.ruta.rule.RuleEle
 import org.apache.uima.ruta.visitor.InferenceCrowd;
 
 public class TotalCountCondition extends TypeSentiveCondition {
-  private final NumberExpression min;
+  private final INumberExpression min;
 
-  private final NumberExpression max;
+  private final INumberExpression max;
 
   private final String var;
 
-  public TotalCountCondition(TypeExpression type, NumberExpression min, NumberExpression max,
+  public TotalCountCondition(TypeExpression type, INumberExpression min, INumberExpression max,
           String var) {
     super(type);
     this.min = min == null ? new SimpleNumberExpression(Integer.MIN_VALUE) : min;
@@ -63,11 +63,11 @@ public class TotalCountCondition extends
     return new EvaluatedCondition(this, value);
   }
 
-  public NumberExpression getMin() {
+  public INumberExpression getMin() {
     return min;
   }
 
-  public NumberExpression getMax() {
+  public INumberExpression getMax() {
     return max;
   }
 

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=1548429&r1=1548428&r2=1548429&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 Fri Dec  6 08:41:07 2013
@@ -24,15 +24,16 @@ import java.util.List;
 
 import org.antlr.runtime.Token;
 import org.apache.uima.ruta.RutaBlock;
-import org.apache.uima.ruta.expression.bool.BooleanExpression;
 import org.apache.uima.ruta.expression.bool.BooleanFeatureExpression;
 import org.apache.uima.ruta.expression.bool.BooleanNumberExpression;
 import org.apache.uima.ruta.expression.bool.BooleanTypeExpression;
+import org.apache.uima.ruta.expression.bool.IBooleanExpression;
 import org.apache.uima.ruta.expression.bool.ReferenceBooleanExpression;
 import org.apache.uima.ruta.expression.bool.SimpleBooleanExpression;
 import org.apache.uima.ruta.expression.bool.SimpleBooleanFunction;
 import org.apache.uima.ruta.expression.feature.FeatureExpression;
 import org.apache.uima.ruta.expression.feature.FeatureMatchExpression;
+import org.apache.uima.ruta.expression.feature.GenericFeatureExpression;
 import org.apache.uima.ruta.expression.feature.SimpleFeatureExpression;
 import org.apache.uima.ruta.expression.list.BooleanListExpression;
 import org.apache.uima.ruta.expression.list.NumberListExpression;
@@ -47,8 +48,8 @@ import org.apache.uima.ruta.expression.l
 import org.apache.uima.ruta.expression.list.StringListExpression;
 import org.apache.uima.ruta.expression.list.TypeListExpression;
 import org.apache.uima.ruta.expression.number.ComposedNumberExpression;
+import org.apache.uima.ruta.expression.number.INumberExpression;
 import org.apache.uima.ruta.expression.number.NegativeNumberExpression;
-import org.apache.uima.ruta.expression.number.NumberExpression;
 import org.apache.uima.ruta.expression.number.NumberFeatureExpression;
 import org.apache.uima.ruta.expression.number.ReferenceNumberExpression;
 import org.apache.uima.ruta.expression.number.SimpleNumberExpression;
@@ -58,10 +59,11 @@ import org.apache.uima.ruta.expression.r
 import org.apache.uima.ruta.expression.resource.ReferenceWordTableExpression;
 import org.apache.uima.ruta.expression.resource.WordListExpression;
 import org.apache.uima.ruta.expression.resource.WordTableExpression;
+import org.apache.uima.ruta.expression.string.AbstractStringExpression;
 import org.apache.uima.ruta.expression.string.ComposedStringExpression;
+import org.apache.uima.ruta.expression.string.IStringExpression;
 import org.apache.uima.ruta.expression.string.ReferenceStringExpression;
 import org.apache.uima.ruta.expression.string.SimpleStringExpression;
-import org.apache.uima.ruta.expression.string.StringExpression;
 import org.apache.uima.ruta.expression.string.StringFeatureExpression;
 import org.apache.uima.ruta.expression.type.ReferenceTypeExpression;
 import org.apache.uima.ruta.expression.type.SimpleTypeExpression;
@@ -72,7 +74,7 @@ public class ExpressionFactory {
   private ExpressionFactory() {
   }
 
-  public static NumberExpression createIntegerExpression(Token number, Token minus) {
+  public static INumberExpression createIntegerExpression(Token number, Token minus) {
     Integer valueOf = Integer.valueOf(number.getText());
     SimpleNumberExpression simpleNumberExpression = new SimpleNumberExpression(valueOf);
     if (minus != null) {
@@ -82,7 +84,7 @@ public class ExpressionFactory {
     }
   }
 
-  public static NumberExpression createDoubleExpression(Token number, Token minus) {
+  public static INumberExpression createDoubleExpression(Token number, Token minus) {
     Double valueOf = Double.valueOf(number.getText());
     SimpleNumberExpression simpleNumberExpression = new SimpleNumberExpression(valueOf);
     if (minus != null) {
@@ -92,7 +94,7 @@ public class ExpressionFactory {
     }
   }
 
-  public static NumberExpression createReferenceNumberExpression(Token var, Token minus) {
+  public static INumberExpression createReferenceNumberExpression(Token var, Token minus) {
     ReferenceNumberExpression simpleNumberExpression = new ReferenceNumberExpression(var.getText());
     if (minus != null) {
       return new NegativeNumberExpression(simpleNumberExpression);
@@ -101,7 +103,7 @@ public class ExpressionFactory {
     }
   }
 
-  public static NumberExpression createComposedNumberExpression(List<NumberExpression> expressions,
+  public static INumberExpression createComposedNumberExpression(List<INumberExpression> expressions,
           List<Token> opTokens) {
     List<String> ops = new ArrayList<String>();
     for (Token token : opTokens) {
@@ -110,39 +112,39 @@ public class ExpressionFactory {
     return new ComposedNumberExpression(expressions, ops);
   }
 
-  public static NumberExpression createComposedNumberExpression(NumberExpression expression,
+  public static INumberExpression createComposedNumberExpression(INumberExpression expression,
           Token opToken) {
     List<String> ops = new ArrayList<String>();
-    List<NumberExpression> exprList = new ArrayList<NumberExpression>();
+    List<INumberExpression> exprList = new ArrayList<INumberExpression>();
     ops.add(opToken.getText());
     exprList.add(expression);
     return new ComposedNumberExpression(exprList, ops);
   }
 
-  public static StringExpression createSimpleStringExpression(Token token) {
+  public static AbstractStringExpression createSimpleStringExpression(Token token) {
     String text = token.getText();
     String substring = text.substring(1, text.length() - 1);
     return new SimpleStringExpression(substring);
   }
 
-  public static StringExpression createComposedStringExpression(List<StringExpression> expressions) {
+  public static IStringExpression createComposedStringExpression(List<IStringExpression> expressions) {
     return new ComposedStringExpression(expressions);
   }
 
-  public static StringExpression createReferenceStringExpression(Token var) {
+  public static AbstractStringExpression createReferenceStringExpression(Token var) {
     return new ReferenceStringExpression(var.getText());
   }
 
-  public static BooleanExpression createBooleanNumberExpression(NumberExpression e1, Token op,
-          NumberExpression e2) {
+  public static IBooleanExpression createBooleanNumberExpression(INumberExpression e1, Token op,
+          INumberExpression e2) {
     return new BooleanNumberExpression(e1, op.getText(), e2);
   }
 
-  public static BooleanExpression createSimpleBooleanExpression(Token v) {
+  public static IBooleanExpression createSimpleBooleanExpression(Token v) {
     return new SimpleBooleanExpression(Boolean.valueOf(v.getText()));
   }
 
-  public static BooleanExpression createReferenceBooleanExpression(Token id) {
+  public static IBooleanExpression createReferenceBooleanExpression(Token id) {
     return new ReferenceBooleanExpression(id.getText());
   }
 
@@ -160,8 +162,8 @@ public class ExpressionFactory {
     return new SimpleTypeExpression(typeString);
   }
 
-  public static BooleanExpression createBooleanFunction(Token op, BooleanExpression e1,
-          BooleanExpression e2) {
+  public static IBooleanExpression createBooleanFunction(Token op, IBooleanExpression e1,
+          IBooleanExpression e2) {
     return new SimpleBooleanFunction(op.getText(), e1, e2);
   }
 
@@ -181,7 +183,7 @@ public class ExpressionFactory {
     return new LiteralWordTableExpression(path.getText());
   }
 
-  public static BooleanExpression createBooleanTypeExpression(TypeExpression e1, Token op,
+  public static IBooleanExpression createBooleanTypeExpression(TypeExpression e1, Token op,
           TypeExpression e2) {
     return new BooleanTypeExpression(e1, op.getText(), e2);
   }
@@ -210,11 +212,11 @@ public class ExpressionFactory {
     return new ReferenceNumberListExpression(var.getText());
   }
 
-  public static BooleanListExpression createBooleanListExpression(List<BooleanExpression> list) {
+  public static BooleanListExpression createBooleanListExpression(List<IBooleanExpression> list) {
     return new SimpleBooleanListExpression(list);
   }
 
-  public static NumberListExpression createNumberListExpression(List<NumberExpression> list) {
+  public static NumberListExpression createNumberListExpression(List<INumberExpression> list) {
     return new SimpleNumberListExpression(list);
   }
 
@@ -222,7 +224,7 @@ public class ExpressionFactory {
     return new SimpleTypeListExpression(list);
   }
 
-  public static StringListExpression createStringListExpression(List<StringExpression> list) {
+  public static StringListExpression createStringListExpression(List<IStringExpression> list) {
     return new SimpleStringListExpression(list);
   }
 
@@ -236,12 +238,12 @@ public class ExpressionFactory {
   }
 
   public static FeatureMatchExpression createFeatureMatchExpression(FeatureExpression f, Token op,
-          RutaExpression arg, RutaBlock env) {
+          IRutaExpression arg, RutaBlock env) {
     return new FeatureMatchExpression(f, op.getText(), arg);
   }
 
   public static MatchReference createMatchReference(Token refToken, Token opToken,
-          RutaExpression arg) {
+          IRutaExpression arg) {
     String match = refToken.getText();
     String op = null;
     if (opToken != null) {
@@ -250,16 +252,20 @@ public class ExpressionFactory {
     return new MatchReference(match, op, arg);
   }
 
-  public static NumberExpression createNumberFeatureExpression(FeatureExpression fe) {
+  public static INumberExpression createNumberFeatureExpression(FeatureExpression fe) {
     return new NumberFeatureExpression(fe);
   }
 
-  public static StringExpression createStringFeatureExpression(FeatureExpression fe) {
+  public static AbstractStringExpression createStringFeatureExpression(FeatureExpression fe) {
     return new StringFeatureExpression(fe);
   }
 
-  public static BooleanExpression createBooleanFeatureExpression(FeatureExpression fe) {
+  public static IBooleanExpression createBooleanFeatureExpression(FeatureExpression fe) {
     return new BooleanFeatureExpression(fe);
   }
 
+  public static GenericFeatureExpression createGenericFeatureExpression(FeatureExpression fe) {
+    return new GenericFeatureExpression(fe);
+  }
+
 }

Added: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/IRutaExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/IRutaExpression.java?rev=1548429&view=auto
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/IRutaExpression.java (added)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/IRutaExpression.java Fri Dec  6 08:41:07 2013
@@ -0,0 +1,5 @@
+package org.apache.uima.ruta.expression;
+
+public interface IRutaExpression {
+
+}

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

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/MatchReference.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/MatchReference.java?rev=1548429&r1=1548428&r2=1548429&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/MatchReference.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/MatchReference.java Fri Dec  6 08:41:07 2013
@@ -38,13 +38,13 @@ public class MatchReference extends Ruta
 
   private String op;
 
-  private RutaExpression arg;
+  private IRutaExpression arg;
 
   private TypeExpression typeExpression;
 
   private FeatureExpression featureExpression;
 
-  public MatchReference(String match, String op, RutaExpression arg) {
+  public MatchReference(String match, String op, IRutaExpression arg) {
     super();
     this.match = match;
     this.op = op;
@@ -114,7 +114,7 @@ public class MatchReference extends Ruta
     return op;
   }
 
-  public RutaExpression getArg() {
+  public IRutaExpression getArg() {
     return arg;
   }
 

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/RutaExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/RutaExpression.java?rev=1548429&r1=1548428&r2=1548429&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/RutaExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/RutaExpression.java Fri Dec  6 08:41:07 2013
@@ -31,7 +31,7 @@ import org.apache.uima.cas.text.Annotati
 import org.apache.uima.ruta.RutaElement;
 import org.apache.uima.ruta.RutaStream;
 
-public class RutaExpression extends RutaElement {
+public class RutaExpression extends RutaElement implements IRutaExpression {
 
   protected List<AnnotationFS> getTargetAnnotation(AnnotationFS annotation, Type type,
           RutaStream stream) {

Copied: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/AbstractBooleanExpression.java (from r1545591, uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanExpression.java)
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/AbstractBooleanExpression.java?p2=uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/AbstractBooleanExpression.java&p1=uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanExpression.java&r1=1545591&r2=1548429&rev=1548429&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/AbstractBooleanExpression.java Fri Dec  6 08:41:07 2013
@@ -24,11 +24,11 @@ import java.util.List;
 import org.apache.uima.cas.text.AnnotationFS;
 import org.apache.uima.ruta.RutaBlock;
 import org.apache.uima.ruta.RutaStream;
-import org.apache.uima.ruta.expression.string.StringExpression;
+import org.apache.uima.ruta.expression.string.AbstractStringExpression;
 import org.apache.uima.ruta.rule.RuleElement;
 import org.apache.uima.ruta.rule.RuleMatch;
 
-public abstract class BooleanExpression extends StringExpression {
+abstract class AbstractBooleanExpression extends AbstractStringExpression implements IBooleanExpression {
 
   public boolean getBooleanValue(RutaBlock parent, RuleMatch match, RuleElement element,
           RutaStream stream) {

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanFeatureExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanFeatureExpression.java?rev=1548429&r1=1548428&r2=1548429&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanFeatureExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanFeatureExpression.java Fri Dec  6 08:41:07 2013
@@ -29,7 +29,7 @@ import org.apache.uima.ruta.RutaBlock;
 import org.apache.uima.ruta.RutaStream;
 import org.apache.uima.ruta.expression.feature.FeatureExpression;
 
-public class BooleanFeatureExpression extends BooleanExpression {
+public class BooleanFeatureExpression extends AbstractBooleanExpression {
 
   private FeatureExpression fe;
 

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanFunctionExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanFunctionExpression.java?rev=1548429&r1=1548428&r2=1548429&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanFunctionExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanFunctionExpression.java Fri Dec  6 08:41:07 2013
@@ -19,6 +19,6 @@
 
 package org.apache.uima.ruta.expression.bool;
 
-public abstract class BooleanFunctionExpression extends BooleanExpression {
+public abstract class BooleanFunctionExpression extends AbstractBooleanExpression {
 
 }

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanNumberExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanNumberExpression.java?rev=1548429&r1=1548428&r2=1548429&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanNumberExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanNumberExpression.java Fri Dec  6 08:41:07 2013
@@ -22,17 +22,17 @@ package org.apache.uima.ruta.expression.
 import org.apache.uima.cas.text.AnnotationFS;
 import org.apache.uima.ruta.RutaBlock;
 import org.apache.uima.ruta.RutaStream;
-import org.apache.uima.ruta.expression.number.NumberExpression;
+import org.apache.uima.ruta.expression.number.INumberExpression;
 
-public class BooleanNumberExpression extends BooleanExpression {
+public class BooleanNumberExpression extends AbstractBooleanExpression {
 
-  private final NumberExpression e1;
+  private final INumberExpression e1;
 
   private final String op;
 
-  private final NumberExpression e2;
+  private final INumberExpression e2;
 
-  public BooleanNumberExpression(NumberExpression e1, String op, NumberExpression e2) {
+  public BooleanNumberExpression(INumberExpression e1, String op, INumberExpression e2) {
     super();
     this.e1 = e1;
     this.op = op;
@@ -63,7 +63,7 @@ public class BooleanNumberExpression ext
     return false;
   }
 
-  public NumberExpression getFristExpression() {
+  public INumberExpression getFristExpression() {
     return e1;
   }
 
@@ -71,7 +71,7 @@ public class BooleanNumberExpression ext
     return op;
   }
 
-  public NumberExpression getSecondExpression() {
+  public INumberExpression getSecondExpression() {
     return e2;
   }
 

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanTypeExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanTypeExpression.java?rev=1548429&r1=1548428&r2=1548429&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanTypeExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanTypeExpression.java Fri Dec  6 08:41:07 2013
@@ -25,7 +25,7 @@ import org.apache.uima.ruta.RutaBlock;
 import org.apache.uima.ruta.RutaStream;
 import org.apache.uima.ruta.expression.type.TypeExpression;
 
-public class BooleanTypeExpression extends BooleanExpression {
+public class BooleanTypeExpression extends AbstractBooleanExpression {
 
   private final TypeExpression e1;
 

Added: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/IBooleanExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/IBooleanExpression.java?rev=1548429&view=auto
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/IBooleanExpression.java (added)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/IBooleanExpression.java Fri Dec  6 08:41:07 2013
@@ -0,0 +1,35 @@
+/*
+ * 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.bool;
+
+import org.apache.uima.cas.text.AnnotationFS;
+import org.apache.uima.ruta.RutaBlock;
+import org.apache.uima.ruta.RutaStream;
+import org.apache.uima.ruta.expression.string.IStringExpression;
+import org.apache.uima.ruta.rule.RuleElement;
+import org.apache.uima.ruta.rule.RuleMatch;
+
+public interface IBooleanExpression extends IStringExpression {
+  
+  boolean getBooleanValue(RutaBlock parent, RuleMatch match, RuleElement element, RutaStream stream);
+
+  boolean getBooleanValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream);
+
+}

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

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/ReferenceBooleanExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/ReferenceBooleanExpression.java?rev=1548429&r1=1548428&r2=1548429&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/ReferenceBooleanExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/ReferenceBooleanExpression.java Fri Dec  6 08:41:07 2013
@@ -23,7 +23,7 @@ import org.apache.uima.cas.text.Annotati
 import org.apache.uima.ruta.RutaBlock;
 import org.apache.uima.ruta.RutaStream;
 
-public class ReferenceBooleanExpression extends BooleanExpression {
+public class ReferenceBooleanExpression extends AbstractBooleanExpression {
 
   private final String var;
 

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/SimpleBooleanExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/SimpleBooleanExpression.java?rev=1548429&r1=1548428&r2=1548429&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/SimpleBooleanExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/SimpleBooleanExpression.java Fri Dec  6 08:41:07 2013
@@ -23,7 +23,7 @@ import org.apache.uima.cas.text.Annotati
 import org.apache.uima.ruta.RutaBlock;
 import org.apache.uima.ruta.RutaStream;
 
-public class SimpleBooleanExpression extends BooleanExpression {
+public class SimpleBooleanExpression extends AbstractBooleanExpression {
 
   private final boolean value;
 

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/SimpleBooleanFunction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/SimpleBooleanFunction.java?rev=1548429&r1=1548428&r2=1548429&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/SimpleBooleanFunction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/SimpleBooleanFunction.java Fri Dec  6 08:41:07 2013
@@ -23,15 +23,15 @@ import org.apache.uima.cas.text.Annotati
 import org.apache.uima.ruta.RutaBlock;
 import org.apache.uima.ruta.RutaStream;
 
-public class SimpleBooleanFunction extends BooleanExpression {
+public class SimpleBooleanFunction extends AbstractBooleanExpression {
 
   private String op;
 
-  private BooleanExpression e1;
+  private IBooleanExpression e1;
 
-  private BooleanExpression e2;
+  private IBooleanExpression e2;
 
-  public SimpleBooleanFunction(String text, BooleanExpression e1, BooleanExpression e2) {
+  public SimpleBooleanFunction(String text, IBooleanExpression e1, IBooleanExpression e2) {
     super();
     this.op = text;
     this.e1 = e1;

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/feature/FeatureMatchExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/feature/FeatureMatchExpression.java?rev=1548429&r1=1548428&r2=1548429&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/feature/FeatureMatchExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/feature/FeatureMatchExpression.java Fri Dec  6 08:41:07 2013
@@ -26,10 +26,11 @@ import org.apache.uima.cas.text.Annotati
 import org.apache.uima.ruta.RutaBlock;
 import org.apache.uima.ruta.RutaStream;
 import org.apache.uima.ruta.UIMAConstants;
+import org.apache.uima.ruta.expression.IRutaExpression;
 import org.apache.uima.ruta.expression.RutaExpression;
-import org.apache.uima.ruta.expression.bool.BooleanExpression;
-import org.apache.uima.ruta.expression.number.NumberExpression;
-import org.apache.uima.ruta.expression.string.StringExpression;
+import org.apache.uima.ruta.expression.bool.IBooleanExpression;
+import org.apache.uima.ruta.expression.number.INumberExpression;
+import org.apache.uima.ruta.expression.string.AbstractStringExpression;
 
 public class FeatureMatchExpression extends SimpleFeatureExpression {
 
@@ -37,17 +38,17 @@ public class FeatureMatchExpression exte
 
   public static final String NOT_EQUAL = "!=";
 
-  private RutaExpression arg;
+  private IRutaExpression arg;
 
   private String op;
 
-  public FeatureMatchExpression(FeatureExpression f, String op, RutaExpression arg) {
+  public FeatureMatchExpression(FeatureExpression f, String op, IRutaExpression arg) {
     super(f.getTypeExpr(), f.getFeatureStringList());
     this.op = op;
     this.arg = arg;
   }
 
-  public RutaExpression getArg() {
+  public IRutaExpression getArg() {
     return arg;
   }
 
@@ -73,37 +74,37 @@ public class FeatureMatchExpression exte
     String rn = feature.getRange().getName();
     if (rn.equals(UIMAConstants.TYPE_BOOLEAN)) {
       Boolean v1 = afs.getBooleanValue(feature);
-      if (arg instanceof BooleanExpression) {
-        BooleanExpression expr = (BooleanExpression) arg;
+      if (arg instanceof IBooleanExpression) {
+        IBooleanExpression expr = (IBooleanExpression) arg;
         Boolean v2 = expr.getBooleanValue(parent, afs, stream);
         return compare(v1, v2);
       }
     } else if (rn.equals(UIMAConstants.TYPE_INTEGER) || rn.equals(UIMAConstants.TYPE_BYTE)
             || rn.equals(UIMAConstants.TYPE_SHORT) || rn.equals(UIMAConstants.TYPE_LONG)) {
       Integer v1 = afs.getIntValue(feature);
-      if (arg instanceof NumberExpression) {
-        NumberExpression expr = (NumberExpression) arg;
+      if (arg instanceof INumberExpression) {
+        INumberExpression expr = (INumberExpression) arg;
         Integer v2 = expr.getIntegerValue(parent, afs, stream);
         return compare(v1, v2);
       }
     } else if (rn.equals(UIMAConstants.TYPE_DOUBLE)) {
       Double v1 = afs.getDoubleValue(feature);
-      if (arg instanceof NumberExpression) {
-        NumberExpression expr = (NumberExpression) arg;
+      if (arg instanceof INumberExpression) {
+        INumberExpression expr = (INumberExpression) arg;
         Double v2 = expr.getDoubleValue(parent, afs, stream);
         return compare(v1, v2);
       }
     } else if (rn.equals(UIMAConstants.TYPE_FLOAT)) {
       Float v1 = afs.getFloatValue(feature);
-      if (arg instanceof NumberExpression) {
-        NumberExpression expr = (NumberExpression) arg;
+      if (arg instanceof INumberExpression) {
+        INumberExpression expr = (INumberExpression) arg;
         Float v2 = expr.getFloatValue(parent, afs, stream);
         return compare(v1, v2);
       }
     } else if (rn.equals(UIMAConstants.TYPE_STRING)) {
       String v1 = afs.getStringValue(feature);
-      if (arg instanceof StringExpression) {
-        StringExpression expr = (StringExpression) arg;
+      if (arg instanceof AbstractStringExpression) {
+        AbstractStringExpression expr = (AbstractStringExpression) arg;
         String v2 = expr.getStringValue(parent, afs, stream);
         return compare(v1, v2);
       }

Added: 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=1548429&view=auto
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/feature/GenericFeatureExpression.java (added)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/feature/GenericFeatureExpression.java Fri Dec  6 08:41:07 2013
@@ -0,0 +1,134 @@
+/*
+ * 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.feature;
+
+import org.apache.uima.cas.text.AnnotationFS;
+import org.apache.uima.ruta.RutaBlock;
+import org.apache.uima.ruta.RutaStream;
+import org.apache.uima.ruta.expression.ExpressionFactory;
+import org.apache.uima.ruta.expression.RutaExpression;
+import org.apache.uima.ruta.expression.bool.IBooleanExpression;
+import org.apache.uima.ruta.expression.number.INumberExpression;
+import org.apache.uima.ruta.expression.string.IStringExpression;
+import org.apache.uima.ruta.rule.RuleElement;
+import org.apache.uima.ruta.rule.RuleMatch;
+
+public class GenericFeatureExpression extends RutaExpression implements INumberExpression, IBooleanExpression, IStringExpression {
+
+  private FeatureExpression featureExpression;
+
+  private INumberExpression numberExpression;
+  
+  private IStringExpression stringExpression;
+  
+  private IBooleanExpression booleanExpression;
+  
+  public GenericFeatureExpression(FeatureExpression fe) {
+    super();
+    this.featureExpression = fe;
+  }
+  
+  
+  public String getStringValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream) {
+    if(stringExpression == null) {
+      stringExpression = ExpressionFactory.createStringFeatureExpression(featureExpression);
+    }
+    return stringExpression.getStringValue(parent, annotation, stream);
+  }
+
+  public String getStringValue(RutaBlock parent, RuleMatch match, RuleElement element,
+          RutaStream stream) {
+    if(stringExpression == null) {
+      stringExpression = ExpressionFactory.createStringFeatureExpression(featureExpression);
+    }
+    return stringExpression.getStringValue(parent, match, element, stream);
+  }
+
+  public boolean getBooleanValue(RutaBlock parent, RuleMatch match, RuleElement element,
+          RutaStream stream) {
+    if(booleanExpression == null) {
+      booleanExpression = ExpressionFactory.createBooleanFeatureExpression(featureExpression);
+    }
+    return booleanExpression.getBooleanValue(parent, match, element, stream);
+  }
+
+  public boolean getBooleanValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream) {
+    if(booleanExpression == null) {
+      booleanExpression = ExpressionFactory.createBooleanFeatureExpression(featureExpression);
+    }
+    return booleanExpression.getBooleanValue(parent, annotation, stream);
+  }
+
+  public int getIntegerValue(RutaBlock parent, RuleMatch match, RuleElement element,
+          RutaStream stream) {
+    if(numberExpression == null) {
+      numberExpression = ExpressionFactory.createNumberFeatureExpression(featureExpression);
+    }
+    return numberExpression.getIntegerValue(parent, match, element, stream);
+  }
+
+  public double getDoubleValue(RutaBlock parent, RuleMatch match, RuleElement element,
+          RutaStream stream) {
+    if(numberExpression == null) {
+      numberExpression = ExpressionFactory.createNumberFeatureExpression(featureExpression);
+    }
+    return numberExpression.getDoubleValue(parent, match, element, stream);
+  }
+
+  public float getFloatValue(RutaBlock parent, RuleMatch match, RuleElement element,
+          RutaStream stream) {
+    if(numberExpression == null) {
+      numberExpression = ExpressionFactory.createNumberFeatureExpression(featureExpression);
+    }
+    return numberExpression.getFloatValue(parent, match, element, stream);
+  }
+
+  public int getIntegerValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream) {
+    if(numberExpression == null) {
+      numberExpression = ExpressionFactory.createNumberFeatureExpression(featureExpression);
+    }
+    return numberExpression.getIntegerValue(parent, annotation, stream);
+  }
+
+  public double getDoubleValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream) {
+    if(numberExpression == null) {
+      numberExpression = ExpressionFactory.createNumberFeatureExpression(featureExpression);
+    }
+    return numberExpression.getIntegerValue(parent, annotation, stream);
+  }
+
+  public float getFloatValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream) {
+    if(numberExpression == null) {
+      numberExpression = ExpressionFactory.createNumberFeatureExpression(featureExpression);
+    }
+    return numberExpression.getIntegerValue(parent, annotation, stream);
+  }
+
+
+  public FeatureExpression getFeatureExpression() {
+    return featureExpression;
+  }
+
+
+  public void setFeatureExpression(FeatureExpression featureExpression) {
+    this.featureExpression = featureExpression;
+  }
+
+}

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

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=1548429&r1=1548428&r2=1548429&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 Fri Dec  6 08:41:07 2013
@@ -24,9 +24,9 @@ import java.util.List;
 import org.apache.uima.cas.text.AnnotationFS;
 import org.apache.uima.ruta.RutaBlock;
 import org.apache.uima.ruta.RutaStream;
-import org.apache.uima.ruta.expression.string.StringExpression;
+import org.apache.uima.ruta.expression.string.AbstractStringExpression;
 
-public abstract class ListExpression<T> extends StringExpression {
+public abstract class ListExpression<T> extends AbstractStringExpression {
 
   public abstract List<T> getList(RutaBlock parent, RutaStream stream);
 

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/ReferenceBooleanListExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/ReferenceBooleanListExpression.java?rev=1548429&r1=1548428&r2=1548429&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/ReferenceBooleanListExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/ReferenceBooleanListExpression.java Fri Dec  6 08:41:07 2013
@@ -24,7 +24,7 @@ import java.util.List;
 
 import org.apache.uima.ruta.RutaBlock;
 import org.apache.uima.ruta.RutaStream;
-import org.apache.uima.ruta.expression.bool.BooleanExpression;
+import org.apache.uima.ruta.expression.bool.IBooleanExpression;
 
 public class ReferenceBooleanListExpression extends BooleanListExpression {
 
@@ -41,8 +41,8 @@ public class ReferenceBooleanListExpress
     List<Object> list = parent.getEnvironment().getVariableValue(var, List.class);
     List<Boolean> result = new ArrayList<Boolean>();
     for (Object each : list) {
-      if (each instanceof BooleanExpression) {
-        result.add(((BooleanExpression) each).getBooleanValue(parent, null, stream));
+      if (each instanceof IBooleanExpression) {
+        result.add(((IBooleanExpression) each).getBooleanValue(parent, null, stream));
       } else if (each instanceof Boolean) {
         result.add((Boolean) each);
       }

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/ReferenceNumberListExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/ReferenceNumberListExpression.java?rev=1548429&r1=1548428&r2=1548429&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/ReferenceNumberListExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/ReferenceNumberListExpression.java Fri Dec  6 08:41:07 2013
@@ -24,7 +24,7 @@ import java.util.List;
 
 import org.apache.uima.ruta.RutaBlock;
 import org.apache.uima.ruta.RutaStream;
-import org.apache.uima.ruta.expression.number.NumberExpression;
+import org.apache.uima.ruta.expression.number.INumberExpression;
 
 public class ReferenceNumberListExpression extends NumberListExpression {
 
@@ -41,8 +41,8 @@ public class ReferenceNumberListExpressi
     List<Object> list = parent.getEnvironment().getVariableValue(var, List.class);
     List<Number> result = new ArrayList<Number>();
     for (Object each : list) {
-      if (each instanceof NumberExpression) {
-        result.add(((NumberExpression) each).getDoubleValue(parent, null, stream));
+      if (each instanceof INumberExpression) {
+        result.add(((INumberExpression) each).getDoubleValue(parent, null, stream));
       } else if (each instanceof Number) {
         result.add((Number) each);
       }

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/ReferenceStringListExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/ReferenceStringListExpression.java?rev=1548429&r1=1548428&r2=1548429&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/ReferenceStringListExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/ReferenceStringListExpression.java Fri Dec  6 08:41:07 2013
@@ -24,7 +24,7 @@ import java.util.List;
 
 import org.apache.uima.ruta.RutaBlock;
 import org.apache.uima.ruta.RutaStream;
-import org.apache.uima.ruta.expression.string.StringExpression;
+import org.apache.uima.ruta.expression.string.AbstractStringExpression;
 
 public class ReferenceStringListExpression extends StringListExpression {
 
@@ -41,8 +41,8 @@ public class ReferenceStringListExpressi
     List<Object> list = parent.getEnvironment().getVariableValue(var, List.class);
     List<String> result = new ArrayList<String>();
     for (Object each : list) {
-      if (each instanceof StringExpression) {
-        result.add(((StringExpression) each).getStringValue(parent, null, stream));
+      if (each instanceof AbstractStringExpression) {
+        result.add(((AbstractStringExpression) each).getStringValue(parent, null, stream));
       } else if (each instanceof String) {
         result.add((String) each);
       }

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/SimpleBooleanListExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/SimpleBooleanListExpression.java?rev=1548429&r1=1548428&r2=1548429&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/SimpleBooleanListExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/SimpleBooleanListExpression.java Fri Dec  6 08:41:07 2013
@@ -24,13 +24,13 @@ import java.util.List;
 
 import org.apache.uima.ruta.RutaBlock;
 import org.apache.uima.ruta.RutaStream;
-import org.apache.uima.ruta.expression.bool.BooleanExpression;
+import org.apache.uima.ruta.expression.bool.IBooleanExpression;
 
 public class SimpleBooleanListExpression extends BooleanListExpression {
 
-  private List<BooleanExpression> list;
+  private List<IBooleanExpression> list;
 
-  public SimpleBooleanListExpression(List<BooleanExpression> list) {
+  public SimpleBooleanListExpression(List<IBooleanExpression> list) {
     super();
     this.list = list;
   }
@@ -38,13 +38,13 @@ public class SimpleBooleanListExpression
   @Override
   public List<Boolean> getList(RutaBlock parent, RutaStream stream) {
     List<Boolean> result = new ArrayList<Boolean>();
-    for (BooleanExpression each : list) {
+    for (IBooleanExpression each : list) {
       result.add(each.getBooleanValue(parent, null, stream));
     }
     return result;
   }
 
-  public List<BooleanExpression> getList() {
+  public List<IBooleanExpression> getList() {
     return list;
   }
 

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/SimpleNumberListExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/SimpleNumberListExpression.java?rev=1548429&r1=1548428&r2=1548429&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/SimpleNumberListExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/SimpleNumberListExpression.java Fri Dec  6 08:41:07 2013
@@ -24,13 +24,13 @@ import java.util.List;
 
 import org.apache.uima.ruta.RutaBlock;
 import org.apache.uima.ruta.RutaStream;
-import org.apache.uima.ruta.expression.number.NumberExpression;
+import org.apache.uima.ruta.expression.number.INumberExpression;
 
 public class SimpleNumberListExpression extends NumberListExpression {
 
-  private List<NumberExpression> list;
+  private List<INumberExpression> list;
 
-  public SimpleNumberListExpression(List<NumberExpression> list) {
+  public SimpleNumberListExpression(List<INumberExpression> list) {
     super();
     this.list = list;
   }
@@ -38,13 +38,13 @@ public class SimpleNumberListExpression 
   @Override
   public List<Number> getList(RutaBlock parent, RutaStream stream) {
     List<Number> result = new ArrayList<Number>();
-    for (NumberExpression each : list) {
+    for (INumberExpression each : list) {
       result.add(each.getDoubleValue(parent, null, stream));
     }
     return result;
   }
 
-  public List<NumberExpression> getList() {
+  public List<INumberExpression> getList() {
     return list;
   }
 }

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/SimpleStringListExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/SimpleStringListExpression.java?rev=1548429&r1=1548428&r2=1548429&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/SimpleStringListExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/SimpleStringListExpression.java Fri Dec  6 08:41:07 2013
@@ -24,13 +24,13 @@ import java.util.List;
 
 import org.apache.uima.ruta.RutaBlock;
 import org.apache.uima.ruta.RutaStream;
-import org.apache.uima.ruta.expression.string.StringExpression;
+import org.apache.uima.ruta.expression.string.IStringExpression;
 
 public class SimpleStringListExpression extends StringListExpression {
 
-  private List<StringExpression> list;
+  private List<IStringExpression> list;
 
-  public SimpleStringListExpression(List<StringExpression> list) {
+  public SimpleStringListExpression(List<IStringExpression> list) {
     super();
     this.list = list;
   }
@@ -38,13 +38,13 @@ public class SimpleStringListExpression 
   @Override
   public List<String> getList(RutaBlock parent, RutaStream stream) {
     List<String> result = new ArrayList<String>();
-    for (StringExpression each : list) {
+    for (IStringExpression each : list) {
       result.add(each.getStringValue(parent, null, stream));
     }
     return result;
   }
 
-  public List<StringExpression> getList() {
+  public List<IStringExpression> getList() {
     return list;
   }
 }

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/AbstractNumberExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/AbstractNumberExpression.java?rev=1548429&r1=1548428&r2=1548429&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/AbstractNumberExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/AbstractNumberExpression.java Fri Dec  6 08:41:07 2013
@@ -19,8 +19,50 @@
 
 package org.apache.uima.ruta.expression.number;
 
-public abstract class AbstractNumberExpression extends NumberExpression {
+import java.util.List;
 
+import org.apache.uima.cas.text.AnnotationFS;
+import org.apache.uima.ruta.RutaBlock;
+import org.apache.uima.ruta.RutaStream;
+import org.apache.uima.ruta.expression.string.AbstractStringExpression;
+import org.apache.uima.ruta.rule.RuleElement;
+import org.apache.uima.ruta.rule.RuleMatch;
+
+public abstract class AbstractNumberExpression extends AbstractStringExpression implements INumberExpression {
+
+  public int getIntegerValue(RutaBlock parent, RuleMatch match, RuleElement element,
+          RutaStream stream) {
+    List<AnnotationFS> matchedAnnotationsOf = match.getMatchedAnnotationsOf(element);
+    // TODO: do we need to select the correct annotation?
+    AnnotationFS annotation = null;
+    if (!matchedAnnotationsOf.isEmpty()) {
+      annotation = matchedAnnotationsOf.get(0);
+    }
+    return getIntegerValue(parent, annotation, stream);
+  }
+
+  public double getDoubleValue(RutaBlock parent, RuleMatch match, RuleElement element,
+          RutaStream stream) {
+    List<AnnotationFS> matchedAnnotationsOf = match.getMatchedAnnotationsOf(element);
+    // TODO: do we need to select the correct annotation?
+    AnnotationFS annotation = null;
+    if (!matchedAnnotationsOf.isEmpty()) {
+      annotation = matchedAnnotationsOf.get(0);
+    }
+    return getDoubleValue(parent, annotation, stream);
+  }
+
+  public float getFloatValue(RutaBlock parent, RuleMatch match, RuleElement element,
+          RutaStream stream) {
+    List<AnnotationFS> matchedAnnotationsOf = match.getMatchedAnnotationsOf(element);
+    // TODO: do we need to select the correct annotation?
+    AnnotationFS annotation = null;
+    if (!matchedAnnotationsOf.isEmpty()) {
+      annotation = matchedAnnotationsOf.get(0);
+    }
+    return getFloatValue(parent, annotation, stream);
+  }
+  
   protected double calculate(double t1, double t2, String op) {
     if ("+".equals(op)) {
       return t1 + t2;

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/ComposedNumberExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/ComposedNumberExpression.java?rev=1548429&r1=1548428&r2=1548429&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/ComposedNumberExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/ComposedNumberExpression.java Fri Dec  6 08:41:07 2013
@@ -27,19 +27,18 @@ import org.apache.uima.ruta.RutaStream;
 
 public class ComposedNumberExpression extends AbstractNumberExpression {
 
-  private final List<NumberExpression> expressions;
+  private final List<INumberExpression> expressions;
 
   private final List<String> ops;
 
-  public ComposedNumberExpression(List<NumberExpression> expressions, List<String> ops) {
+  public ComposedNumberExpression(List<INumberExpression> expressions, List<String> ops) {
     super();
     this.expressions = expressions;
     this.ops = ops;
   }
 
-  @Override
   public double getDoubleValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream) {
-    NumberExpression numberExpression = getExpressions().get(0);
+    INumberExpression numberExpression = getExpressions().get(0);
     if (numberExpression == null) {
       return 0;
     }
@@ -54,9 +53,8 @@ public class ComposedNumberExpression ex
     return result;
   }
 
-  @Override
   public float getFloatValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream) {
-    NumberExpression numberExpression = getExpressions().get(0);
+    INumberExpression numberExpression = getExpressions().get(0);
     if (numberExpression == null) {
       return 0;
     }
@@ -71,7 +69,6 @@ public class ComposedNumberExpression ex
     return result;
   }
 
-  @Override
   public int getIntegerValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream) {
     int result = getExpressions().get(0).getIntegerValue(parent, annotation, stream);
     for (int i = 0; i < getOperators().size(); i++) {
@@ -89,7 +86,7 @@ public class ComposedNumberExpression ex
     return "" + getDoubleValue(parent, null, stream);
   }
 
-  public List<NumberExpression> getExpressions() {
+  public List<INumberExpression> getExpressions() {
     return expressions;
   }
 

Added: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/INumberExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/INumberExpression.java?rev=1548429&view=auto
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/INumberExpression.java (added)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/INumberExpression.java Fri Dec  6 08:41:07 2013
@@ -0,0 +1,43 @@
+/*
+ * 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.number;
+
+import org.apache.uima.cas.text.AnnotationFS;
+import org.apache.uima.ruta.RutaBlock;
+import org.apache.uima.ruta.RutaStream;
+import org.apache.uima.ruta.expression.string.IStringExpression;
+import org.apache.uima.ruta.rule.RuleElement;
+import org.apache.uima.ruta.rule.RuleMatch;
+
+public interface INumberExpression extends IStringExpression {
+
+  int getIntegerValue(RutaBlock parent, RuleMatch match, RuleElement element, RutaStream stream);
+
+  double getDoubleValue(RutaBlock parent, RuleMatch match, RuleElement element, RutaStream stream);
+
+  float getFloatValue(RutaBlock parent, RuleMatch match, RuleElement element, RutaStream stream);
+
+  int getIntegerValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream);
+
+  double getDoubleValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream);
+
+  float getFloatValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream);
+
+}

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