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/28 15:29:06 UTC
svn commit: r1849866 - 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/bool/
main/java/org/apache/uima/ruta/ex...
Author: pkluegl
Date: Fri Dec 28 15:29:06 2018
New Revision: 1849866
URL: http://svn.apache.org/viewvc?rev=1849866&view=rev
Log:
UIMA-5481: null is now the initial default for strings in ruta
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/action/ExecAction.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/RegExpCondition.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanStringExpression.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/ComposedStringExpression.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/RemoveFunction.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RegExpRule.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaLiteralMatcher.java
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/condition/ImplicitCondition2Test.java
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/engine/ThreeStackedScriptsVariableResetTest.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=1849866&r1=1849865&r2=1849866&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 28 15:29:06 2018
@@ -756,7 +756,7 @@ public class RutaEnvironment {
} else if (Float.class.equals(type)) {
return 0f;
} else if (String.class.equals(type)) {
- return "";
+ return null;
} else if (Boolean.class.equals(type)) {
return false;
} else if (Type.class.equals(type)) {
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/ExecAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/ExecAction.java?rev=1849866&r1=1849865&r2=1849866&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/ExecAction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/ExecAction.java Fri Dec 28 15:29:06 2018
@@ -75,7 +75,7 @@ public class ExecAction extends CallActi
CAS cas = stream.getCas();
if (view != null) {
String viewName = view.getStringValue(context, stream);
- if (!viewName.equals(CAS.NAME_DEFAULT_SOFA)) {
+ if (viewName != null && !viewName.equals(CAS.NAME_DEFAULT_SOFA)) {
cas = cas.getView(viewName);
AnalysisEngineMetaData metaData = targetEngine.getAnalysisEngineMetaData();
try {
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=1849866&r1=1849865&r2=1849866&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 28 15:29:06 2018
@@ -61,6 +61,11 @@ public class RegExpCondition extends Ter
Matcher matcher = null;
boolean ignore = ignoreCase == null ? false : ignoreCase.getBooleanValue(context, stream);
String stringValue = pattern.getStringValue(context, stream);
+
+ if (stringValue == null) {
+ return new EvaluatedCondition(this, false);
+ }
+
if (variable == null) {
String coveredText = annotation.getCoveredText();
Pattern regularExpPattern = null;
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanStringExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanStringExpression.java?rev=1849866&r1=1849865&r2=1849866&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanStringExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanStringExpression.java Fri Dec 28 15:29:06 2018
@@ -47,8 +47,14 @@ public class BooleanStringExpression ext
private boolean eval(String t1, String op, String t2) {
if ("==".equals(op)) {
+ if (t1 == null) {
+ return t2 == null;
+ }
return t1.equals(t2);
} else if ("!=".equals(op)) {
+ if (t1 == null) {
+ return t2 != null;
+ }
return !t1.equals(t2);
}
return false;
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/ComposedStringExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/ComposedStringExpression.java?rev=1849866&r1=1849865&r2=1849866&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/ComposedStringExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/ComposedStringExpression.java Fri Dec 28 15:29:06 2018
@@ -26,15 +26,22 @@ import org.apache.uima.ruta.rule.MatchCo
public class ComposedStringExpression extends LiteralStringExpression {
- private final List<IStringExpression> epxressions;
+ private final List<IStringExpression> expressions;
public ComposedStringExpression(List<IStringExpression> expressions) {
super();
- this.epxressions = expressions;
+ this.expressions = expressions;
}
@Override
public String getStringValue(MatchContext context, RutaStream stream) {
+ if (expressions == null) {
+ return null;
+ }
+ if (expressions.size() == 1) {
+ IStringExpression stringExpression = expressions.get(0);
+ return stringExpression.getStringValue(context, stream);
+ }
StringBuilder result = new StringBuilder();
for (IStringExpression each : getExpressions()) {
result.append(each.getStringValue(context, stream));
@@ -43,7 +50,7 @@ public class ComposedStringExpression ex
}
public List<IStringExpression> getExpressions() {
- return epxressions;
+ return expressions;
}
}
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/RemoveFunction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/RemoveFunction.java?rev=1849866&r1=1849865&r2=1849866&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/RemoveFunction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/RemoveFunction.java Fri Dec 28 15:29:06 2018
@@ -44,9 +44,11 @@ public class RemoveFunction extends Stri
String value = parent.getEnvironment().getVariableValue(var, String.class, stream);
for (IStringExpression each : list) {
String string = each.getStringValue(context, stream);
- String[] split = value.split(string);
- for (String r : split) {
- result.append(r);
+ if (string != null) {
+ String[] split = value.split(string);
+ for (String r : split) {
+ result.append(r);
+ }
}
}
return result.toString();
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RegExpRule.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RegExpRule.java?rev=1849866&r1=1849865&r2=1849866&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RegExpRule.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RegExpRule.java Fri Dec 28 15:29:06 2018
@@ -72,6 +72,12 @@ public class RegExpRule extends Abstract
crowd.beginVisit(this, ruleApply);
MatchContext context = new MatchContext(getParent());
String regexpString = regexpExpr.getStringValue(context, stream);
+
+ if (regexpString == null) {
+ crowd.endVisit(this, ruleApply);
+ return ruleApply;
+ }
+
AnnotationFS documentAnnotation = stream.getDocumentAnnotation();
String document = documentAnnotation.getCoveredText();
int delta = documentAnnotation.getBegin();
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaLiteralMatcher.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaLiteralMatcher.java?rev=1849866&r1=1849865&r2=1849866&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaLiteralMatcher.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaLiteralMatcher.java Fri Dec 28 15:29:06 2018
@@ -92,7 +92,7 @@ public class RutaLiteralMatcher implemen
MatchContext context = new MatchContext(annotation, null, null, !before);
context.setParent(parent);
String stringValue = expression.getStringValue(context, stream);
- if (stringValue.equals(basicNextTo.getCoveredText())) {
+ if (stringValue != null && stringValue.equals(basicNextTo.getCoveredText())) {
result.add(basicNextTo);
}
return result;
Modified: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/condition/ImplicitCondition2Test.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/condition/ImplicitCondition2Test.java?rev=1849866&r1=1849865&r2=1849866&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/condition/ImplicitCondition2Test.java (original)
+++ uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/condition/ImplicitCondition2Test.java Fri Dec 28 15:29:06 2018
@@ -54,15 +54,17 @@ public class ImplicitCondition2Test {
RutaTestUtils.assertAnnotationsEquals(cas, 1, 3, "Peter", "Kluegl", "Joern");
RutaTestUtils.assertAnnotationsEquals(cas, 2, 2, "Peter", "Kluegl");
RutaTestUtils.assertAnnotationsEquals(cas, 3, 1, "Peter");
- RutaTestUtils.assertAnnotationsEquals(cas, 4, 5, "Kluegl", "Joern", "Kottmann", "Marshall", "Schor");
+ RutaTestUtils.assertAnnotationsEquals(cas, 4, 5, "Kluegl", "Joern", "Kottmann", "Marshall",
+ "Schor");
RutaTestUtils.assertAnnotationsEquals(cas, 5, 3, "Kottmann", "Marshall", "Schor");
RutaTestUtils.assertAnnotationsEquals(cas, 6, 2, "Marshall", "Schor");
cas.release();
}
-
+
@Test
- public void testStringCompare() throws ResourceInitializationException, InvalidXMLException, IOException, AnalysisEngineProcessException, CASException {
+ public void testStringCompare() throws ResourceInitializationException, InvalidXMLException,
+ IOException, AnalysisEngineProcessException, CASException {
String document = "a b. a b.";
CAS cas = RutaTestUtils.getCAS(document);
Assert.assertTrue(Ruta.matches(cas.getJCas(), "(w:W # W{W.ct==w.ct}){->T1};"));
@@ -70,21 +72,21 @@ public class ImplicitCondition2Test {
RutaTestUtils.assertAnnotationsEquals(cas, 1, 2, "a b. a", "b. a b");
RutaTestUtils.assertAnnotationsEquals(cas, 2, 2, "a b", "a b");
}
-
+
@Test
- public void testStringCompareNull() throws ResourceInitializationException, InvalidXMLException, IOException, AnalysisEngineProcessException, CASException {
+ public void testStringCompareNull() throws ResourceInitializationException, InvalidXMLException,
+ IOException, AnalysisEngineProcessException, CASException {
String document = "a b. a b.";
CAS cas = RutaTestUtils.getCAS(document);
-
+
String rules = "STRING s2;\n";
rules += "Document{s2 == \"\" -> T10};\n";
rules += "Document{s2 == null -> T11};\n";
Assert.assertTrue(Ruta.matches(cas.getJCas(), rules));
-
- RutaTestUtils.assertAnnotationsEquals(cas, 10, 1, document);
- RutaTestUtils.assertAnnotationsEquals(cas, 11, 0);
-
+
+ RutaTestUtils.assertAnnotationsEquals(cas, 10, 0);
+ RutaTestUtils.assertAnnotationsEquals(cas, 11, 1, document);
+
}
-
-
+
}
Modified: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/engine/ThreeStackedScriptsVariableResetTest.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/engine/ThreeStackedScriptsVariableResetTest.java?rev=1849866&r1=1849865&r2=1849866&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/engine/ThreeStackedScriptsVariableResetTest.java (original)
+++ uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/engine/ThreeStackedScriptsVariableResetTest.java Fri Dec 28 15:29:06 2018
@@ -52,25 +52,27 @@ public class ThreeStackedScriptsVariable
RutaBuildOptions options = new RutaBuildOptions();
RutaDescriptorInformation rdi = factory
.parseDescriptorInformation(new File(path + "script1.ruta"), options);
- Pair<AnalysisEngineDescription, TypeSystemDescription> descriptions = factory.createDescriptions(null, Paths.get(path).toFile().getAbsolutePath(), rdi, options, new String[] { path }, new String[] { path }, null);
+ Pair<AnalysisEngineDescription, TypeSystemDescription> descriptions = factory
+ .createDescriptions(null, Paths.get(path).toFile().getAbsolutePath(), rdi, options,
+ new String[] { path }, new String[] { path }, null);
AnalysisEngine ae = UIMAFramework.produceAnalysisEngine(descriptions.getKey());
JCas jcas = JCasFactory.createJCas(descriptions.getValue());
-
+
jcas.setDocumentText(input1);
ae.process(jcas);
checkFeatureValue(jcas);
-
+
jcas.reset();
jcas.setDocumentText(input2);
ae.process(jcas);
checkFeatureValue(jcas);
-
+
jcas.reset();
jcas.setDocumentText(input3);
ae.process(jcas);
checkFeatureValue(jcas);
-
+
}
private void checkFeatureValue(JCas jcas) {
@@ -79,7 +81,7 @@ public class ThreeStackedScriptsVariable
Feature feature = type.getFeatureByBaseName("value");
FeatureStructure fs = CasUtil.selectSingle(cas, type);
String stringValue = fs.getStringValue(feature);
- Assert.assertEquals("", stringValue);
+ Assert.assertNull(stringValue);
}
}