[tor-commits] [metrics-lib/release] Move FileType and add PLAIN FileType for no compression.

karsten at torproject.org karsten at torproject.org
Tue Oct 10 09:23:19 UTC 2017


commit 4ee320caeace98776e7bd51f054df7641b7c3eb1
Author: iwakeh <iwakeh at torproject.org>
Date:   Fri Jul 28 07:53:30 2017 +0000

    Move FileType and add PLAIN FileType for no compression.
---
 .../org/torproject/descriptor/index/IndexNode.java |  2 ++
 .../descriptor/{index => internal}/FileType.java   | 24 ++++++++++++++++++++--
 2 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/src/main/java/org/torproject/descriptor/index/IndexNode.java b/src/main/java/org/torproject/descriptor/index/IndexNode.java
index c7a79a0..516bbdf 100644
--- a/src/main/java/org/torproject/descriptor/index/IndexNode.java
+++ b/src/main/java/org/torproject/descriptor/index/IndexNode.java
@@ -3,6 +3,8 @@
 
 package org.torproject.descriptor.index;
 
+import org.torproject.descriptor.internal.FileType;
+
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 import com.google.gson.annotations.Expose;
diff --git a/src/main/java/org/torproject/descriptor/index/FileType.java b/src/main/java/org/torproject/descriptor/internal/FileType.java
similarity index 69%
rename from src/main/java/org/torproject/descriptor/index/FileType.java
rename to src/main/java/org/torproject/descriptor/internal/FileType.java
index 9bb7e5f..47bbd28 100644
--- a/src/main/java/org/torproject/descriptor/index/FileType.java
+++ b/src/main/java/org/torproject/descriptor/internal/FileType.java
@@ -1,7 +1,7 @@
 /* Copyright 2016--2017 The Tor Project
  * See LICENSE for licensing information */
 
-package org.torproject.descriptor.index;
+package org.torproject.descriptor.internal;
 
 import org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream;
 import org.apache.commons.compress.compressors.bzip2.BZip2CompressorOutputStream;
@@ -16,14 +16,20 @@ import java.io.InputStream;
 import java.io.OutputStream;
 
 /**
- * A file type enum provides all compression functionality.
+ * These enums provide compression functionality.
+ *
+ * <p>{@link #findType} determines the compression type by the given extension.
+ * Compression can also be zero-compression, which is currently provided by
+ * the PLAIN and JSON enums.</p>
  *
  * @since 1.4.0
  */
 public enum FileType {
+
   BZ2(BZip2CompressorInputStream.class, BZip2CompressorOutputStream.class),
   GZ(GzipCompressorInputStream.class, GzipCompressorOutputStream.class),
   JSON(BufferedInputStream.class, BufferedOutputStream.class),
+  PLAIN(BufferedInputStream.class, BufferedOutputStream.class),
   XZ(XZCompressorInputStream.class, XZCompressorOutputStream.class);
 
   private final Class<? extends InputStream> inClass;
@@ -34,6 +40,20 @@ public enum FileType {
     this.outClass = out;
   }
 
+  /**
+   * Returns <code>valueOf</code> or the default enum {@link #PLAIN}, i.e.,
+   * this method doesn't throw any exceptions and allways returns a valid enum.
+   */
+  public static FileType findType(String ext) {
+    FileType res = null;
+    try {
+      res = FileType.valueOf(ext.toUpperCase());
+      return res;
+    } catch (IllegalArgumentException | NullPointerException re) {
+      return PLAIN;
+    }
+  }
+
   /** Return the appropriate input stream. */
   public InputStream inputStream(InputStream is) throws Exception {
     return this.inClass.getConstructor(new Class[]{InputStream.class})





More information about the tor-commits mailing list