You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by sc...@apache.org on 2016/01/04 15:00:17 UTC

svn commit: r1722870 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java

Author: schor
Date: Mon Jan  4 14:00:17 2016
New Revision: 1722870

URL: http://svn.apache.org/viewvc?rev=1722870&view=rev
Log:
[UIMA-4722] fix updateDocumentAnnotation corruption avoidance

Modified:
    uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java

Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java
URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java?rev=1722870&r1=1722869&r2=1722870&view=diff
==============================================================================
--- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java (original)
+++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java Mon Jan  4 14:00:17 2016
@@ -2323,11 +2323,11 @@ public class CASImpl extends AbstractCas
     }
     
     if (jcasFieldRegistryIndex == Integer.MIN_VALUE) {
-      if (!svd.featureCodesInIndexKeys.get(featCode)) {
+      if (!svd.featureCodesInIndexKeys.get(featCode)) { // skip if no index uses this feature
         return false;
       }
     } else {
-      if (!svd.featureJiInIndexKeys.get(jcasFieldRegistryIndex)) {
+      if (!svd.featureJiInIndexKeys.get(jcasFieldRegistryIndex)) {  // skip if no index uses this feature
         return false;
       }
     }
@@ -3413,10 +3413,12 @@ public class CASImpl extends AbstractCas
     if (null != newDoc) {
       Annotation docAnnot = getDocumentAnnotationNoCreate();
       if (docAnnot != null) {
-        boolean wasRemoved = this.indexRepository.removeIfInCorrputableIndexInThisView(docAnnot);
+        boolean wasRemoved = this.removeFromCorruptableIndexAnyViewSetCache(docAnnot, this.getAddbackSingle());
         docAnnot.setIntValue(getTypeSystemImpl().endFeat, newDoc.length());
         if (wasRemoved) {
-          ((FSIndexRepositoryImpl)ll_getIndexRepository()).addback(docAnnot);
+          this.addbackSingle(docAnnot);
+        } else {
+          resetAddbackSingleInUse();
         }
       } else {
         // not in the index (yet)
@@ -3865,15 +3867,15 @@ public class CASImpl extends AbstractCas
    * @param addbacks
    */
   void addbackModifiedFSs (FSsTobeAddedback addbacks) {
-    final List<FSsTobeAddedback> s =  svd.fssTobeAddedback;
-    if (s.get(s.size() - 1) == addbacks) {
-      s.remove(s.size());
+    final List<FSsTobeAddedback> listOfAddbackInfos =  svd.fssTobeAddedback;
+    if (listOfAddbackInfos.get(listOfAddbackInfos.size() - 1) == addbacks) {
+      listOfAddbackInfos.remove(listOfAddbackInfos.size());
     } else {
-      int pos = s.indexOf(addbacks);
+      int pos = listOfAddbackInfos.indexOf(addbacks);
       if (pos >= 0) {
-        for (int i = s.size() - 1; i > pos; i--) {
-          s.remove(i);
-          s.get(i).addback();
+        for (int i = listOfAddbackInfos.size() - 1; i > pos; i--) {
+          FSsTobeAddedback toAddBack = listOfAddbackInfos.remove(i);
+          toAddBack.addback();
         }
       }      
     }