Repository: commons-compress
Updated Branches:
  refs/heads/master 2a2f1dc48 -> 9db502865


COMPRESS-435 Replaces instanceof checks with a type marker in LZ77 support code.

Submitted-By: BELUGA BEHR


Project: http://git-wip-us.apache.org/repos/asf/commons-compress/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-compress/commit/9db50286
Tree: http://git-wip-us.apache.org/repos/asf/commons-compress/tree/9db50286
Diff: http://git-wip-us.apache.org/repos/asf/commons-compress/diff/9db50286

Branch: refs/heads/master
Commit: 9db5028656f9be41ae5809f88ddd4c8ac0b48364
Parents: 2a2f1dc
Author: Stefan Bodewig <bode...@apache.org>
Authored: Wed Dec 27 15:07:37 2017 +0100
Committer: Stefan Bodewig <bode...@apache.org>
Committed: Wed Dec 27 15:07:37 2017 +0100

----------------------------------------------------------------------
 src/changes/changes.xml                         |  4 +++
 .../lz4/BlockLZ4CompressorOutputStream.java     | 11 +++---
 .../compressors/lz77support/LZ77Compressor.java | 35 ++++++++++++++------
 .../snappy/SnappyCompressorOutputStream.java    | 10 ++++--
 .../lz77support/LZ77CompressorTest.java         |  2 +-
 5 files changed, 43 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-compress/blob/9db50286/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 9bd0a52..aad1964 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -56,6 +56,10 @@ The <action> type attribute can be add,update,fix,remove.
               due-to="Bruno P. Kinoshita">
         Synchronized iteration over a synchronizedList in 
ParallelScatterZipCreator.
       </action>
+      <action issue="COMPRESS-435" type="update" date="2017-12-27"
+              due-to="BELUGA BEHR">
+        Replaces instanceof checks with a type marker in LZ77 support code.
+      </action>
     </release>
     <release version="1.15" date="2017-10-17"
              description="Release 1.15

http://git-wip-us.apache.org/repos/asf/commons-compress/blob/9db50286/src/main/java/org/apache/commons/compress/compressors/lz4/BlockLZ4CompressorOutputStream.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/commons/compress/compressors/lz4/BlockLZ4CompressorOutputStream.java
 
b/src/main/java/org/apache/commons/compress/compressors/lz4/BlockLZ4CompressorOutputStream.java
index 9326023..2cce3a1 100644
--- 
a/src/main/java/org/apache/commons/compress/compressors/lz4/BlockLZ4CompressorOutputStream.java
+++ 
b/src/main/java/org/apache/commons/compress/compressors/lz4/BlockLZ4CompressorOutputStream.java
@@ -116,13 +116,16 @@ public class BlockLZ4CompressorOutputStream extends 
CompressorOutputStream {
             new LZ77Compressor.Callback() {
                 @Override
                 public void accept(LZ77Compressor.Block block) throws 
IOException {
-                    //System.err.println(block);
-                    if (block instanceof LZ77Compressor.LiteralBlock) {
+                    switch (block.getType()) {
+                    case LITERAL:
                         addLiteralBlock((LZ77Compressor.LiteralBlock) block);
-                    } else if (block instanceof LZ77Compressor.BackReference) {
+                        break;
+                    case BACK_REFERENCE:
                         addBackReference((LZ77Compressor.BackReference) block);
-                    } else if (block instanceof LZ77Compressor.EOD) {
+                        break;
+                    case EOD:
                         writeFinalLiteralBlock();
+                        break;
                     }
                 }
             });

http://git-wip-us.apache.org/repos/asf/commons-compress/blob/9db50286/src/main/java/org/apache/commons/compress/compressors/lz77support/LZ77Compressor.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/commons/compress/compressors/lz77support/LZ77Compressor.java
 
b/src/main/java/org/apache/commons/compress/compressors/lz77support/LZ77Compressor.java
index 5379259..082336a 100644
--- 
a/src/main/java/org/apache/commons/compress/compressors/lz77support/LZ77Compressor.java
+++ 
b/src/main/java/org/apache/commons/compress/compressors/lz77support/LZ77Compressor.java
@@ -84,10 +84,15 @@ import java.util.Arrays;
  */
 public class LZ77Compressor {
 
-    /**
-     * Base class representing things the compressor may emit.
-     */
-    public static abstract class Block { }
+    /** Base class representing blocks the compressor may emit. */
+    public static abstract class Block {
+        /** Enumeration of the block types the compressor may emit. */
+        public static enum BlockType {
+            LITERAL, BACK_REFERENCE, EOD
+        }
+        abstract public BlockType getType();
+    }
+
     /**
      * Represents a literal block of data.
      *
@@ -128,12 +133,16 @@ public class LZ77Compressor {
         public int getLength() {
             return length;
         }
-
+        @Override
+        public BlockType getType() {
+            return BlockType.LITERAL;
+        }
         @Override
         public String toString() {
             return "LiteralBlock starting at " + offset + " with length " + 
length;
         }
     }
+
     /**
      * Represents a back-reference.
      */
@@ -157,18 +166,22 @@ public class LZ77Compressor {
         public int getLength() {
             return length;
         }
-
+        @Override
+        public BlockType getType() {
+            return BlockType.BACK_REFERENCE;
+        }
         @Override
         public String toString() {
             return "BackReference with offset " + offset + " and length " + 
length;
         }
     }
-    /**
-     * A simple "we are done" marker.
-     */
-    public static final class EOD extends Block { }
 
-    private static final EOD THE_EOD = new EOD();
+    /** A simple "we are done" marker. */
+    private static final Block THE_EOD = new Block() {
+        @Override
+        public BlockType getType() {
+            return BlockType.EOD;
+        } };
 
     /**
      * Callback invoked while the compressor processes data.

http://git-wip-us.apache.org/repos/asf/commons-compress/blob/9db50286/src/main/java/org/apache/commons/compress/compressors/snappy/SnappyCompressorOutputStream.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/commons/compress/compressors/snappy/SnappyCompressorOutputStream.java
 
b/src/main/java/org/apache/commons/compress/compressors/snappy/SnappyCompressorOutputStream.java
index 5705bec..93a9d80 100644
--- 
a/src/main/java/org/apache/commons/compress/compressors/snappy/SnappyCompressorOutputStream.java
+++ 
b/src/main/java/org/apache/commons/compress/compressors/snappy/SnappyCompressorOutputStream.java
@@ -102,11 +102,15 @@ public class SnappyCompressorOutputStream extends 
CompressorOutputStream {
         compressor = new LZ77Compressor(params, new LZ77Compressor.Callback() {
                 @Override
                 public void accept(LZ77Compressor.Block block) throws 
IOException {
-                    //System.err.println(block);
-                    if (block instanceof LZ77Compressor.LiteralBlock) {
+                    switch (block.getType()) {
+                    case LITERAL:
                         writeLiteralBlock((LZ77Compressor.LiteralBlock) block);
-                    } else if (block instanceof LZ77Compressor.BackReference) {
+                        break;
+                    case BACK_REFERENCE:
                         writeBackReference((LZ77Compressor.BackReference) 
block);
+                        break;
+                    case EOD:
+                        break;
                     }
                 }
             });

http://git-wip-us.apache.org/repos/asf/commons-compress/blob/9db50286/src/test/java/org/apache/commons/compress/compressors/lz77support/LZ77CompressorTest.java
----------------------------------------------------------------------
diff --git 
a/src/test/java/org/apache/commons/compress/compressors/lz77support/LZ77CompressorTest.java
 
b/src/test/java/org/apache/commons/compress/compressors/lz77support/LZ77CompressorTest.java
index 3163295..db4e3ab 100644
--- 
a/src/test/java/org/apache/commons/compress/compressors/lz77support/LZ77CompressorTest.java
+++ 
b/src/test/java/org/apache/commons/compress/compressors/lz77support/LZ77CompressorTest.java
@@ -307,7 +307,7 @@ public class LZ77CompressorTest {
 
     private static final void assertSize(int expectedSize, 
List<LZ77Compressor.Block> blocks) {
         assertEquals(expectedSize, blocks.size());
-        assertEquals(LZ77Compressor.EOD.class, blocks.get(expectedSize - 
1).getClass());
+        assertEquals(LZ77Compressor.Block.BlockType.EOD, 
blocks.get(expectedSize - 1).getType());
     }
 
     private static final void assertLiteralBlock(String expectedContent, 
LZ77Compressor.Block block)

Reply via email to