You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by re...@apache.org on 2020/10/27 10:50:08 UTC

[uima-uimafit] branch bugfix/UIMA-6286-select-following-finds-zero-width-annotation-at-reference-end-position created (now 48a72b3)

This is an automated email from the ASF dual-hosted git repository.

rec pushed a change to branch bugfix/UIMA-6286-select-following-finds-zero-width-annotation-at-reference-end-position
in repository https://gitbox.apache.org/repos/asf/uima-uimafit.git.


      at 48a72b3  [UIMA-6286] select following finds zero-width annotation at reference end position

This branch includes the following new commits:

     new 48a72b3  [UIMA-6286] select following finds zero-width annotation at reference end position

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[uima-uimafit] 01/01: [UIMA-6286] select following finds zero-width annotation at reference end position

Posted by re...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rec pushed a commit to branch bugfix/UIMA-6286-select-following-finds-zero-width-annotation-at-reference-end-position
in repository https://gitbox.apache.org/repos/asf/uima-uimafit.git

commit 48a72b3fb5ce637c6e943ea854c5e6965898f32c
Author: Richard Eckart de Castilho <re...@apache.org>
AuthorDate: Tue Oct 27 11:47:34 2020 +0100

    [UIMA-6286] select following finds zero-width annotation at reference end position
    
    - When selecting following annotations, skip over zero-width annotations that are the the end position of the reference interval
    - Added unit test checking behavior for zero-width annotations at start/end of reference when selecting following and preceding
---
 .../java/org/apache/uima/fit/util/CasUtil.java     |  9 +++++++
 .../org/apache/uima/fit/util/JCasUtilTest.java     | 29 ++++++++++++++++++++++
 2 files changed, 38 insertions(+)

diff --git a/uimafit-core/src/main/java/org/apache/uima/fit/util/CasUtil.java b/uimafit-core/src/main/java/org/apache/uima/fit/util/CasUtil.java
index 187fe00..3e96190 100644
--- a/uimafit-core/src/main/java/org/apache/uima/fit/util/CasUtil.java
+++ b/uimafit-core/src/main/java/org/apache/uima/fit/util/CasUtil.java
@@ -1254,8 +1254,17 @@ public final class CasUtil {
     }
 
     // add annotations from the iterator into the result list
+    int refEnd = annotation.getEnd();
     List<AnnotationFS> followingAnnotations = new ArrayList<AnnotationFS>();
     for (int i = 0; i < count && itr.isValid(); i++, itr.moveToNext()) {
+      AnnotationFS fs = itr.get();
+      int begin = fs.getBegin();
+      int end = fs.getEnd();
+      if (begin == end && refEnd == begin) {
+        // Skip zero-width annotation at the end of the reference annotation. These are considered
+        // to be "coveredBy" instead of following
+        continue;
+      }
       followingAnnotations.add(itr.get());
     }
     return followingAnnotations;
diff --git a/uimafit-core/src/test/java/org/apache/uima/fit/util/JCasUtilTest.java b/uimafit-core/src/test/java/org/apache/uima/fit/util/JCasUtilTest.java
index 12290b6..1932ecd 100644
--- a/uimafit-core/src/test/java/org/apache/uima/fit/util/JCasUtilTest.java
+++ b/uimafit-core/src/test/java/org/apache/uima/fit/util/JCasUtilTest.java
@@ -21,6 +21,7 @@
  */
 package org.apache.uima.fit.util;
 
+import static java.lang.Integer.MAX_VALUE;
 import static java.util.Arrays.asList;
 import static java.util.stream.Collectors.toList;
 import static org.apache.uima.fit.factory.TypeSystemDescriptionFactory.createTypeSystemDescription;
@@ -931,6 +932,34 @@ public class JCasUtilTest extends ComponentTestBase {
   }
 
   @Test
+  public void thatSelectFollowingDoesNotFindZeroWidthAnnotationAtEnd()
+  {
+    Annotation a1 = new Annotation(jCas, 10, 20);
+    Annotation a2 = new Annotation(jCas, 20, 20);
+    
+    asList(a1, a2).forEach(a -> a.addToIndexes());
+    
+    List<Annotation> selection = selectFollowing(Annotation.class, a1, MAX_VALUE);
+    
+    assertThat(selection)
+            .isEmpty();
+  }
+
+  @Test
+  public void thatSelectPrecedingDoesNotFindZeroWidthAnnotationAtStart()
+  {
+    Annotation a1 = new Annotation(jCas, 10, 20);
+    Annotation a2 = new Annotation(jCas, 10, 10);
+    
+    asList(a1, a2).forEach(a -> a.addToIndexes());
+    
+    List<Annotation> selection = selectPreceding(Annotation.class, a1, MAX_VALUE);
+    
+    assertThat(selection)
+            .isEmpty();
+  }
+    
+  @Test
   public void testExists() throws UIMAException {
     JCas jcas = CasCreationUtils.createCas(createTypeSystemDescription(), null, null).getJCas();