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) {