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 2018/12/21 15:49:35 UTC
svn commit: r1849485 - in /uima/ruta/trunk/ruta-core/src:
main/java/org/apache/uima/ruta/ main/java/org/apache/uima/ruta/action/
main/java/org/apache/uima/ruta/condition/
main/java/org/apache/uima/ruta/expression/type/
main/java/org/apache/uima/ruta/ru...
Author: pkluegl
Date: Fri Dec 21 15:49:34 2018
New Revision: 1849485
URL: http://svn.apache.org/viewvc?rev=1849485&view=rev
Log:
UIMA-5480: types may be null
Modified:
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaStream.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/AbstractMarkAction.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/AddFilterTypeAction.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/AddRetainTypeAction.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/ConfigureAction.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/CreateAction.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/FillAction.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/FilterTypeAction.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/GatherAction.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/GetFeatureAction.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkAction.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkOnceAction.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkTableAction.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/RemoveFilterTypeAction.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/RemoveRetainTypeAction.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/ShiftAction.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/SplitAction.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/TransferAction.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/TrieAction.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/TrimAction.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/UnmarkAction.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/UnmarkAllAction.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/AfterCondition.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/BeforeCondition.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ContainsCondition.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ContextCountCondition.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/CountCondition.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/CurrentCountCondition.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/EndsWithCondition.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ImplicitCondition.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/IsCondition.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/LastCondition.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/NearCondition.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/PartOfCondition.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/PartOfNeqCondition.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/PositionCondition.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/StartsWithCondition.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/TotalCountCondition.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/VoteCondition.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/type/TypeVariableExpression.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaAnnotationTypeMatcher.java
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/engine/ParamVarTest.java
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java?rev=1849485&r1=1849484&r2=1849485&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java Fri Dec 21 15:49:34 2018
@@ -760,11 +760,7 @@ public class RutaEnvironment {
} else if (Boolean.class.equals(type)) {
return false;
} else if (Type.class.equals(type)) {
- if (cas == null) {
- return annotationTypeDummy;
- } else {
- return cas.getAnnotationType();
- }
+ return null;
} else if (List.class.equals(type)) {
return new ArrayList<Object>();
}
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaStream.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaStream.java?rev=1849485&r1=1849484&r2=1849485&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaStream.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaStream.java Fri Dec 21 15:49:34 2018
@@ -1240,7 +1240,7 @@ public class RutaStream extends FSIterat
public List<AnnotationFS> getBestGuessedAnnotationsAt(AnnotationFS window, Type type) {
List<AnnotationFS> result = new ArrayList<AnnotationFS>();
- if (window == null) {
+ if (window == null || type == null) {
return result;
}
TypeSystem typeSystem = getCas().getTypeSystem();
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/AbstractMarkAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/AbstractMarkAction.java?rev=1849485&r1=1849484&r2=1849485&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/AbstractMarkAction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/AbstractMarkAction.java Fri Dec 21 15:49:34 2018
@@ -40,6 +40,10 @@ public abstract class AbstractMarkAction
protected Annotation createAnnotation(AnnotationFS annotation, MatchContext context,
RutaStream stream) {
Type t = type.getType(context, stream);
+ if (t == null) {
+ return null;
+ }
+
AnnotationFS newAnnotationFS = stream.getCas().createAnnotation(t, annotation.getBegin(),
annotation.getEnd());
Annotation newAnnotation = null;
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/AddFilterTypeAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/AddFilterTypeAction.java?rev=1849485&r1=1849484&r2=1849485&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/AddFilterTypeAction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/AddFilterTypeAction.java Fri Dec 21 15:49:34 2018
@@ -39,7 +39,10 @@ public class AddFilterTypeAction extends
public void execute(MatchContext context, RutaStream stream, InferenceCrowd crowd) {
List<Type> types = new ArrayList<Type>();
for (ITypeExpression each : list) {
- types.add(each.getType(context, stream));
+ Type type = each.getType(context, stream);
+ if (type != null) {
+ types.add(type);
+ }
}
stream.addFilterTypes(types);
}
@@ -50,5 +53,4 @@ public class AddFilterTypeAction extends
private List<ITypeExpression> list;
-
}
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/AddRetainTypeAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/AddRetainTypeAction.java?rev=1849485&r1=1849484&r2=1849485&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/AddRetainTypeAction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/AddRetainTypeAction.java Fri Dec 21 15:49:34 2018
@@ -39,7 +39,10 @@ public class AddRetainTypeAction extends
public void execute(MatchContext context, RutaStream stream, InferenceCrowd crowd) {
List<Type> types = new ArrayList<Type>();
for (ITypeExpression each : list) {
- types.add(each.getType(context, stream));
+ Type type = each.getType(context, stream);
+ if (type != null) {
+ types.add(type);
+ }
}
stream.addRetainTypes(types);
}
@@ -47,6 +50,6 @@ public class AddRetainTypeAction extends
public List<ITypeExpression> getList() {
return list;
}
-
+
private List<ITypeExpression> list;
}
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/ConfigureAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/ConfigureAction.java?rev=1849485&r1=1849484&r2=1849485&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/ConfigureAction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/ConfigureAction.java Fri Dec 21 15:49:34 2018
@@ -64,8 +64,9 @@ public class ConfigureAction extends Abs
RutaBlock parent = element.getParent();
RutaModule thisScript = parent.getScript();
AnalysisEngine targetEngine = thisScript.getEngine(namespace);
- if(targetEngine == null) {
- throw new IllegalArgumentException("Analysis Engine with name '"+namespace+"' is unknown in script " + context.getParent().getName() + ".");
+ if (targetEngine == null) {
+ throw new IllegalArgumentException("Analysis Engine with name '" + namespace
+ + "' is unknown in script " + context.getParent().getName() + ".");
}
ConfigurationParameterDeclarations configurationParameterDeclarations = targetEngine
.getAnalysisEngineMetaData().getConfigurationParameterDeclarations();
@@ -102,7 +103,9 @@ public class ConfigureAction extends Abs
} else if (value instanceof ITypeExpression) {
ITypeExpression te = (ITypeExpression) value;
Type t = te.getType(context, stream);
- targetEngine.setConfigParameterValue(stringValue, t.getName());
+ if (t != null) {
+ targetEngine.setConfigParameterValue(stringValue, t.getName());
+ }
}
}
} else if (type.equals("Float")) {
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/CreateAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/CreateAction.java?rev=1849485&r1=1849484&r2=1849485&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/CreateAction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/CreateAction.java Fri Dec 21 15:49:34 2018
@@ -65,15 +65,17 @@ public class CreateAction extends Abstra
return;
}
Type type = structureType.getType(context, stream);
- AnnotationFS annotation = stream.getCas().createAnnotation(type, 0, 0);
- if (annotation instanceof Annotation) {
- Annotation a = (Annotation) annotation;
- a.setBegin(matchedAnnotation.getBegin());
- a.setEnd(matchedAnnotation.getEnd());
- context.setAnnotation(matchedAnnotation);
- stream.assignFeatureValues(annotation, features, context);
- stream.addAnnotation(a, true, match);
- addAnnotationToLabel(a, context);
+ if (type != null) {
+ AnnotationFS annotation = stream.getCas().createAnnotation(type, 0, 0);
+ if (annotation instanceof Annotation) {
+ Annotation a = (Annotation) annotation;
+ a.setBegin(matchedAnnotation.getBegin());
+ a.setEnd(matchedAnnotation.getEnd());
+ context.setAnnotation(matchedAnnotation);
+ stream.assignFeatureValues(annotation, features, context);
+ stream.addAnnotation(a, true, match);
+ addAnnotationToLabel(a, context);
+ }
}
}
}
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/FillAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/FillAction.java?rev=1849485&r1=1849484&r2=1849485&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/FillAction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/FillAction.java Fri Dec 21 15:49:34 2018
@@ -50,12 +50,16 @@ public class FillAction extends Abstract
public void execute(MatchContext context, RutaStream stream, InferenceCrowd crowd) {
RuleMatch match = context.getRuleMatch();
RuleElement element = context.getElement();
+ Type type = getStructureType().getType(context, stream);
+ if (type == null) {
+ return;
+ }
+
List<AnnotationFS> matchedAnnotations = match.getMatchedAnnotationsOfElement(element);
for (AnnotationFS matchedAnnotation : matchedAnnotations) {
if (matchedAnnotation == null) {
return;
}
- Type type = getStructureType().getType(context, stream);
List<AnnotationFS> list = stream.getAnnotationsInWindow(matchedAnnotation, type);
if (list.isEmpty()) {
list = stream.getOverappingAnnotations(matchedAnnotation, type);
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/FilterTypeAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/FilterTypeAction.java?rev=1849485&r1=1849484&r2=1849485&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/FilterTypeAction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/FilterTypeAction.java Fri Dec 21 15:49:34 2018
@@ -30,7 +30,6 @@ import org.apache.uima.ruta.visitor.Infe
public class FilterTypeAction extends AbstractRutaAction {
-
public FilterTypeAction(List<ITypeExpression> list) {
super();
this.list = list;
@@ -41,7 +40,10 @@ public class FilterTypeAction extends Ab
context.getElement();
List<Type> types = new ArrayList<Type>();
for (ITypeExpression each : list) {
- types.add(each.getType(context, stream));
+ Type type = each.getType(context, stream);
+ if (type != null) {
+ types.add(type);
+ }
}
stream.filterTypes(types);
}
@@ -49,7 +51,7 @@ public class FilterTypeAction extends Ab
public List<ITypeExpression> getList() {
return list;
}
-
+
private List<ITypeExpression> list;
}
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/GatherAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/GatherAction.java?rev=1849485&r1=1849484&r2=1849485&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/GatherAction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/GatherAction.java Fri Dec 21 15:49:34 2018
@@ -71,6 +71,12 @@ public class GatherAction extends Abstra
public void execute(MatchContext context, RutaStream stream, InferenceCrowd crowd) {
RuleMatch match = context.getRuleMatch();
RuleElement element = context.getElement();
+ Type type = structureType.getType(context, stream);
+
+ if (type == null) {
+ return;
+ }
+
List<Integer> indexList = getIndexList(indexes, context, stream);
List<AnnotationFS> matchedAnnotations = match.getMatchedAnnotations(indexList,
element.getContainer());
@@ -78,7 +84,6 @@ public class GatherAction extends Abstra
if (matchedAnnotation == null) {
return;
}
- Type type = structureType.getType(context, stream);
FeatureStructure newFS = stream.getCas().createFS(type);
if (newFS instanceof Annotation) {
Annotation a = (Annotation) newFS;
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/GetFeatureAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/GetFeatureAction.java?rev=1849485&r1=1849484&r2=1849485&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/GetFeatureAction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/GetFeatureAction.java Fri Dec 21 15:49:34 2018
@@ -59,6 +59,10 @@ public class GetFeatureAction extends Ab
if (element instanceof RutaRuleElement) {
type = ((RutaRuleElement) element).getMatcher().getType(parent, stream);
}
+ if (type == null) {
+ return;
+ }
+
String stringValue = featureStringExpression.getStringValue(context, stream);
Feature featureByBaseName = type.getFeatureByBaseName(stringValue);
RutaEnvironment environment = parent.getEnvironment();
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkAction.java?rev=1849485&r1=1849484&r2=1849485&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkAction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkAction.java Fri Dec 21 15:49:34 2018
@@ -20,6 +20,8 @@
package org.apache.uima.ruta.action;
import java.util.List;
+
+import org.apache.uima.cas.Type;
import org.apache.uima.cas.text.AnnotationFS;
import org.apache.uima.fit.util.CasUtil;
import org.apache.uima.jcas.tcas.Annotation;
@@ -38,7 +40,8 @@ public class MarkAction extends Abstract
protected final List<INumberExpression> list;
- public MarkAction(ITypeExpression type, INumberExpression scoreValue, List<INumberExpression> list) {
+ public MarkAction(ITypeExpression type, INumberExpression scoreValue,
+ List<INumberExpression> list) {
super(type);
this.score = scoreValue;
this.list = list;
@@ -67,17 +70,21 @@ public class MarkAction extends Abstract
protected void updateHeuristicAnnotation(MatchContext context, RutaStream stream,
AnnotationFS matchedAnnotation, double deltaScore) {
-
+
Annotation targetAnnotation = null;
- List<AnnotationFS> annotationsInSpan = CasUtil.selectAt(stream.getCas(),
- this.type.getType(context, stream), matchedAnnotation.getBegin(),
- matchedAnnotation.getEnd());
+ Type t = this.type.getType(context, stream);
+
+ if (t == null) {
+ return;
+ }
+ List<AnnotationFS> annotationsInSpan = CasUtil.selectAt(stream.getCas(), t,
+ matchedAnnotation.getBegin(), matchedAnnotation.getEnd());
if (annotationsInSpan.isEmpty()) {
targetAnnotation = this.createAnnotation(matchedAnnotation, context, stream);
} else {
targetAnnotation = (Annotation) annotationsInSpan.get(0);
-
+
}
if (targetAnnotation == null) {
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkOnceAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkOnceAction.java?rev=1849485&r1=1849484&r2=1849485&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkOnceAction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkOnceAction.java Fri Dec 21 15:49:34 2018
@@ -47,6 +47,11 @@ public class MarkOnceAction extends Mark
List<AnnotationFS> matchedAnnotations = match.getMatchedAnnotations(indexList,
element.getContainer());
Type targetType = type.getType(context, stream);
+
+ if (targetType == null) {
+ return;
+ }
+
for (AnnotationFS matchedAnnotation : matchedAnnotations) {
boolean partof = false;
List<RutaBasic> basicsInWindow = stream.getBasicsInWindow(matchedAnnotation);
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkTableAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkTableAction.java?rev=1849485&r1=1849484&r2=1849485&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkTableAction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkTableAction.java Fri Dec 21 15:49:34 2018
@@ -97,6 +97,11 @@ public class MarkTableAction extends Abs
}
int index = indexExpr.getIntegerValue(context, stream);
Type type = typeExpr.getType(context, stream);
+
+ if (type == null) {
+ return;
+ }
+
Map<String, Integer> map = new HashMap<String, Integer>();
for (IStringExpression each : featureMap.keySet()) {
map.put(each.getStringValue(context, stream),
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/RemoveFilterTypeAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/RemoveFilterTypeAction.java?rev=1849485&r1=1849484&r2=1849485&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/RemoveFilterTypeAction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/RemoveFilterTypeAction.java Fri Dec 21 15:49:34 2018
@@ -40,7 +40,10 @@ public class RemoveFilterTypeAction exte
context.getElement();
List<Type> types = new ArrayList<Type>();
for (ITypeExpression each : list) {
- types.add(each.getType(context, stream));
+ Type type = each.getType(context, stream);
+ if (type != null) {
+ types.add(type);
+ }
}
stream.removeFilterTypes(types);
}
@@ -48,7 +51,7 @@ public class RemoveFilterTypeAction exte
public List<ITypeExpression> getList() {
return list;
}
-
+
private List<ITypeExpression> list;
}
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/RemoveRetainTypeAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/RemoveRetainTypeAction.java?rev=1849485&r1=1849484&r2=1849485&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/RemoveRetainTypeAction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/RemoveRetainTypeAction.java Fri Dec 21 15:49:34 2018
@@ -40,7 +40,10 @@ public class RemoveRetainTypeAction exte
context.getElement();
List<Type> types = new ArrayList<Type>();
for (ITypeExpression each : list) {
- types.add(each.getType(context, stream));
+ Type type = each.getType(context, stream);
+ if (type != null) {
+ types.add(type);
+ }
}
stream.removeRetainTypes(types);
}
@@ -48,7 +51,7 @@ public class RemoveRetainTypeAction exte
public List<ITypeExpression> getList() {
return list;
}
-
+
private List<ITypeExpression> list;
}
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/ShiftAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/ShiftAction.java?rev=1849485&r1=1849484&r2=1849485&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/ShiftAction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/ShiftAction.java Fri Dec 21 15:49:34 2018
@@ -53,6 +53,10 @@ public class ShiftAction extends MarkAct
RuleElement element = context.getElement();
Type targetType = type.getType(context, stream);
+ if (targetType == null) {
+ return;
+ }
+
List<Integer> indexList = getIndexList(context, list, stream);
List<AnnotationFS> destinationAnnotationSpans = match.getMatchedAnnotations(indexList,
element.getContainer());
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/SplitAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/SplitAction.java?rev=1849485&r1=1849484&r2=1849485&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/SplitAction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/SplitAction.java Fri Dec 21 15:49:34 2018
@@ -65,6 +65,11 @@ public class SplitAction extends Abstrac
List<AnnotationFS> matchedAnnotationsOf = match.getMatchedAnnotationsOfElement(element);
element.getParent();
Type typeToSplit = splitOnType.getType(context, stream);
+
+ if (typeToSplit == null) {
+ return;
+ }
+
boolean splitOnCompleteAnnotation = complete.getBooleanValue(context, stream);
boolean addToBegin = appendToBegin.getBooleanValue(context, stream);
boolean addToEnd = appendToEnd.getBooleanValue(context, stream);
@@ -81,11 +86,11 @@ public class SplitAction extends Abstrac
if (annotation instanceof Annotation) {
if (splitOnCompleteAnnotation) {
- splitAnnotationOnComplete((Annotation) annotation, typeToSplit, addToBegin, addToEnd,
- match, stream);
+ splitAnnotationOnComplete((Annotation) annotation, typeToSplit, addToBegin, addToEnd, match,
+ stream);
} else {
- splitAnnotationOnBoundary((Annotation) annotation, typeToSplit, addToBegin, addToEnd,
- match, stream);
+ splitAnnotationOnBoundary((Annotation) annotation, typeToSplit, addToBegin, addToEnd, match,
+ stream);
}
}
}
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/TransferAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/TransferAction.java?rev=1849485&r1=1849484&r2=1849485&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/TransferAction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/TransferAction.java Fri Dec 21 15:49:34 2018
@@ -47,6 +47,11 @@ public class TransferAction extends Type
List<List<RuleElementMatch>> list = match.getMatchInfo(element);
CAS cas = stream.getCas();
Type t = type.getType(context, stream);
+
+ if (t == null) {
+ return;
+ }
+
for (List<RuleElementMatch> eachList : list) {
for (RuleElementMatch each : eachList) {
List<AnnotationFS> matched = each.getTextsMatched();
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/TrieAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/TrieAction.java?rev=1849485&r1=1849484&r2=1849485&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/TrieAction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/TrieAction.java Fri Dec 21 15:49:34 2018
@@ -80,7 +80,9 @@ public class TrieAction extends Abstract
IRutaExpression expression = map.get(eachKey);
if (expression instanceof ITypeExpression) {
Type typeValue = ((ITypeExpression) expression).getType(context, stream);
- typeMap.put(stringValue, typeValue);
+ if (typeValue != null) {
+ typeMap.put(stringValue, typeValue);
+ }
} else if (expression instanceof UntypedListExpression) {
List<Object> innerList = ((UntypedListExpression) expression).getList(context, stream);
typeMap.put(stringValue, innerList);
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/TrimAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/TrimAction.java?rev=1849485&r1=1849484&r2=1849485&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/TrimAction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/TrimAction.java Fri Dec 21 15:49:34 2018
@@ -114,7 +114,10 @@ public class TrimAction extends Abstract
List<Type> result = new ArrayList<Type>();
if (types != null) {
for (ITypeExpression each : types) {
- result.add(each.getType(context, stream));
+ Type type = each.getType(context, stream);
+ if (type != null) {
+ result.add(type);
+ }
}
} else if (typeList != null) {
result = typeList.getList(context, stream);
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/UnmarkAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/UnmarkAction.java?rev=1849485&r1=1849484&r2=1849485&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/UnmarkAction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/UnmarkAction.java Fri Dec 21 15:49:34 2018
@@ -82,6 +82,11 @@ public class UnmarkAction extends TypeSe
private void removeTypeBased(MatchContext context, RutaStream stream, RuleMatch match,
RuleElement element, Type t) {
+
+ if (t == null) {
+ return;
+ }
+
boolean allAtAnchor = false;
if (allAnchor != null) {
allAtAnchor = allAnchor.getBooleanValue(context, stream);
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/UnmarkAllAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/UnmarkAllAction.java?rev=1849485&r1=1849484&r2=1849485&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/UnmarkAllAction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/UnmarkAllAction.java Fri Dec 21 15:49:34 2018
@@ -55,6 +55,10 @@ public class UnmarkAllAction extends Typ
retainList = list.getList(context, stream);
}
Type t = type.getType(context, stream);
+ if (t == null) {
+ return;
+ }
+
TypeSystem typeSystem = stream.getCas().getTypeSystem();
List<AnnotationFS> toRemove = new LinkedList<AnnotationFS>();
List<List<RuleElementMatch>> matchInfo = match.getMatchInfo(element);
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/AfterCondition.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/AfterCondition.java?rev=1849485&r1=1849484&r2=1849485&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/AfterCondition.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/AfterCondition.java Fri Dec 21 15:49:34 2018
@@ -62,7 +62,7 @@ public class AfterCondition extends Type
}
private boolean check(AnnotationFS annotation, RutaStream stream, Type t) {
- if (annotation == null) {
+ if (annotation == null || t == null) {
return false;
}
boolean result = false;
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/BeforeCondition.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/BeforeCondition.java?rev=1849485&r1=1849484&r2=1849485&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/BeforeCondition.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/BeforeCondition.java Fri Dec 21 15:49:34 2018
@@ -62,7 +62,7 @@ public class BeforeCondition extends Typ
}
private boolean check(AnnotationFS annotation, RutaStream stream, Type t) {
- if (annotation == null) {
+ if (annotation == null || t == null) {
return false;
}
boolean result = false;
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ContainsCondition.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ContainsCondition.java?rev=1849485&r1=1849484&r2=1849485&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ContainsCondition.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ContainsCondition.java Fri Dec 21 15:49:34 2018
@@ -90,20 +90,20 @@ public class ContainsCondition extends T
int anchorCount = 0;
int totalCount = 0;
- boolean usePredefinedBoundaries = minIntValue == 1 && maxIntValue == Integer.MAX_VALUE ? false : true;
-
+ boolean usePredefinedBoundaries = minIntValue == 1 && maxIntValue == Integer.MAX_VALUE ? false
+ : true;
+
if (type != null) {
- if (annotation != null) {
+ Type t = type.getType(context, stream);
+ if (annotation != null && t != null) {
if (!usePredefinedBoundaries && !usePercentage) {
// shortcut for simple CONTAINS(Type)
- Type t = type.getType(context, stream);
boolean annotationExsits = checkExistingAnnotation(t, annotation, stream);
return new EvaluatedCondition(this, annotationExsits);
} else {
List<RutaBasic> annotations = stream.getBasicsInWindow(annotation);
for (RutaBasic each : annotations) {
totalCount++;
- Type t = type.getType(context, stream);
if (each.beginsWith(t) || stream.getCas().getTypeSystem().subsumes(t, each.getType())) {
Collection<AnnotationFS> beginAnchors = each.getBeginAnchors(t);
anchorCount = incrementAnchorsWithinStrictBoundaries(annotation, anchorCount,
@@ -170,7 +170,7 @@ public class ContainsCondition extends T
}
anchorCount = basicCount;
}
-
+
if (usePercentage) {
double percentValue = 0;
if (totalCount != 0) {
@@ -198,7 +198,7 @@ public class ContainsCondition extends T
private boolean checkExistingAnnotation(Type type, AnnotationFS annotation, RutaStream stream) {
int begin = annotation.getBegin();
int end = annotation.getEnd();
-
+
FSIterator<AnnotationFS> it = stream.getCas().getAnnotationIndex(type).iterator();
it.moveTo(annotation);
if (!it.isValid()) {
@@ -232,7 +232,7 @@ public class ContainsCondition extends T
if (a.getEnd() > end) {
continue;
}
- if(stream.isVisible(a)) {
+ if (stream.isVisible(a)) {
return true;
}
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ContextCountCondition.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ContextCountCondition.java?rev=1849485&r1=1849484&r2=1849485&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ContextCountCondition.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ContextCountCondition.java Fri Dec 21 15:49:34 2018
@@ -57,6 +57,11 @@ public class ContextCountCondition exten
RuleElement element = context.getElement();
Type contextType = type.getType(context, stream);
+
+ if (contextType == null) {
+ return new EvaluatedCondition(this, false);
+ }
+
stream.moveToFirst();
List<AnnotationFS> visibleContexts = new ArrayList<AnnotationFS>();
while (stream.isValid()) {
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=1849485&r1=1849484&r2=1849485&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 21 15:49:34 2018
@@ -62,8 +62,8 @@ public class CountCondition extends Type
this.var = var;
}
- public CountCondition(@SuppressWarnings("rawtypes") ListExpression list, IRutaExpression a, INumberExpression min,
- INumberExpression max, String var) {
+ public CountCondition(@SuppressWarnings("rawtypes") ListExpression list, IRutaExpression a,
+ INumberExpression min, INumberExpression max, String var) {
super((ITypeExpression) null);
this.list = list;
this.arg = a;
@@ -78,8 +78,12 @@ public class CountCondition extends Type
RuleElement element = context.getElement();
if (arg == null) {
- List<AnnotationFS> annotationsInWindow = stream.getAnnotationsInWindow(annotation,
- type.getType(context, stream));
+ Type t = type.getType(context, stream);
+ if (t == null) {
+ return new EvaluatedCondition(this, false);
+ }
+
+ List<AnnotationFS> annotationsInWindow = stream.getAnnotationsInWindow(annotation, t);
int count = annotationsInWindow.size();
if (var != null) {
element.getParent().getEnvironment().setVariableValue(var, count);
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=1849485&r1=1849484&r2=1849485&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 21 15:49:34 2018
@@ -21,6 +21,7 @@ package org.apache.uima.ruta.condition;
import java.util.Iterator;
+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.number.INumberExpression;
@@ -51,10 +52,14 @@ public class CurrentCountCondition exten
AnnotationFS annotation = context.getAnnotation();
RuleElement element = context.getElement();
+ Type t = type.getType(context, stream);
+ if (t == null) {
+ return new EvaluatedCondition(this, false);
+ }
+
int count = 0;
if (annotation != null) {
- Iterator<AnnotationFS> it = stream.getCas().getAnnotationIndex(type.getType(context, stream))
- .iterator();
+ Iterator<AnnotationFS> it = stream.getCas().getAnnotationIndex(t).iterator();
while (it.hasNext()) {
AnnotationFS next = it.next();
if (next.getBegin() < annotation.getBegin()) {
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/EndsWithCondition.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/EndsWithCondition.java?rev=1849485&r1=1849484&r2=1849485&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/EndsWithCondition.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/EndsWithCondition.java Fri Dec 21 15:49:34 2018
@@ -63,7 +63,7 @@ public class EndsWithCondition extends T
}
private boolean check(RutaStream stream, AnnotationFS annotation, Type givenType) {
- if (annotation == null) {
+ if (annotation == null || givenType == null) {
return false;
}
RutaBasic endAnchor = stream.getEndAnchor(annotation.getEnd());
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=1849485&r1=1849484&r2=1849485&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 21 15:49:34 2018
@@ -84,7 +84,7 @@ public class ImplicitCondition extends A
private List<AnnotationFS> getAnnotationsToCheck(AnnotationFS annotation, Type type,
FeatureMatchExpression fme, RutaStream stream) {
- if (annotation == null) {
+ if (annotation == null || type == null) {
return Collections.emptyList();
}
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/IsCondition.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/IsCondition.java?rev=1849485&r1=1849484&r2=1849485&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/IsCondition.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/IsCondition.java Fri Dec 21 15:49:34 2018
@@ -52,14 +52,16 @@ public class IsCondition extends TypeSen
RutaBasic beginAnchor = stream.getBeginAnchor(annotation.getBegin());
if (!isWorkingOnList()) {
- Collection<AnnotationFS> beginAnchors = beginAnchor
- .getBeginAnchors(type.getType(context, stream));
+ Type t = type.getType(context, stream);
boolean result = false;
- if (beginAnchors != null) {
- for (AnnotationFS annotationFS : beginAnchors) {
- result |= check(annotation, annotationFS);
- if (result == true) {
- break;
+ if (t != null) {
+ Collection<AnnotationFS> beginAnchors = beginAnchor.getBeginAnchors(t);
+ if (beginAnchors != null) {
+ for (AnnotationFS annotationFS : beginAnchors) {
+ result |= check(annotation, annotationFS);
+ if (result == true) {
+ break;
+ }
}
}
}
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/LastCondition.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/LastCondition.java?rev=1849485&r1=1849484&r2=1849485&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/LastCondition.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/LastCondition.java Fri Dec 21 15:49:34 2018
@@ -44,6 +44,11 @@ public class LastCondition extends TypeS
RutaBasic endAnchor = stream.getEndAnchor(annotation.getEnd());
Type t = type.getType(context, stream);
+
+ if (t == null) {
+ return new EvaluatedCondition(this, false);
+ }
+
boolean result = endAnchor.beginsWith(t) && endAnchor.endsWith(t);
return new EvaluatedCondition(this, result);
}
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=1849485&r1=1849484&r2=1849485&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 21 15:49:34 2018
@@ -21,6 +21,7 @@ package org.apache.uima.ruta.condition;
import org.apache.uima.cas.FSIterator;
import org.apache.uima.cas.FeatureStructure;
+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.IBooleanExpression;
@@ -56,7 +57,9 @@ public class NearCondition extends TypeS
public EvaluatedCondition eval(MatchContext context, RutaStream stream, InferenceCrowd crowd) {
AnnotationFS annotation = context.getAnnotation();
- if (annotation == null) {
+ Type t = type.getType(context, stream);
+
+ if (annotation == null || t == null) {
return new EvaluatedCondition(this, false);
}
@@ -79,7 +82,7 @@ public class NearCondition extends TypeS
FeatureStructure featureStructure = it.get();
if (featureStructure instanceof RutaBasic) {
RutaBasic each = (RutaBasic) featureStructure;
- if (each.isPartOf(type.getType(context, stream))) {
+ if (each.isPartOf(t)) {
return new EvaluatedCondition(this, true);
}
}
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/PartOfCondition.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/PartOfCondition.java?rev=1849485&r1=1849484&r2=1849485&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/PartOfCondition.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/PartOfCondition.java Fri Dec 21 15:49:34 2018
@@ -65,7 +65,7 @@ public class PartOfCondition extends Typ
}
private boolean check(Type t, AnnotationFS annotation, RuleElement element, RutaStream stream) {
- if (annotation == null) {
+ if (annotation == null || t == null) {
return false;
}
RutaBasic beginAnchor = stream.getBeginAnchor(annotation.getBegin());
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/PartOfNeqCondition.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/PartOfNeqCondition.java?rev=1849485&r1=1849484&r2=1849485&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/PartOfNeqCondition.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/PartOfNeqCondition.java Fri Dec 21 15:49:34 2018
@@ -64,7 +64,7 @@ public class PartOfNeqCondition extends
private boolean check(AnnotationFS annotation, RutaStream stream, Type t) {
- if (annotation == null) {
+ if (annotation == null || t == null) {
return false;
}
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=1849485&r1=1849484&r2=1849485&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 21 15:49:34 2018
@@ -53,12 +53,13 @@ public class PositionCondition extends T
public EvaluatedCondition eval(MatchContext context, RutaStream stream, InferenceCrowd crowd) {
AnnotationFS annotation = context.getAnnotation();
- if (annotation == null) {
+ Type t = type.getType(context, stream);
+
+ if (annotation == null || t == null) {
return new EvaluatedCondition(this, false);
}
RuleElement element = context.getElement();
- Type t = type.getType(context, stream);
RutaBasic beginAnchor = stream.getBeginAnchor(annotation.getBegin());
RutaBasic endAnchor = stream.getEndAnchor(annotation.getEnd());
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/StartsWithCondition.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/StartsWithCondition.java?rev=1849485&r1=1849484&r2=1849485&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/StartsWithCondition.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/StartsWithCondition.java Fri Dec 21 15:49:34 2018
@@ -66,7 +66,7 @@ public class StartsWithCondition extends
private boolean check(AnnotationFS annotation, Type t, RutaStream stream) {
- if (annotation == null) {
+ if (annotation == null || t == null) {
return false;
}
RutaBasic beginAnchor = stream.getBeginAnchor(annotation.getBegin());
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=1849485&r1=1849484&r2=1849485&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 21 15:49:34 2018
@@ -51,6 +51,11 @@ public class TotalCountCondition extends
RuleElement element = context.getElement();
int count = 0;
Type t = type.getType(context, stream);
+
+ if (t == null) {
+ return new EvaluatedCondition(this, false);
+ }
+
AnnotationIndex<Annotation> annotationIndex = stream.getJCas().getAnnotationIndex(t);
count = annotationIndex.size();
if (var != null) {
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/VoteCondition.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/VoteCondition.java?rev=1849485&r1=1849484&r2=1849485&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/VoteCondition.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/VoteCondition.java Fri Dec 21 15:49:34 2018
@@ -47,10 +47,11 @@ public class VoteCondition extends Termi
AnnotationFS annotation = context.getAnnotation();
int count1 = 0;
int count2 = 0;
- if (annotation != null) {
+ Type t1 = type1.getType(context, stream);
+ Type t2 = type2.getType(context, stream);
+
+ if (annotation != null && t1 != null && t2 != null) {
List<RutaBasic> annotations = stream.getBasicsInWindow(annotation);
- Type t1 = type1.getType(context, stream);
- Type t2 = type2.getType(context, stream);
for (RutaBasic each : annotations) {
if (each.beginsWith(t1)) {
count1++;
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/type/TypeVariableExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/type/TypeVariableExpression.java?rev=1849485&r1=1849484&r2=1849485&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/type/TypeVariableExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/type/TypeVariableExpression.java Fri Dec 21 15:49:34 2018
@@ -53,10 +53,6 @@ public class TypeVariableExpression exte
public Type getType(MatchContext context, RutaStream stream) {
RutaBlock parent = context.getParent();
Type type = parent.getEnvironment().getVariableValue(var, Type.class, stream);
- if (type == null) {
- throw new IllegalArgumentException("Not able to resolve type variable: " + var +
- " in script " +context.getParent().getName());
- }
return type;
}
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaAnnotationTypeMatcher.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaAnnotationTypeMatcher.java?rev=1849485&r1=1849484&r2=1849485&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaAnnotationTypeMatcher.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaAnnotationTypeMatcher.java Fri Dec 21 15:49:34 2018
@@ -67,7 +67,9 @@ public class RutaAnnotationTypeMatcher i
} else {
Type type = getType(context.getParent(), stream);
types = new ArrayList<>(1);
- types.add(type);
+ if (type != null) {
+ types.add(type);
+ }
}
result = new ArrayList<>();
for (Type type : types) {
Modified: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/engine/ParamVarTest.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/engine/ParamVarTest.java?rev=1849485&r1=1849484&r2=1849485&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/engine/ParamVarTest.java (original)
+++ uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/engine/ParamVarTest.java Fri Dec 21 15:49:34 2018
@@ -92,10 +92,10 @@ public class ParamVarTest {
Ruta.apply(cas, script, params);
RutaTestUtils.assertAnnotationsEquals(cas, 1, 2, "Some", "text");
-
+
cas.release();
}
-
+
@Test(expected = AnalysisEngineProcessException.class)
public void testWithStrictImport() throws Exception {
String document = "Some text.";
@@ -109,15 +109,44 @@ public class ParamVarTest {
Map<String, Object> params = new HashMap<String, Object>();
params.put(RutaEngine.PARAM_STRICT_IMPORTS, true);
params.put(RutaEngine.PARAM_VAR_NAMES, new String[] { "t1", "t2", "tl" });
- params.put(RutaEngine.PARAM_VAR_VALUES, new String[] {"org.apache.uima.T1", "org.apache.uima.T2",
- "org.apache.uima.T1,org.apache.uima.T2" });
+ params.put(RutaEngine.PARAM_VAR_VALUES, new String[] { "org.apache.uima.T1",
+ "org.apache.uima.T2", "org.apache.uima.T1,org.apache.uima.T2" });
CAS cas = RutaTestUtils.getCAS(document);
Ruta.apply(cas, script, params);
RutaTestUtils.assertAnnotationsEquals(cas, 3, 2, "Some", "text");
-
+
cas.release();
}
-
+
+ @Test
+ public void testKnownVariableValue() throws Exception {
+ String document = "Some text.";
+ String script = "";
+ script += "TYPE tvar;";
+ script += "tvar{ -> T1};";
+ Map<String, Object> params = new HashMap<String, Object>();
+ params.put(RutaEngine.PARAM_VAR_NAMES, new String[] { "tvar" });
+ params.put(RutaEngine.PARAM_VAR_VALUES, new String[] { "some.UnknownType" });
+
+ CAS cas = RutaTestUtils.getCAS(document);
+ Ruta.apply(cas, script, params);
+
+ RutaTestUtils.assertAnnotationsEquals(cas, 1, 0);
+ }
+
+ @Test
+ public void testMissingVariableValue() throws Exception {
+ String document = "Some text.";
+ String script = "";
+ script += "TYPE tvar;";
+ script += "tvar{ -> T1};";
+ Map<String, Object> params = new HashMap<String, Object>();
+
+ CAS cas = RutaTestUtils.getCAS(document);
+ Ruta.apply(cas, script, params);
+
+ RutaTestUtils.assertAnnotationsEquals(cas, 1, 0);
+ }
}