Author: pkluegl
Date: Fri Aug  7 08:48:08 2015
New Revision: 1694632

URL: http://svn.apache.org/r1694632
Log:
no jira - avoid some exception for special cases of flawed feature matches

Modified:
    
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/feature/FeatureMatchExpression.java
    
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/feature/SimpleFeatureExpression.java

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=1694632&r1=1694631&r2=1694632&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 Aug  7 08:48:08 2015
@@ -128,11 +128,12 @@ public class FeatureMatchExpression exte
         String v2 = expr.getStringValue(parent, afs, stream);
         return compare(v1, v2);
       }
-    } else if(!feature.getRange().isPrimitive() && getArg() instanceof 
FeatureExpression) {
+    } else if (!feature.getRange().isPrimitive() && getArg() instanceof 
FeatureExpression) {
       FeatureExpression fe = (FeatureExpression) getArg();
       List<AnnotationFS> list = new ArrayList<AnnotationFS>(1);
       list.add(afs);
-      Collection<AnnotationFS> featureAnnotations = 
fe.getFeatureAnnotations(list, stream, parent, false);
+      Collection<AnnotationFS> featureAnnotations = 
fe.getFeatureAnnotations(list, stream, parent,
+              false);
       return compare(afs.getFeatureValue(feature), featureAnnotations);
     }
     return false;
@@ -140,23 +141,30 @@ public class FeatureMatchExpression exte
 
   private boolean compare(Object v1, Object v2) {
     if (v1 == null || v2 == null) {
-      if(v1 == null && v2 == null) {
-        if(getOp().equals("==")) {
+      if (v1 == null && v2 == null) {
+        if (getOp().equals("==")) {
           return true;
-        } else if (getOp().equals("!=")){
+        } else if (getOp().equals("!=")) {
           return false;
         }
       } else {
-        if(getOp().equals("==")) {
+        if (getOp().equals("==")) {
           return false;
-        } else if (getOp().equals("!=")){
+        } else if (getOp().equals("!=")) {
           return true;
         }
       }
     } else if (v1 instanceof Number && v2 instanceof Number) {
       Number n1 = (Number) v1;
       Number n2 = (Number) v2;
-      int compareTo = new BigDecimal(n1.toString()).compareTo(new 
BigDecimal(n2.toString()));
+      int compareTo = 0;
+      try {
+        // TODO can throw exception in rule inference!!
+        // TODO replace by something stable and correct
+        compareTo = new BigDecimal(n1.toString()).compareTo(new 
BigDecimal(n2.toString()));
+      } catch (Exception e) {
+        // TODO: handle exception
+      }
       if (getOp().equals("==")) {
         return compareTo == 0;
       } else if (getOp().equals("!=")) {

Modified: 
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/feature/SimpleFeatureExpression.java
URL: 
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/feature/SimpleFeatureExpression.java?rev=1694632&r1=1694631&r2=1694632&view=diff
==============================================================================
--- 
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/feature/SimpleFeatureExpression.java
 (original)
+++ 
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/feature/SimpleFeatureExpression.java
 Fri Aug  7 08:48:08 2015
@@ -62,7 +62,7 @@ public class SimpleFeatureExpression ext
   @Override
   public Feature getFeature(RutaBlock parent) {
     List<Feature> features = getFeatures(parent);
-    if (!features.isEmpty()) {
+    if (features != null && !features.isEmpty()) {
       return features.get(features.size() - 1);
     } else {
       return null;
@@ -131,6 +131,9 @@ public class SimpleFeatureExpression ext
     for (AnnotationFS eachBase : annotations) {
       AnnotationFS afs = eachBase;
       for (Feature feature : features) {
+        if (afs == null) {
+          break;
+        }
         if (feature == null || feature.getRange().isPrimitive()) {
           // feature == null -> this is the coveredText "feature"
           if (this instanceof FeatureMatchExpression) {


Reply via email to