Merge branch 'master' into UIMA-6261-verbalization-NullExpression
diff --git a/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ExpressionVerbalizer.java b/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ExpressionVerbalizer.java
index 0c48ff0..2e8cba7 100644
--- a/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ExpressionVerbalizer.java
+++ b/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ExpressionVerbalizer.java
@@ -81,7 +81,9 @@
   }

 

   public String verbalize(IRutaExpression expression) {

-    if (expression instanceof GenericFeatureExpression) {

+    if (expression instanceof NullExpression) {

+      return "null";

+    } else if (expression instanceof GenericFeatureExpression) {

       return verbalize(((GenericFeatureExpression) expression).getFeatureExpression());

     } else if (expression instanceof AnnotationTypeExpression) {

       return verbalize((AnnotationTypeExpression) expression);

@@ -107,8 +109,6 @@
       return verbalize((IStringExpression) expression);

     } else if (expression instanceof MatchReference) {

       return verbalize((MatchReference) expression);

-    } else if(expression instanceof NullExpression) {

-      return "null";

     }

     return expression.getClass().getSimpleName();

   }

@@ -299,23 +299,23 @@
     }

     return expression.getClass().getSimpleName();

   }

-  

+

   public String verbalize(MatchReference expression) {

     String match = expression.getMatch();

-    if(match == null) {

+    if (match == null) {

       String string = expression.toString();

-      if(StringUtils.equals(string, CAS.TYPE_NAME_DOCUMENT_ANNOTATION)) {

+      if (StringUtils.equals(string, CAS.TYPE_NAME_DOCUMENT_ANNOTATION)) {

         return "Document";

       } else {

         return string;

       }

     }

-    if(expression.getArgument() != null) {

-     return  match + expression.getComparator() + verbalizer.verbalize(expression.getArgument());

+    if (expression.getArgument() != null) {

+      return match + expression.getComparator() + verbalizer.verbalize(expression.getArgument());

     }

     return match;

   }

-  

+

   public String verbalize(AnnotationTypeExpression expression) {

     return verbalize(expression.getReference());

   }

@@ -325,7 +325,7 @@
     if (expression instanceof SimpleFeatureExpression) {

       SimpleFeatureExpression sfe = (SimpleFeatureExpression) expression;

       sb.append(sfe.getMatchReference().getMatch());

-    } else if(expression instanceof NullExpression) {

+    } else if (expression instanceof NullExpression) {

       sb.append("null");

     }

     return sb.toString();

diff --git a/ruta-core/src/test/java/org/apache/uima/ruta/verbalizer/ScriptVerbalizerTest.java b/ruta-core/src/test/java/org/apache/uima/ruta/verbalizer/ScriptVerbalizerTest.java
index 50f12c7..c0caa79 100644
--- a/ruta-core/src/test/java/org/apache/uima/ruta/verbalizer/ScriptVerbalizerTest.java
+++ b/ruta-core/src/test/java/org/apache/uima/ruta/verbalizer/ScriptVerbalizerTest.java
@@ -33,13 +33,13 @@
 import org.junit.Assert;
 import org.junit.Test;
 
-
 public class ScriptVerbalizerTest {
 
   @Test
-  public void testRuleVerbalization() throws Exception{
+  public void testRuleVerbalization() throws Exception {
     JCas jcas = RutaTestUtils.getCAS("Some text.").getJCas();
-    
+
+    assertRuleVerbalization(jcas, "DocumentAnnotation.language!=null;");
     assertRuleVerbalization(jcas, "Document{->MARK(T1)};");
     assertRuleVerbalization(jcas, "W{->T1} W{->T2};");
     assertRuleVerbalization(jcas, "T1<-{W PERIOD;};");
@@ -48,24 +48,26 @@
     assertRuleVerbalization(jcas, "W W? W?? W+ W+? W* W*? W[1,2] W[1,2]? #;");
     assertRuleVerbalization(jcas, "Document{CONTAINS(T1)->T2};");
     assertRuleVerbalization(jcas, "Document{->ADDFILTERTYPE(CW)};");
-    
+
     jcas.release();
   }
 
-  private void assertRuleVerbalization(JCas jcas, String rule) throws AnalysisEngineProcessException, ResourceInitializationException {
+  private void assertRuleVerbalization(JCas jcas, String rule)
+          throws AnalysisEngineProcessException, ResourceInitializationException {
     assertRuleVerbalization(jcas, rule, rule);
   }
-  
-  private void assertRuleVerbalization(JCas jcas, String rule, String expected) throws AnalysisEngineProcessException, ResourceInitializationException {
-    Ruta.applyRule(jcas, rule, RutaEngine.PARAM_DEBUG, true, RutaEngine.PARAM_DEBUG_WITH_MATCHES, true);
+
+  private void assertRuleVerbalization(JCas jcas, String rule, String expected)
+          throws AnalysisEngineProcessException, ResourceInitializationException {
+    Ruta.applyRule(jcas, rule, RutaEngine.PARAM_DEBUG, true, RutaEngine.PARAM_DEBUG_WITH_MATCHES,
+            true);
     Collection<DebugBlockApply> blockApplies = JCasUtil.select(jcas, DebugBlockApply.class);
     Assert.assertEquals(1, blockApplies.size());
-    DebugBlockApply blockApply =  blockApplies.iterator().next();
+    DebugBlockApply blockApply = blockApplies.iterator().next();
     Assert.assertEquals(1, blockApply.getInnerApply().size());
     DebugRuleApply ruleApply = (DebugRuleApply) blockApply.getInnerApply(0);
     Assert.assertEquals(expected, ruleApply.getElement());
     Ruta.removeDebugInformation(jcas);
   }
-  
-  
+
 }