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 2014/12/12 16:58:47 UTC

svn commit: r1644942 - in /uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl: FSsTobeAddedback.java XCASDeserializer.java XmiCasDeserializer.java

Author: schor
Date: Fri Dec 12 15:58:47 2014
New Revision: 1644942

URL: http://svn.apache.org/r1644942
Log:
[UIMA-4135] fix record and remove abstract methods, and add explicit protection for XCAS and XMI deserialization around updating DocumentAnnotation end.

Modified:
    uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSsTobeAddedback.java
    uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASDeserializer.java
    uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasDeserializer.java

Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSsTobeAddedback.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSsTobeAddedback.java?rev=1644942&r1=1644941&r2=1644942&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSsTobeAddedback.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSsTobeAddedback.java Fri Dec 12 15:58:47 2014
@@ -88,9 +88,21 @@ abstract class FSsTobeAddedback implemen
   }
   
   void recordRemove(FSIndexRepositoryImpl view)                        {throw new UnsupportedOperationException();}
-  void recordRemove(FSIndexRepositoryImpl view, int count)             {throw new UnsupportedOperationException();}
+  void recordRemove(FSIndexRepositoryImpl view, int count)             {
+    if (count == 1) {
+      recordRemove(view);
+    } else {
+      throw new UnsupportedOperationException();
+    }
+  }
   void recordRemove(int fsAddr, FSIndexRepositoryImpl view)            {throw new UnsupportedOperationException();}
-  void recordRemove(int fsAddr, FSIndexRepositoryImpl view, int count) {throw new UnsupportedOperationException();}
+  void recordRemove(int fsAddr, FSIndexRepositoryImpl view, int count) {
+    if (count == 1) {
+      recordRemove(fsAddr, view);
+    } else { 
+      throw new UnsupportedOperationException();
+    }
+  }
   
   void addback()                                                       {throw new UnsupportedOperationException();}
   void addback(int fsAddr)                                             {throw new UnsupportedOperationException();}

Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASDeserializer.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASDeserializer.java?rev=1644942&r1=1644941&r2=1644942&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASDeserializer.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASDeserializer.java Fri Dec 12 15:58:47 2014
@@ -777,9 +777,21 @@ public class XCASDeserializer {
         finalizeOutOfTypeSystemFeatures();
       }
 
-      for (int i = 0; i < views.size(); i++) {
-        ((CASImpl) views.get(i)).updateDocumentAnnotation();
+      for (CAS view : views) {
+        AutoCloseable ac = view.protectIndices();
+        try {
+          ((CASImpl)view).updateDocumentAnnotation();
+        } finally {
+          try {
+            ac.close();
+          } catch (Exception e) {
+            assert(false);
+          }
+        }
       }
+//      for (int i = 0; i < views.size(); i++) {       
+//        ((CASImpl) views.get(i)).updateDocumentAnnotation();
+//      }
     }
 
     private void finalizeFS(FSInfo fsInfo) {

Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasDeserializer.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasDeserializer.java?rev=1644942&r1=1644941&r2=1644942&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasDeserializer.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasDeserializer.java Fri Dec 12 15:58:47 2014
@@ -1494,9 +1494,20 @@ public class XmiCasDeserializer {
       // time = System.currentTimeMillis() - time;
       // System.out.println("Done in " + new TimeSpan(time));
 
-      for (int i = 0; i < views.size(); i++) {
-        ((CASImpl) views.get(i)).updateDocumentAnnotation();
+      
+      for (CAS view : views) {
+        AutoCloseable ac = view.protectIndices();
+        try {
+          ((CASImpl) view).updateDocumentAnnotation();
+        } finally {
+          try {
+            ac.close();
+          } catch (Exception e1) {
+            assert(false);
+          }
+        }
       }
+     
       
       //check if disallowed fs  encoutered]
       if (this.disallowedViewMemberEncountered) {