Author: rec
Date: Thu Aug 11 10:54:51 2016
New Revision: 1755934

URL: http://svn.apache.org/viewvc?rev=1755934&view=rev
Log:
[UIMA-4685] Adding back COMPRESSED_FILTERED_TSI, refactoring to allow staying 
with a single header in the binary stream, added unit test back

Modified:
    
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/SerialFormat.java
    
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes6.java
    
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java
    
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CommonSerDes.java
    
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/Serialization.java
    
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/util/CasIOUtils.java
    
uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/util/CasIOUtilsTest.java

Modified: 
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/SerialFormat.java
URL: 
http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/SerialFormat.java?rev=1755934&r1=1755933&r2=1755934&view=diff
==============================================================================
--- 
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/SerialFormat.java 
(original)
+++ 
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/SerialFormat.java 
Thu Aug 11 10:54:51 2016
@@ -69,12 +69,11 @@ public enum SerialFormat {
    */
   SERIALIZED_TSI("scas"),
 
-//  /**
-//   * Binary compressed CAS with embedded Java-serialized type system
-//   * with reachability and type and feature filtering (form 6)
-//   */
-//  COMPRESSED_FILTERED_TS("bcas");
-  ;
+  /**
+   * Binary compressed CAS with embedded Java-serialized type system
+   * with reachability and type and feature filtering (form 6)
+   */
+  COMPRESSED_FILTERED_TSI("bcas");
   
   private String defaultFileExtension;
 

Modified: 
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes6.java
URL: 
http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes6.java?rev=1755934&r1=1755933&r2=1755934&view=diff
==============================================================================
--- 
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes6.java
 (original)
+++ 
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes6.java
 Thu Aug 11 10:54:51 2016
@@ -58,6 +58,7 @@ import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.ObjectOutputStream;
 import java.io.OutputStream;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -70,6 +71,7 @@ import java.util.zip.InflaterInputStream
 
 import org.apache.uima.cas.AbstractCas;
 import org.apache.uima.cas.CASRuntimeException;
+import org.apache.uima.cas.admin.CASMgr;
 import org.apache.uima.cas.impl.CommonSerDes.Header;
 import org.apache.uima.cas.impl.FSsTobeAddedback.FSsTobeAddedbackSingle;
 import org.apache.uima.cas.impl.SlotKinds.SlotKind;
@@ -342,6 +344,8 @@ public class BinaryCasSerDes6 {
 
   final private TypeSystemImpl tgtTs;
 
+  private boolean isTsiIncluded;
+  
   private TypeInfo typeInfo; // type info for the current type being 
serialized/deserialized
                              // always the "src" typeInfo I think, except for 
compareCas use
   final private CasTypeSystemMapper typeMapper;
@@ -470,6 +474,7 @@ public class BinaryCasSerDes6 {
       AbstractCas aCas,
       MarkerImpl mark,
       TypeSystemImpl tgtTs,
+      boolean storeTSI,      
       ReuseInfo rfs,
       boolean doMeasurements,
       CompressLevel compressLevel, 
@@ -489,6 +494,7 @@ public class BinaryCasSerDes6 {
     isDelta = isSerializingDelta = (mark != null);
     typeMapperCmn = typeMapper = ts.getTypeSystemMapper(tgtTs);
     isTypeMappingCmn = isTypeMapping = (null != typeMapper);
+    isTsiIncluded = storeTSI;
     
     heap = cas.getHeap().heap;
     heapEnd = cas.getHeap().getCellsUsed();
@@ -523,7 +529,7 @@ public class BinaryCasSerDes6 {
    * @throws ResourceInitializationException never thrown 
    */
   public BinaryCasSerDes6(AbstractCas cas) throws 
ResourceInitializationException {
-    this(cas, null, null, null, false, CompressLevel.Default, 
CompressStrat.Default);
+    this(cas, null, null, false, null, false, CompressLevel.Default, 
CompressStrat.Default);
   }
   
   /**
@@ -533,7 +539,7 @@ public class BinaryCasSerDes6 {
    * @throws ResourceInitializationException if the target type system is 
incompatible with the source type system
    */
   public BinaryCasSerDes6(AbstractCas cas, TypeSystemImpl tgtTs) throws 
ResourceInitializationException {
-    this(cas, null, tgtTs, null, false, CompressLevel.Default, 
CompressStrat.Default);
+    this(cas, null, tgtTs, false, null, false, CompressLevel.Default, 
CompressStrat.Default);
   }
 
   /**
@@ -545,7 +551,7 @@ public class BinaryCasSerDes6 {
    * @throws ResourceInitializationException if the target type system is 
incompatible with the source type system
    */
   public BinaryCasSerDes6(AbstractCas cas, MarkerImpl mark, TypeSystemImpl 
tgtTs, ReuseInfo rfs) throws ResourceInitializationException {
-    this(cas, mark, tgtTs, rfs, false, CompressLevel.Default, 
CompressStrat.Default);
+    this(cas, mark, tgtTs, false, rfs, false, CompressLevel.Default, 
CompressStrat.Default);
   }
   
   /**
@@ -558,7 +564,7 @@ public class BinaryCasSerDes6 {
    * @throws ResourceInitializationException if the target type system is 
incompatible with the source type system
    */
   public BinaryCasSerDes6(AbstractCas cas, MarkerImpl mark, TypeSystemImpl 
tgtTs, ReuseInfo rfs, boolean doMeasurements) throws 
ResourceInitializationException {
-    this(cas, mark, tgtTs, rfs, doMeasurements, CompressLevel.Default, 
CompressStrat.Default);
+    this(cas, mark, tgtTs, false, rfs, doMeasurements, CompressLevel.Default, 
CompressStrat.Default);
   }
 
   /**
@@ -568,7 +574,18 @@ public class BinaryCasSerDes6 {
    * @throws ResourceInitializationException never thrown
    */
   public BinaryCasSerDes6(AbstractCas cas, ReuseInfo rfs) throws 
ResourceInitializationException {
-    this(cas, null, null, rfs, false, CompressLevel.Default, 
CompressStrat.Default);
+    this(cas, null, null, false, rfs, false, CompressLevel.Default, 
CompressStrat.Default);
+  }
+
+  /**
+   * Setup to serialize (not delta) or deserialize (maybe delta) using binary 
compression, no type mapping, optionally storing TSI, and only processing 
reachable Feature Structures
+   * @param cas -
+   * @param rfs -
+   * @param storeTSI -
+   * @throws ResourceInitializationException never thrown
+   */
+  public BinaryCasSerDes6(AbstractCas cas, ReuseInfo rfs, boolean storeTSI) 
throws ResourceInitializationException {
+    this(cas, null, null, storeTSI, rfs, false, CompressLevel.Default, 
CompressStrat.Default);
   }
 
   
/*********************************************************************************************
@@ -589,6 +606,10 @@ public class BinaryCasSerDes6 {
       throw new UnsupportedOperationException("Can't do Delta Serialization 
with different target TS");
     }
 
+    if (isTsiIncluded && (tgtTs != null)) {
+      throw new UnsupportedOperationException("Can't store a different target 
TS in the serialized form");
+    }
+    
     if (fsStartIndexes == null) {
       if (isSerializingDelta) {
         throw new UnsupportedOperationException("Serializing a delta requires 
valid ReuseInfo for Cas being serialized," +
@@ -612,9 +633,15 @@ public class BinaryCasSerDes6 {
     CommonSerDes.createHeader()
     .form6()
     .delta(isSerializingDelta)
-    .seqVer(0)     
+    .seqVer(0)
+    .typeSystemIncluded(isTsiIncluded)
     .write(serializedOut);
-    
+ 
+    if (isTsiIncluded) {
+      ObjectOutputStream tsiOS = new ObjectOutputStream(serializedOut);
+      tsiOS.writeObject(Serialization.serializeCASMgr((CASMgr) cas));
+      tsiOS.flush();
+    }
  
     os = new OptimizeStrings(doMeasurements);
  

Modified: 
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java
URL: 
http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java?rev=1755934&r1=1755933&r2=1755934&view=diff
==============================================================================
--- 
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java 
(original)
+++ 
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java 
Thu Aug 11 10:54:51 2016
@@ -1376,7 +1376,6 @@ public class CASImpl extends AbstractCas
    * @return -
    * @throws CASRuntimeException wraps IOException
    */
-
   public SerialFormat reinit(InputStream istream) throws CASRuntimeException {
     if (this != this.svd.baseCAS) {
       return this.svd.baseCAS.reinit(istream);
@@ -1384,11 +1383,42 @@ public class CASImpl extends AbstractCas
    
     final DataInputStream dis = 
CommonSerDes.maybeWrapToDataInputStream(istream);
 
-    final BinDeserSupport bds = new BinDeserSupport();
-    
     try {
       Header h = CommonSerDes.readHeader(dis);
+      return reinit(h, istream);
+    } catch (IOException e) {
+      String msg = e.getMessage();
+      if (msg == null) {
+        msg = e.toString();
+      }
+      CASRuntimeException exception = new CASRuntimeException(
+          CASRuntimeException.BLOB_DESERIALIZATION, new String[] { msg });
+      throw exception;
+    }
+  }
+  
+  /**
+   * --------------------------------------------------------------------- see
+   * Blob Format in CASSerializer
+   * 
+   * This reads in and deserializes CAS data from a stream. Byte swapping may 
be
+   * needed if the blob is from C++ -- C++ blob serialization writes data in
+   * native byte order.
+   * 
+   * @param istream -
+   * @return -
+   * @throws CASRuntimeException wraps IOException
+   */
+  public SerialFormat reinit(Header h, InputStream istream) throws 
CASRuntimeException {
+    if (this != this.svd.baseCAS) {
+      return this.svd.baseCAS.reinit(h, istream);
+    }
+   
+    final DataInputStream dis = 
CommonSerDes.maybeWrapToDataInputStream(istream);
 
+    final BinDeserSupport bds = new BinDeserSupport();
+    
+    try {
       final boolean delta = h.isDelta;
       
       if (!delta) {
@@ -1403,7 +1433,8 @@ public class CASImpl extends AbstractCas
       if (h.form6) { 
         try {
           (new BinaryCasSerDes6(this)).deserializeAfterVersion(dis, delta, 
AllowPreexistingFS.allow);
-          return SerialFormat.COMPRESSED_FILTERED;
+          return h.typeSystemIncluded ? SerialFormat.COMPRESSED_FILTERED_TSI
+                  : SerialFormat.COMPRESSED_FILTERED;
         } catch (ResourceInitializationException e) {
           throw new 
CASRuntimeException(CASRuntimeException.DESERIALIZING_COMPRESSED_BINARY_UNSUPPORTED,
 null, e);
         }

Modified: 
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CommonSerDes.java
URL: 
http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CommonSerDes.java?rev=1755934&r1=1755933&r2=1755934&view=diff
==============================================================================
--- 
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CommonSerDes.java
 (original)
+++ 
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CommonSerDes.java
 Thu Aug 11 10:54:51 2016
@@ -85,7 +85,7 @@ public class CommonSerDes {
     public Header delta(boolean v2) {isDelta = v2;  return this; }
     public Header form4() {isCompressed = form4 = true; form6 = false; return 
this; }
     public Header form6() {isCompressed = form6 = true; form4 = false; return 
this; }
-    public Header typeSystemIncluded() {typeSystemIncluded = true; return 
this; }
+    public Header typeSystemIncluded(boolean f) {typeSystemIncluded = f; 
return this; }
     public Header seqVer(int v2) { assert (v2 >= 0 && v2 < 256); seqVersionNbr 
= (byte)v2; return this; }
     public Header v3() {isV3 = true; return this; }
     

Modified: 
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/Serialization.java
URL: 
http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/Serialization.java?rev=1755934&r1=1755933&r2=1755934&view=diff
==============================================================================
--- 
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/Serialization.java
 (original)
+++ 
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/Serialization.java
 Thu Aug 11 10:54:51 2016
@@ -228,6 +228,25 @@ public class Serialization {
    * @throws IOException if IO exception
    * @throws ResourceInitializationException if target type system is 
incompatible with this CAS's type system
    */  
+  public static ReuseInfo serializeWithCompression(CAS cas, Object out, 
boolean includeTSI) throws IOException, ResourceInitializationException {
+    BinaryCasSerDes6 bcs = new BinaryCasSerDes6(cas, null, includeTSI);
+    bcs.serialize(out);
+    return bcs.getReuseInfo();
+  }
+  
+  /**
+   * Serialize in compressed binary with type filtering
+   * This method can use type filtering to omit sending those types and/or 
features not present in the target type system.
+   *   - To omit type filtering, use null for the target type system
+   * It also only sends those feature structures which are reachable either 
from an index or references from other reachable feature structures.
+   * 
+   * @param cas the CAS to serialize
+   * @param out an OutputStream, a DataOutputStream, or a File
+   * @param tgtTypeSystem null or a target TypeSystem, which must be mergable 
with this CAS's type system
+   * @return information to be used on subsequent serializations (to save 
time) or deserializations (for receiving delta CASs), or reserializations (if 
sending delta CASs)
+   * @throws IOException if IO exception
+   * @throws ResourceInitializationException if target type system is 
incompatible with this CAS's type system
+   */  
   public static ReuseInfo serializeWithCompression(CAS cas, Object out, 
TypeSystem tgtTypeSystem) throws IOException, ResourceInitializationException {
     BinaryCasSerDes6 bcs = new BinaryCasSerDes6(cas, (TypeSystemImpl) 
tgtTypeSystem);
     bcs.serialize(out);

Modified: 
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/util/CasIOUtils.java
URL: 
http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/util/CasIOUtils.java?rev=1755934&r1=1755933&r2=1755934&view=diff
==============================================================================
--- 
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/util/CasIOUtils.java 
(original)
+++ 
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/util/CasIOUtils.java 
Thu Aug 11 10:54:51 2016
@@ -42,6 +42,7 @@ import org.apache.uima.cas.impl.CASImpl;
 import org.apache.uima.cas.impl.CASMgrSerializer;
 import org.apache.uima.cas.impl.CASSerializer;
 import org.apache.uima.cas.impl.CommonSerDes;
+import org.apache.uima.cas.impl.CommonSerDes.Header;
 import org.apache.uima.cas.impl.Serialization;
 import org.apache.uima.cas.impl.XCASDeserializer;
 import org.apache.uima.cas.impl.XCASSerializer;
@@ -191,7 +192,7 @@ public class CasIOUtils {
    *           - Problem loading from given InputStream
    */
   public static SerialFormat load(InputStream casInputStream, CAS aCAS) throws 
IOException {
-    return load(casInputStream, null, aCAS, false);
+    return load(casInputStream, (CASMgrSerializer) null, aCAS, false);
   }
 
   /**
@@ -204,9 +205,10 @@ public class CasIOUtils {
    * pass null for the tsiInputStream.
    * 
    * @param casInputStream
-   *          The input stream containing the CAS. Caller should buffer this 
appropriately.
+   *          The input stream containing the CAS.
    * @param tsiInputStream
-   *          The optional input stream containing the type system. Caller 
should buffer this appropriately.
+   *          The optional input stream containing the type system. This is 
only used if the
+   *          casInputStream does not already come with an embedded CAS 
configuration.
    * @param aCAS
    *          The CAS that should be filled
    * @param leniently
@@ -220,17 +222,63 @@ public class CasIOUtils {
    */
   public static SerialFormat load(InputStream casInputStream, InputStream 
tsiInputStream, CAS aCAS,
           boolean leniently) throws IOException {
+    CASMgrSerializer casMgrSerializer = null; 
+
+    // If there is a TSI specified, load it - we will see later if we actually 
use it.
+    if (tsiInputStream != null) {
+      if (!tsiInputStream.markSupported()) {
+        tsiInputStream = new BufferedInputStream(tsiInputStream);
+      }
+      
+      try {
+        ObjectInputStream is = new ObjectInputStream(tsiInputStream);
+        casMgrSerializer = (CASMgrSerializer) is.readObject();
+      } catch (ClassNotFoundException e) {
+        throw new IOException(e);
+      }    
+    }
+
+    return load(casInputStream, casMgrSerializer, aCAS, leniently);
+  }
+
+  /**
+   * Loads a CAS from a URL source. The format is determined from the content. 
For formats of type
+   * SERIALIZED_TSI, the type system and index definitions are read from the 
casUrl source; the
+   * value of tsiInputStream is ignored. For other formats, if the tsiUrl is 
not null, type system
+   * and index definitions are read from that source.
+   * 
+   * To specify lenient loading, without specifying an additional type system 
and index definition
+   * source, pass null for the tsiInputStream.
+   * 
+   * This method avoids the repeated loading of the typesystem and index 
definitions
+   * from a stream when loading many CASes in a row.
+   * 
+   * @param casInputStream
+   *          The input stream containing the CAS.
+   * @param casMgr
+   *          The optional CAS configuration including type system definition 
and index definition
+   *          in form of a {@link CASMgrSerializer}}. This is only used if the
+   *          casInputStream does not already come with an embedded CAS 
configuration.
+   * @param aCAS
+   *          The CAS that should be filled
+   * @param leniently
+   *          for XCAS and XMI formats, ignore feature structures and features 
of non-existing types
+   *          and/or features. ignored for other formats.
+   * @return the SerialFormat of the loaded CAS
+   * @throws IOException
+   *           - Problem loading from given InputStream
+   * @throws IllegalArgumentException
+   *           - when trying to load XCAS
+   */
+  public static SerialFormat load(InputStream casInputStream, CASMgrSerializer 
casMgr, CAS aCAS,
+          boolean leniently) throws IOException {
 
     if (!casInputStream.markSupported()) {
       casInputStream = new BufferedInputStream(casInputStream);
     }
     
-    if (tsiInputStream != null && !tsiInputStream.markSupported()) {
-      tsiInputStream = new BufferedInputStream(tsiInputStream);
-    }
-    
     CASImpl casImpl = (CASImpl) aCAS;
-    /** scan the first part of the file for known formats */
+    // scan the first part of the file for known formats
     casInputStream.mark(6);
     byte[] firstPartOfFile = new byte[6];
     int bytesReadCount = casInputStream.read(firstPartOfFile);
@@ -247,15 +295,31 @@ public class CasIOUtils {
     
     DataInputStream deserIn = 
CommonSerDes.maybeWrapToDataInputStream(casInputStream);
     if (CommonSerDes.isBinaryHeader(deserIn)) {   
-      return casImpl.reinit(casInputStream);
+      Header h = CommonSerDes.readHeader(deserIn);
+      if (h.isTypeSystemIncluded()) { // Load TSI from CAS stream
+        try {
+          ObjectInputStream ois = new ObjectInputStream(deserIn);
+          CASMgrSerializer casMgrSerializer = (CASMgrSerializer) 
ois.readObject();
+          casImpl.setupCasFromCasMgrSerializer(casImpl, casMgrSerializer);  
+        } catch (ClassNotFoundException e) {
+          /**Unrecognized serialized CAS format*/
+          throw new 
CASRuntimeException(CASRuntimeException.UNRECOGNIZED_SERIALIZED_CAS_FORMAT);
+        }       
+      }
+      else if (casMgr != null) { // if TSI not in file, maybe set it from 
parameter
+        casImpl.setupCasFromCasMgrSerializer(casImpl, casMgr);  
+      }
+      return casImpl.reinit(h, casInputStream);
     } else {
       // is a Java Object serialization, with or without a type system
       ObjectInputStream ois = new ObjectInputStream(casInputStream);
       try {
         Object o = ois.readObject();
         if (o instanceof CASSerializer) {
-          casImpl = readCasManager(casImpl, tsiInputStream);  // maybe install 
type system and index def   
-          casImpl.reinit((CASSerializer) o);                  // deserialize 
from object
+          if (casMgr != null) { // maybe install type system and index def  
+            casImpl.setupCasFromCasMgrSerializer(casImpl, casMgr);  
+          }
+          casImpl.reinit((CASSerializer) o); // deserialize from object
           return SerialFormat.SERIALIZED;
         } else if (o instanceof CASCompleteSerializer) {
           // with a type system use that, ignore any supplied via 
tsiInputStream
@@ -331,7 +395,13 @@ public class CasIOUtils {
           serializeWithCompression(aCas, docOS);
           break;
         case COMPRESSED_FILTERED: // Binary compressed CAS (form 6)
-          serializeWithCompression(aCas, docOS, aCas.getTypeSystem());
+          serializeWithCompression(aCas, docOS, false);
+          break;
+        case COMPRESSED_FILTERED_TSI:
+          // Binary compressed CAS (form 6)
+          // ... with embedded Java-serialized type system
+          serializeWithCompression(aCas, docOS, true);
+          typeSystemWritten = true; // Embedded type system
           break;
         default:
           throw new IllegalArgumentException("Unknown format [" + format.name()
@@ -343,37 +413,13 @@ public class CasIOUtils {
       throw new IOException(e);
     }
 
+    // Write type system to the separate stream only if it has not alreay been 
embedded into the
+    // main stream
     if (tsiOS != null && !typeSystemWritten) {
       writeTypeSystem(aCas, tsiOS);
     }
   }
 
-  /**
-   * Takes a serialized version of the type system and index definitions as 
represented by
-   * the Java object serialization of the class CASMgrSerializer, and reads 
it, and uses it 
-   * to reset the provided CAS to this new definition.
-   * 
-   * @param cas the CAS to reset
-   * @param aIs the stream having the serialized CASMgrSerializer
-   * @return the initial view of the new cas with the type and index 
definitions installed and set up.
-   * @throws IOException
-   */
-  private static CASImpl readCasManager(CAS cas, InputStream aIs) throws 
IOException {
-    if (null == aIs) {
-      return (CASImpl) cas;
-    }
-    CASMgrSerializer casMgrSerializer;
-    CASImpl casImpl = (CASImpl) cas;
-
-    try {
-      ObjectInputStream is = new ObjectInputStream(aIs);
-      casMgrSerializer = (CASMgrSerializer) is.readObject();
-      return casImpl.setupCasFromCasMgrSerializer(casImpl, casMgrSerializer);
-    } catch (ClassNotFoundException e) {
-      throw new IOException(e);
-    }    
-  }
-
   private static void writeJavaObject(Object o, OutputStream aOS) throws 
IOException {
     ObjectOutputStream tsiOS = new ObjectOutputStream(aOS);
     tsiOS.writeObject(o);

Modified: 
uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/util/CasIOUtilsTest.java
URL: 
http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/util/CasIOUtilsTest.java?rev=1755934&r1=1755933&r2=1755934&view=diff
==============================================================================
--- 
uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/util/CasIOUtilsTest.java
 (original)
+++ 
uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/util/CasIOUtilsTest.java
 Thu Aug 11 10:54:51 2016
@@ -23,7 +23,6 @@ import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
-import java.io.IOException;
 import java.io.ObjectOutput;
 import java.io.ObjectOutputStream;
 
@@ -100,6 +99,11 @@ public class CasIOUtilsTest extends Test
     testFormat(SerialFormat.SERIALIZED_TSI, "binsp");
   }
   
+  
+  public void testS6p() throws Exception {
+    testFormat(SerialFormat.COMPRESSED_FILTERED_TSI, "bins6p");
+  }
+  
   public void testS0() throws Exception {
     testFormat(SerialFormat.BINARY, "bins0");
   }


Reply via email to