Search in sources :

Example 11 with CmsDocumentBlobSegment

use of gov.ca.cwds.data.persistence.cms.CmsDocumentBlobSegment in project API by ca-cwds.

the class CmsDocumentDao method decompressPK.

/**
   * Decompress (inflate) an PKWare-compressed document by assembling blob segments and calling Java
   * PKWare SDK.
   * 
   * <p>
   * The DB2 SQL returns blob segments as hexadecimal.
   * </p>
   * 
   * @param doc PK archive to decompress
   * @return base64-encoded String of decompressed document
   */
protected String decompressPK(gov.ca.cwds.data.persistence.cms.CmsDocument doc) {
    String retval = "";
    CmsPKCompressor pk = new CmsPKCompressor();
    try {
        StringBuilder buf = new StringBuilder(doc.getDocLength().intValue() * 2);
        for (CmsDocumentBlobSegment seg : doc.getBlobSegments()) {
            buf.append(seg.getDocBlob().trim());
        }
        final byte[] bytes = pk.decompressHex(buf.toString());
        LOGGER.info("DAO: bytes len=" + bytes.length);
        retval = DatatypeConverter.printBase64Binary(bytes);
    } catch (Exception e) {
        LOGGER.error("ERROR DECOMPRESSING PK! " + e.getMessage());
        throw new ServiceException("ERROR DECOMPRESSING PK! " + e.getMessage(), e);
    }
    return retval;
}
Also used : CmsPKCompressor(gov.ca.cwds.rest.util.jni.CmsPKCompressor) ServiceException(gov.ca.cwds.rest.services.ServiceException) CmsDocumentBlobSegment(gov.ca.cwds.data.persistence.cms.CmsDocumentBlobSegment) ServiceException(gov.ca.cwds.rest.services.ServiceException)

Example 12 with CmsDocumentBlobSegment

use of gov.ca.cwds.data.persistence.cms.CmsDocumentBlobSegment in project API by ca-cwds.

the class CmsDocumentDao method decompressLZW.

/**
   * Decompress (inflate) an LZW-compressed document by assembling blob segments and calling native
   * library.
   * 
   * @param doc LZW archive to decompress
   * @return base64-encoded String of decompressed document
   */
protected String decompressLZW(gov.ca.cwds.data.persistence.cms.CmsDocument doc) {
    String retval = "";
    try {
        File src = File.createTempFile("src", ".lzw");
        src.deleteOnExit();
        File tgt = File.createTempFile("tgt", ".doc");
        tgt.deleteOnExit();
        FileOutputStream fos = new FileOutputStream(src);
        for (CmsDocumentBlobSegment seg : doc.getBlobSegments()) {
            final byte[] bytes = DatatypeConverter.parseHexBinary(seg.getDocBlob().trim());
            fos.write(bytes, 0, bytes.length);
        }
        fos.flush();
        fos.close();
        // DECOMPRESS!
        // TODO: Trap std::exception in shared library and return error code.
        // The LZW library currently returns a blank when decompression fails, for safety, since
        // unhandled C++ exceptions kill the JVM.
        LZWEncoder lzw = new LZWEncoder();
        lzw.fileCopyUncompress(src.getAbsolutePath(), tgt.getAbsolutePath());
        retval = DatatypeConverter.printBase64Binary(Files.readAllBytes(Paths.get(tgt.getAbsolutePath())));
        // For security reasons, remove temporary documents immediately.
        // TODO: pass bytes to C++ library instead of file names.
        src.delete();
        tgt.delete();
    } catch (Exception e) {
        LOGGER.error("ERROR DECOMPRESSING LZW! " + e.getMessage(), e);
        throw new ServiceException("ERROR DECOMPRESSING LZW! " + e.getMessage(), e);
    }
    return retval;
}
Also used : ServiceException(gov.ca.cwds.rest.services.ServiceException) FileOutputStream(java.io.FileOutputStream) CmsDocumentBlobSegment(gov.ca.cwds.data.persistence.cms.CmsDocumentBlobSegment) File(java.io.File) ServiceException(gov.ca.cwds.rest.services.ServiceException) LZWEncoder(gov.ca.cwds.rest.util.jni.LZWEncoder)

Example 13 with CmsDocumentBlobSegment

use of gov.ca.cwds.data.persistence.cms.CmsDocumentBlobSegment in project API by ca-cwds.

the class CmsDocumentBlobSegmentTest method testPersistentCtor.

@Test
public void testPersistentCtor() throws Exception {
    CmsDocumentBlobSegment blob = new CmsDocumentBlobSegment(docHandle, segmentSequence, docBlob);
    assertThat(blob.getDocBlob(), is(equalTo(docBlob)));
    assertThat(blob.getSegmentSequence(), is(equalTo(segmentSequence)));
    assertThat(blob.getDocHandle(), is(equalTo(docHandle)));
}
Also used : CmsDocumentBlobSegment(gov.ca.cwds.data.persistence.cms.CmsDocumentBlobSegment) Test(org.junit.Test)

Example 14 with CmsDocumentBlobSegment

use of gov.ca.cwds.data.persistence.cms.CmsDocumentBlobSegment in project API by ca-cwds.

the class CmsDocumentBlobSegmentTest method testConstraintDocHandleSize.

@Test
public void testConstraintDocHandleSize() throws Exception {
    CmsDocumentBlobSegment blob = new CmsDocumentBlobSegment("0131351421120020*JONEM 00004", segmentSequence, docBlob);
    Set<ConstraintViolation<CmsDocumentBlobSegment>> violations = validator.validate(blob);
    assertEquals(1, violations.size());
    assertEquals("size must be between 30 and 30", violations.iterator().next().getMessage());
}
Also used : ConstraintViolation(javax.validation.ConstraintViolation) CmsDocumentBlobSegment(gov.ca.cwds.data.persistence.cms.CmsDocumentBlobSegment) Test(org.junit.Test)

Example 15 with CmsDocumentBlobSegment

use of gov.ca.cwds.data.persistence.cms.CmsDocumentBlobSegment in project API by ca-cwds.

the class CmsDocumentDaoTest method testDecompressPK.

// ===================
// DECOMPRESS PK:
// ===================
@Test
public void testDecompressPK() {
    try {
        final String docHandle = "3215511513071620*CWDST   00002";
        CmsDocument doc = new // id/doc_handle
        CmsDocument(// id/doc_handle
        docHandle, // segmentCount
        (short) 2, // docLength
        6881L, // docAuth
        "CWDST   ", // docServ
        "D7701V01", // docDate
        DomainChef.uncookDateString("2016-07-13"), // docTime
        DomainChef.uncookTimeString("15:51:15"), // docName
        "ininv.doc", // compressionMethod
        "PKWare02");
        doc.addBlobSegment(new CmsDocumentBlobSegment(docHandle, "0001", "ed5d075854c7f69f2decd2165604448aae800a28b04b172b0211548a80d8b02cb0c02a2cb81425b16057d4276aac2116c41215c5d8c58628686cd800638cd8d56882259658f67fe616b82ca09897e47beffff6f8fd76fa9c9933e7ce9d997b06cbcfb7a85ebbc3fc2652a31e88833ea874108f11c702b8d10121421e54dc07954a85a35c012a0dfd57d1e3f5c5889fa5c345a8c6e848edc8026923745c072103143d3a7ab483a983296a403a5c53e4688650c00412622a7e310b354a2a95e127fd34ed257e4594fa6137a625e9ff986b5c8f1ba995e3a874a6eb05ee762a7f09b89d19e941ad201d7af01b15c6ae1db8ada8cad5dd67e08e0237cc04215b70334cc87a6b40626c9c4e49aeb9ee0c90681e14ec6881d0062ade043524badfd98d2552ed62ba743eda7d66da787db4dbcab87e3a0e5f03970ff2c145e751e5d55d5cffe846ea510f9f3125e545d3bc4634ac3944f7a746adfcbc4f84ff5da2eba3fb43ebdb1a9fdc3f065fbf50fb0cd07af5c2849c3dd5dbb1cf94d417ab56e41384f58f59ff590bd2b583702c23fc57f787ae575d1f309fce8de80f73bc3fa6874d8d5753faf8ac99fd6a6eff9be247cbb9a974f5fed0e3abee7e2afdef72e9f1fa54fb3f777c3e578e786ed6d147c8de08216fd07a2d6404bff88da2a1ff7c0a0c8ef40f8f08ece3131118122c0af6090b035fa43f9f2f8890a5a6891452a5529a26cf9009048244796c9c8023107005d4af6f823c31d62ecc3fd85e142c4d92f17d0302fbfb8944814e7e4e221b3e2681204c1627832a1245c1e949d132a5375fe2e2eaeee8e12a717174f774113bba89c52e6277099f5f9bd14f9a26e38b3d9d25126717b1c40357129e0671a2e43891af34511e97ac54c8a5a2009934312d412455c48a06c912e3a44a99c8275ea688c91409fc642952655a924c9186cb8427c7c8a1da709932431e234b15097c07854345a932519054218d9711f9c23353d36449fcfad2080cfe22242c88f0f37d931571f258c88aeb922b44d298986465ac541123138d93a7250842650a48f04d8e9501a7983479b2422491483c3c9ddc71139d939522c1a0405f3a2d55e4e5e249b45d22f67217f381b123f0f60bf11589c26419223b898b7317577b3e3f141a286a99827f8d2526b83b2d15e949389c8a23b07004827f4b01609dd70a6006680d3007d8013a019c01628004e00a700378003c015d00de806e80618011805180b1805980d98039806580b5803cc03a403e603dc000d6967680998059807cc07ac066c016c0f38777af5fb97ef6c4a1fde4bf6dd7f3579eb89e83717dded4cca9f3a68e993aa6c94e5970f00a0499268c34df827cfb1aa090be6c340030509bd5828c75d79e42471a35cc8778645c5d9a10d23890c661c4e9d7e5af8dd3ae8b3321e3ba6a4f6166859a2f5bed42c8906e230e41bb0c4c139e688fa8e302e1f8cc16f5c2e10621f5c2b8f6da308f2c5fd712b3ba9698d5f699684c5d4a7ba436f6f600076afcf1d8bb5063ef4e8dbd1735f65da9b1ef0f180a78c914ff216660e7bf1bd8f10f05b6300379a8f9a423441c5bb6a92d2b300eaffaa4b66c9e10d506892d32de494d4f60190286034600f026644c2ca102b6ac56746ef6d244c4716369579823d606d5047bc4abb0e7410213c62fe1c7bc02bf615516a463493a56a4e356c1432c5d4e2292bee418a1383756661a560d6804c796c568270bb5184a3dbf5180e1d4733c927a96f7303b59c80c6c6406463003fd99812fd0e7919610a4640012326019915ec3e91b541d62f55988155aaa8dbba6cf62219c3e0212500096e0c5a6242846ec752aae7912c8506ade80174fde60d349c995e043cab6d66b59e7b5aaf332e56c88e5fc094d20da9bf01fd45ec4a3e76ce67cad3e573f63327dc00cacaeb7e16c325b243310c10c84a1e61016134b48c9af9cd5b4fc425b1bb5c1cfcc3162f5493f2fa4fc46ebd1d5a93d477f4e7e075b63f9112dead6ac16d56b0dd52266f8af6991ae10b5cc0f40c6805abd13105ad9201ab41369e3f1bd0c78ce78270700c630decdab00ab0147006f98e3d274a08619b8dfbcc0dc3f51dbdf45c3f0b8c6b29b18d72f10679daa85e0a9d57307c45308f4d5cfbb78d5c28671ec06f9a8d1d6a707931cf17a41cbfa41abfac186f38fa1fafcd370cee7193266243dbcd6da0a2800ec007c0f28021c041c021c061c0514038e014a74c873c1df6e5c29bb5206bf87f6ef2e401a6a48eaeb397addd76065c958317e6cdddad82ab5cd47f2cf74602111b98664a6240520ae02904ee4101c69627cd731bbb2b6c939bf5e60c92765f25f4d8dade188379321355f3c6be67cd1f0dd5e2d6c18c71634f1beff0be70ba4d509198b75db16963b8b0aabbbb72b2c675b036c720a59b680f685b0392c2c649901f473cad94843ffdf28ae9ec6b2961aa176198895c072afd0422c4e85bd0d842aecbd23f5686d2694b015deeed1599c2bf4886700a9f01286d0312dfcaaa9b7f74850e36388f9b0693e527370596c8edc10f3939adb64b0d872c38f70ad2bc0e447e8f43fc769911aa783ad999c8e71c982a3f530a7635ccc69b4de4738d5152024caa2254a84d88c100bbfd51b4a9b58fffdbd6d62d76b13b75e9bf49b6cd3bcc6468443b749212059540bc16573386c016e9b4280db562db4c96043cc475ad8b0386e1b87909ebe5a6b88519bf4cfb6a601ffcf7d4235a4210d6948431ad2908634a4210d69e8afa1115c236404c7587ab083e7d7c672f16761b41cb0ea13f0e07d1a19ec4fa3a9b23d3e92f6776013a34fa6cde8dfbe66ca800938374401ac7fb65fffa928e490ae0bc00c647914c2e5806a400d8750452404880062402f4028601420059005c8e1365d0ed76b073a5405f27ec0faf3f5fcaf97c316d18301af01dad8a204100998c426ad574706b0b849013af06941879b0a480b202d00c1c861d453151b5c7d61edd1360a46c948899290142522d24a5a585b03b3747df2433ea267aab5e0d67d493385900c4e31a5281dea4a4322140a7e25209ef84d819347111822242305a4921fa3e5bd9eab7682ab4f9db08b79faf0555a8aa2a10619e4aedf3a11c2e73dad5e72e8b324da431da4e3f6e34fcb76688ce885aa18db8ad7d6cb27ea128155841ca512fcd9489f487343a25e2cf864eec6e80b8f686732e493017f5c8d211280d9031c3c1d6d479cbdb9a1b6508acdaa5f2a00f24bc136982e25542be58d3e18b2c02ad39be24d985a40de64340eda2621ea6801df86c55092f9a9684cc01d6e683f0ed718d2f1fba01d9a9a7db0e51fe0b3846ab179f030308b4b03a3b891119929b2d4e14ee39312b72e3c3dba442cf47f35e3c3b4f23d55ca0376ebabcee5058e9bd8f9a2a1d99d1d8ea3174c77d3397563dce37da107b41dd36c84d1e7567c3570db82db6b0ccc163f8f78387044c28cd889b7376d79f1f657fba24a074928675ac7ad2f74168fa8ac1c74f75763b1fd8a0d110f5775e966b63871814dfe4f7cdb4cf944cb2977cdbbb63c3aa9d7ac7b7bec7e9df7fbf180dca7c7cbd3df38e8f955aef972da4967717659e19a9ab76ff46db396eb0dde52e62a1d9a775178acba73a19f983f7ad203d71b7bce45df7e32c958de635aabaab35cd72351a37eeff9c8f93e6f5895e1d63d7d1ede8a9a7cbcdd7bc76b61639c16a77eb85c94e364e6b46cef2ee9bd23053d6128542a0eaa2faaf5151bef1f059f07a462f518a99425a63a3be1dfe90bce8388f467fd36e3d0b40b13075c2c316b9fe1bc3ec7d779dd4474d36e7282b5c5358b5fae8594f1748bb4a7e7fff6eabbee1fb6cd7d73f3ebfb22d3959b7925b77c7b9e4eb899d1fdc8e4a9a766e46f6caf3d6c7ccacc755f5ddb3df260e88575ddce4a2cd607ec112f31329c7d35e460d8b6deb1174e092ff6f5bfe6166d3b79e3c2b1232bdb2e5fd5badaa3ffa5df4dc32a3d476d5bb0e9946a6789f8ccaa90e2c9db3bdff5e72a3cbfee2fbf13bd7693f3edf043399b649b2fb729dfbdef4dc5fb463b3a2673a9e9346c0f8cf5029096002695ce8c5fd2cc52899543ff4c906e8948d8ebe6c4b5e372ae7ac614d9f9477f7f7a5bd14be49b6bee53b6e6e2ea6b95776f4ff33c77c3f8ca37fd04433ae7f205d9b2b34eb3f7d64ce8bcd162d38f0196273a27de2c33b9f770bcd9a95df35bde083c993a60a2cd959c1905bbaf8b2a7677bad2eeb7ced747ecb71ddd7d6e9f410f2ebdb2bfe5ff4ba70eba6cafc61bbf7477c1ada5f08a08b5205ff70d1a2fc1cd7e3c2424f99a87f111c3aa71a2b4e4988e19e6fcf4ecaa1ddf3806591c57cc6a239fb3b42a34afd7c5c089163fdece62951c90ce32a94a9a251d36c5b46afd5bb7abde8956e5db0bfb842d3a3178c4228faaec821eb6466f6ebf55b569fbdd96ca5fcbf4ad8cdad987fc38e2bdf2acafedd3cc5e8b0b9f5c6ff3d2b92033c02197bbfce9f45d87ec17febc7bfeab1b45d99503fda2a78e9a685d39f6dadcaffb562e5b9a6f583278c43dfbc0518a33fef34c0e66a7d80b5f6b3f284d94ef8f1c363c5b12d4edeb6ab3933f9b2ff82ea43c74f10b0fe5adeebced73167d79343e7a4d60cbf819c53c7efafc9cf0ab32b65574c5cbac90a30b66de39fc4c581256ec776dcb8ad57b778d4dd7d91e3f77f9d0c23dbbb6254fba7a20d127a530717c764a84b8e0954541a7615a1339a346b7a9fce5f70387bef4398f0a7f9bb62172a9cbd92f2617fc7c4abeb4d7cbb1ab32f6566c758f9a30e7c30fb9670a82375e4a947d3f388f17dbd622f5f5ee1f47c7a45e2db6c839e179bf66feb9b8bd458faa05276f0dba5ff3be53c19599733dd7ccbe7067944181d58fbfc55fd63bb97ce793beafcd8f568e6e3d61e6d404bbbc7e3bcd9efb3966ef36bb713b0f26cad8c117b8dfc9fb9656cdb2fbf5d6785bbb0afd1aefe2f5adbbde39bdbfdd59bdc091e511bb0f1986ebb796ac7bf5e8cdabedab7afa9719aeb2eaf9fae1eb9b25b7f93d87f63eb7392977fadd81ce47de3f3e5fd6765dcf55939e3fbbd0eacaf821a5aa3f4a3a1e79f72ed35d7831bec3b9b9ceabdfbd7c7c6aeef61eefdf17f531a9099ad247f63aa7d42fef9b3bda4f9e9b19bb468e6ddfd166ec619312ed4bcfb2cfda7eed55bcb29fd6fb55d9962fcedac7ad1867d9c5fbf8ee6a2bd6dd75bae3272acfb7182f9c3327cf24775c5e15eb57e539efa888a1d23ecf1d56647a051e1b7d2f3aacf449cc84c1278ae6b62c3b72285037ddd5b05f9fa70a3f4bc92bb3606383c0dec61753df65e5e83ef935ec5155fab23fa6f6eb11f9c0c9dfaa7fa720977c9b8e2be3e6ee91eb4f5a11f950ff4346e2ceaff8e95e5b2e7e39d7f240c049dd330ed3db1add5bfed47b959de5a08596b7962f114ce26cd9d4f76471c46b595488434d5a80599f4359014376df5b8a26f60bbe511cbac3e1fae1d31b76cc35ce6e1371e1e0942ece367b5ffb781e1b3b748655b9ad434ccf1cbe30cfecc9d8815a37ee2a663e1857c309363df0d6a0fdbf8a42b6f3f6ca1fcc76d31376776df1e3b2d0cddfea5a5ebaf3db0f9275a10b92f4a3a2bacc64bfbef54b99c9c2dff798de0aaa5abcd945fad6efcdf0e95d87a41545715f3cd9"));
        doc.addBlobSegment(new CmsDocumentBlobSegment(docHandle, "0002", "be7fd8f8458f5b683f7f33fffef0531307290fa9269c1afef5f978c75d3b7fd4950d7a25d863efe1a83c58e8db26bc9437fa879302f9ca589db77ee5b37c0e9dcb35081c1bddd766fc994707a6e969798cc9a97e64b339cf677a7842e12fab3a18fd302fcd6ec00fed2d1f9f49699f347f5687e15763a4e16dcd12bbe70c7ef2eca8c1f60737df4585e6488a82120c567759671254bdf54ce4b6583f9f2795d2c8cadedfae18767d765cdf6f4b0a425b4ff0da6eae6f5a319dc7f5b9c68e1c31e3f9fe3801bfe59980354f14af7efec9b154afd543ebd637b3627b5cfcf2fcdb4d8adcafcbb2f7eb64557d57b3b0c79d6fa3771bed5ddae12defa773b7f25d8a4ad919fb5ffd7cbc5f26f7fcc1fce72ffdbcbfcfcfcdedecd32769fb9528c59727cbe4d72c4a5698b6b96d7cd029fdfcac21daad7c0f1b793c0e098a5b7cd735798ff2c44fb69b4adc67ec7e9b7b2cd82a6046c4b0c15f78b89d89306577be90bbf5dde920f12ffef6a36cdebbe70f1e326dd4ebca7cd4f5c0b6f6b7254f075ebdbabe4552d7b72b9784f518e0a79f57ad3dbfcaef714cca118381e51dd7186debd0dfbfdc3965c18682a40d3fddca6d3ffccdcb1faa1f7bc5c9a7ef546e09773b1fabe799197572d4cf7d6f4d512cf9dee2eeb9edd9816ff4c2d65b96aa5c07be98c4f6d4ea34e5659661e53eb6cdb7db9316e8998cddd45beef7fe705669f16583d9a6fbe6ce906b3becebefa1d2ea725995746e887987829b4737be94cfe6ce781fe03f35a7bb5dbf0e7f04b78b3cffd2a9df22d9f4fe7e4b8e2ff9cee42b3f031d8b47e6fb36bfca30f4173edab0325676b43ab874f5db55b272bbcb41c15d6ee49a873d3ee4c1fff0f05c590757bbbb15d24be5775e3afb6dad1af8e4cb9ddd6e7c753afbc19c21df5c39b993bd7cc99ea9914b5f6eb73fd665efd0613beeb98d50dc3b36a5d57df799c579edfade3ccc7fd8b35035e0a6eb5b59efe44dbe870d779b14cfe205e91fe3e5fdb128a95b8e534e460a77fe62ab5dc5f981432ec5152cde33f4f09091291b87d57497263a5e1df26e62704cabb32b4e9f3b7562ae5b469cb4ac222371ed77c53b3b861bcf2c7de353ea553ae1a2c3e4f45bebbeaa7ee0b8efc66a71fb2071b167fb296b7fb75cde2debce5ecbb317e71f418dbdc904177256efc1a6eff09eeba8f62623d71eea2f636a2d12a47b4c6c3cfdd5d471dac9c9970e081776b83ebbbce03267fa1d7781474fdb018f9f08b675d6769a253dbc425eb4ecdb532d635c7e96246c36d7f67eb864eccae2a47d8fffd52bcc3478ced5aeb185a3a6fe2bd9f38949fcc27e76411d6cc3ec9c24cb95061dfb2ece2dcf8e7893b5cd6bdd82c83bd6eb36f89c2c2a0f78953e71cdd36f58134ed81e8a167e7505b55e1aba52b5f3bd97f99c78e7b6a6c33f0cf049bd3a43cb2eaff44cb5cd379bfb737f1876e0c0f11bb55d67b11d51d3eb523563be86ab54f50ad4576b75d489556feda65e507df5c3b0d6617f7c2da45e93fa52a48e2eb09b5a98a8d7a1ae0475f48d4eb35522b49f168fdc2268a1e150d1525d1cead613d2451932652adc5fe96e2d71125b8be0ba4d72ac5c11dfdd7a60c4178e5ed6a2d434b8d3224d4c56c8ba5b67ca52ad7bf610e876937ac7242a83a42922a84091ea2ded6e9d909696e2edec9c1a03eca5a94ec9293205a4c1c59e24691a0495f1ceb14ae938a8382911ee00893d9c93a47285b5283a5ed2dd3a314d622d4a1b0fbed831121ce782e35c709c0b8e031fdccd81d1861c94878e71a1636af3b8d231ae748c1b1de346c7b8d331ee748c071de3612d4a48942bc6408fb0632d8a4b4e0c2023689fb5730f2cbde3a45e99312ff071888d17096cd0a1cf403a8545ac3a2c6191d775b650267ad8a84097bac2339432d9c7e6bc47a8745c2f9f4c26eac77a9d06757c0998009802980b984fd5ddb29db1ca24aba539fe05739e1a2f42717835b8d16c6d729bce6200877ba1364f85449f889ea1acac2cf40aefe60d11bb6611c23eed1a6dba10ece9c140b5468cb0cbadb123e2756a84a821b1912e510e9f4f6851f97b836b44c513c62706088523bd9a36e03dc2c2bc4e13bb62153ea3405c0eee744f0e69a4d7a2864bb542a5e212028946635010ec82c7a07eb03b8f85fdb95e237181f0cb8c0f83b38644d8d5474348b741bc1fecddc114104501c60296014eb0ea8cd8d9d4b03795078bba35c09c384f80c907e08cc87bc12e54fe595499b5807c285700d80138cc22ebe180c868b0eb814f01a9d5dc542d7cb5321f6bdde7b7ac61bbb4c8e12614f62ea24fa211c226acf8ea13b623c386ae84192d432aa8766459905f17f9c0a94f0af28571c1e722f8342516e5fc9206792448d58b2da48ae0677230d69a5e6451fcb40c8463a231007c34a22062b5511d91b9486d67d33acff0e30ef469930399d86c1e478b0b16405c9503aaf6194fd8d8225a39c96b1072386292818ae1032719711413067cf1b19302db13413d2012302662f1796c2d3e62fe710692b2f04f38ca8432d150121f56b93a11dcf5785c362682bb6f23dc7d403872ea80ab6777a20c9fa3c3666bb1b94d96f1051ee944397cd044b71aea227bccd5821ef338c0938daa55b6a837ddccd5b5e5a5444b49ce227870f0e0e0eb30d6582958b3cd22df611bd30422ff9de83e7d9e8de9137fffab6bedb50805c422b027869a4528c634c46a104bb1422b6c23df091b3942d45073683def287f17da050a6624c62ad79af8c303ada9c7dd99ca35a545a7db7fa6763c963ae48ce232ad051ea71b37e827ab310a0825acaf6b547088690bfe3bdcda0bf7936997093c55e079c3a5d1dada35a215424b72a221693c059ad668611e4684df0ab4d81ba66eaccb31a0fd51f01ccb40ab53e04922a79a28d06e05810c905a32e47222dc34d40a5e2638163ff36990239e2821278ea6f1d3848fad95541cce451fd4faa241f06209074e4cff5f441f60e2e2b1d88d5eb9aa9eb1fad99b9004e19685daa853c79d57c578ce818416547a0e3598cba9b7da3e6abe3e4e4d8597a9c7b39a9ad35f500b112e14c6e214b2c8058c985a74e37b5478f183bf8de123f40816f18a47a3c0c5f6c5786210829bc22257f9e359247fac106da8f753a02203eeadcbe3a5c415ec60fafa3a914e0f711baa3dbe83fcc223a830330db741ae902b326293633e96df1dd5f10d92c728935393e3d24421717170cf5c3408ae87130b24fca72a66f641b47fe8420fed8c7d2cc26f37b95be24f17487fd4a65bf8af867028d97228d971a8e98d8334a4210d6948431ad2908634a4210d6948431afa7bf6ffec2b67afe43a5908172f83fd7fe737dbc4786f4cedd1713a3ebac3fbf2146abf3f9bfa989183c833027c2e80ffc8e21aeae3c326eafcb21091fb777c5e80bf741d45e47eff24b5f77e8ceaefeb7199f0105f518a32395e294d4a9229c9fd30bd4fa65de7da7db27eed47bca6dc3642b2dcc7ce0cb0c5229bdae3e37e45c8d31265b51c35a4210d6948431ad2908634a4210d6948431afaef21a6551a97dac7ab1b0eea52fb667deafffa31a0f6fd426a9f6f44ede78da974536adfcfb417b3a0ec63ada8fd745be2661db659c5e63f64395b70db033a20d27ad58efaf6ed40a5e3ff85c211e0c4b03b9350366038fd3dc09df2d3d0d0c7298cba712842fec40d492598937d0e99222d165d1761d04a59f61c6de42f40afc9d844fccf289eb4ed1a71a7131bbc483f8b279374e13624b33fcd29236018d24918373fffd45ff904fe2cea99692e7f13c6ffde3188b86b1a0b72c0a642e98449207d53b539640efcd9d473db5cfe981ccd48570b8c8930d724c2fc289330518aabbdff4a9b27354d767f42fe360cf96b35e8f9e7b5c70bf87319ffef5873f87762f06711668dd8802b04b46074738ad72323c2f8f3f3fa8fe9f39eb28fd39fe1cf9cff35f3e4ff2eb160f439baa40ea9cfdd1d9bb26b1375f174847b19ae22bfe49874fcffa7104b84a0709c0651c4b385fd4e74ba93177ad1e5fbb19fab9c1afadbe9ff00"));
        // Don't call statically cuz you want to construct the DAO and test.
        final String base64Doc = cut.decompressDoc(doc);
        final boolean answer = "0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAANAAAAAAAAAAAEAAANgAAAAEAAAD+////AAAAADMAAAD////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////spcEAB4AJBAAA8BK/AAAAAAAAEAAAAAAACAAAxAkAAA4AYmpiaioWKhYAAAAAAAAAAAAAAAAAAAAAAAAJBBYALRgAAEh8AABIfAAAMAAAAAAAAACTAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//w8AAAAAAAAAAAD//w8AAAAAAAAAAAD//w8AAAAAAAAAAAAAAAAAAAAAALcAAAAAACAGAAAAAAAAIAYAAGMTAAAAAAAAYxMAAAAAAABjEwAAAAAAAGMTAAAAAAAAYxMAABQAAAAAAAAAAAAAAP////8AAAAAdxMAAAAAAAB3EwAAAAAAAHcTAAA4AAAArxMAABQAAADDEwAALAAAAHcTAAAAAAAATRcAADgBAADvEwAAAAAAAO8TAAAoAAAAFxQAAAAAAAAXFAAAAAAAABcUAAAAAAAA8hQAAGAAAABSFQAAJAAAAHYVAAAUAAAA8BYAAAIAAADyFgAAAAAAAPIWAAAAAAAA8hYAAAAAAADyFgAAAAAAAPIW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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABeBBIAEgABAAsBDwAHAAAAAAAAAAAABAAIAAAAmAAAAJ4AAACeAAAAngAAAJ4AAACeAAAAngAAAJ4AAACeAAAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAAdgIAAHYCAAB2AgAAdgIAAHYCAAB2AgAAdgIAAHYCAAB2AgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAAPgIAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAAKgAAAA2BgAANgYAABYAAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAALgAAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAABoAQAASAEAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7/AAAGAQIAAAAAAAAAAAAAAAAAAAAAAAEAAAAC1c3VnC4bEJOXCAArLPmuMAAAAAwBAAAMAAAAAQAAAGgAAAAPAAAAcAAAAAUAAACIAAAABgAAAJAAAAARAAAAmAAAABcAAACgAAAACwAAAKgAAAAQAAAAsAAAABMAAAC4AAAAFgAAAMAAAAANAAAAyAAAAAwAAADsAAAAAgAAAOQEAAAeAAAAEAAAAFNPQyBwcm9ncmFtbWVyAAADAAAAAQAAAAMAAAABAAAAAwAAAC8AAAADAAAAAAAMAAsAAAAAAAAACwAAAAAAAAALAAAAAAAAAAsAAAAAAAAAHhAAAAEAAAAYAAAASW52ZXN0aWdhdGlvbiBOYXJyYXRpdmUADBAAAAIAAAAeAAAABgAAAFRpdGxlAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAD+////DgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAAP7///8WAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAA/v///yQAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAD+////LAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAAP7////9////NQAAAP7////+/////v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1IAbwBvAHQAIABFAG4AdAByAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAUB//////////8DAAAABgkCAAAAAADAAAAAAAAARgAAAAAAAAAAAAAAAKB2qPpY3dEBNwAAAIAAAAAAAAAARABhAHQAYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAgH///////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAABAAAAAAAAAxAFQAYQBiAGwAZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgACAQEAAAAGAAAA/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAADNGwAAAAAAAFcAbwByAGQARABvAGMAdQBtAGUAbgB0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAAIBAgAAAAUAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0YAAAAAAAABQBTAHUAbQBtAGEAcgB5AEkAbgBmAG8AcgBtAGEAdABpAG8AbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAgH///////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjAAAAABAAAAAAAAAFAEQAbwBjAHUAbQBlAG4AdABTAHUAbQBtAGEAcgB5AEkAbgBmAG8AcgBtAGEAdABpAG8AbgAAAAAAAAAAAAAAOAACAQQAAAD//////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsAAAAAEAAAAAAAAAEAQwBvAG0AcABPAGIAagAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAIA////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAA/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wEA/v8DCgAA/////wYJAgAAAAAAwAAAAAAAAEYnAAAATWljcm9zb2Z0IE9mZmljZSBXb3JkIDk3LTIwMDMgRG9jdW1lbnQACgAAAE1TV29yZERvYwAQAAAAV29yZC5Eb2N1bWVudC44APQ5snEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".equals(base64Doc);
        assertTrue("PK decompression failed", answer);
    } catch (Exception e) {
        e.printStackTrace();
        fail("Exception: " + e.getMessage());
    }
}
Also used : CmsDocument(gov.ca.cwds.data.persistence.cms.CmsDocument) CmsDocumentBlobSegment(gov.ca.cwds.data.persistence.cms.CmsDocumentBlobSegment) ExpectedException(org.hamcrest.junit.ExpectedException) Test(org.junit.Test)

Aggregations

CmsDocumentBlobSegment (gov.ca.cwds.data.persistence.cms.CmsDocumentBlobSegment)15 Test (org.junit.Test)13 ConstraintViolation (javax.validation.ConstraintViolation)10 ServiceException (gov.ca.cwds.rest.services.ServiceException)2 CmsDocument (gov.ca.cwds.data.persistence.cms.CmsDocument)1 VarargPrimaryKey (gov.ca.cwds.data.persistence.cms.VarargPrimaryKey)1 CmsPKCompressor (gov.ca.cwds.rest.util.jni.CmsPKCompressor)1 LZWEncoder (gov.ca.cwds.rest.util.jni.LZWEncoder)1 File (java.io.File)1 FileOutputStream (java.io.FileOutputStream)1 ExpectedException (org.hamcrest.junit.ExpectedException)1