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 2015/10/28 11:52:10 UTC

svn commit: r1710988 - in /uima/ruta/trunk/ruta-core/src: main/java/org/apache/uima/ruta/rule/WildCardRuleElement.java test/java/org/apache/uima/ruta/WildCardInWindowTest.java

Author: pkluegl
Date: Wed Oct 28 10:52:10 2015
New Revision: 1710988

URL: http://svn.apache.org/viewvc?rev=1710988&view=rev
Log:
UIMA-4620
- added hotfix for now
- added test

Modified:
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/WildCardRuleElement.java
    uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/WildCardInWindowTest.java

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/WildCardRuleElement.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/WildCardRuleElement.java?rev=1710988&r1=1710987&r2=1710988&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/WildCardRuleElement.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/WildCardRuleElement.java Wed Oct 28 10:52:10 2015
@@ -418,6 +418,13 @@ public class WildCardRuleElement extends
           } else {
             // HOTFIX caused by type priorities
             result.moveToLast();
+            if(result.isValid()) {
+              // HOTFIX avoid pointer to current annotation
+              AnnotationFS current = result.get();
+              if(current.getEnd() >= annotation.getBegin()) {
+                result.moveToPrevious();
+              }
+            }
           }
         } else {
           if (!after) {
@@ -461,6 +468,13 @@ public class WildCardRuleElement extends
           } else {
             // TODO due to type priorities: RutaBasic is last -> moveTo will not work
             result.moveToLast();
+            if(result.isValid()) {
+              // HOTFIX avoid pointer to current annotation
+              AnnotationFS current = result.get();
+              if(current.getEnd() >= annotation.getBegin()) {
+                result.moveToPrevious();
+              }
+            }
           }
         } else {
           if (!after) {

Modified: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/WildCardInWindowTest.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/WildCardInWindowTest.java?rev=1710988&r1=1710987&r2=1710988&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/WildCardInWindowTest.java (original)
+++ uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/WildCardInWindowTest.java Wed Oct 28 10:52:10 2015
@@ -94,5 +94,49 @@ public class WildCardInWindowTest {
 
     cas.release();
   }
+  
+  @Test
+  public void testSameRightToLeftInWindow() {
+    String document = ". a 1 b . c 1 D . e 1 1 1 f . g 1 1 1 H .";
+    String script = "";
+    script += "PERIOD #{-> T1} PERIOD;";
+    script += "T1 ->{W{->T3} #{->T2} @W;};";
+    script += "T1 ->{W #{-PARTOF(NUM)->T4} @W;};";
+    
+    CAS cas = null;
+    try {
+      cas = RutaTestUtils.getCAS(document);
+      Ruta.apply(cas, script);
+    } catch (Exception e) {
+      e.printStackTrace();
+    }
+
+    RutaTestUtils.assertAnnotationsEquals(cas, 2, 4, "1", "1", "1 1 1", "1 1 1");
+    RutaTestUtils.assertAnnotationsEquals(cas, 3, 4, "a", "c", "e", "g");
+    RutaTestUtils.assertAnnotationsEquals(cas, 4, 0);
+
+    cas.release();
+  }
+  
+  @Test
+  public void testCoveredRightToLeftNoWindow() {
+    String document = "CAP1 some text CAP2 more text";
+    String script = "";
+    script += "(CAP NUM){-> T1};";
+    script += "SW (T1 W+){-> T2};";
+    script += " T1 #{->T3} @T2;";
+    
+    CAS cas = null;
+    try {
+      cas = RutaTestUtils.getCAS(document);
+      Ruta.apply(cas, script);
+    } catch (Exception e) {
+      e.printStackTrace();
+    }
+
+    RutaTestUtils.assertAnnotationsEquals(cas, 3, 1, "some text");
+
+    cas.release();
+  }
 
 }