Class DataUtils


  • public final class DataUtils
    extends java.lang.Object
    Utility methods
    • Constructor Summary

      Constructors 
      Constructor Description
      DataUtils()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static void appendMap​(java.lang.StringBuilder buff, java.lang.String key, int value)
      Append a key-value pair to the string builder.
      static void appendMap​(java.lang.StringBuilder buff, java.lang.String key, long value)
      Append a key-value pair to the string builder.
      static void appendMap​(java.lang.StringBuilder buff, java.lang.String key, java.lang.String value)
      Append a key-value pair to the string builder.
      static java.lang.StringBuilder appendMap​(java.lang.StringBuilder buff, java.util.HashMap<java.lang.String,​?> map)
      Append a map to the string builder, sorted by key.
      private static java.lang.StringBuilder appendMapKey​(java.lang.StringBuilder buff, java.lang.String key)  
      static void checkArgument​(boolean test, java.lang.String message, java.lang.Object... arguments)
      Throw an IllegalArgumentException if the argument is invalid.
      static java.io.IOException convertToIOException​(java.lang.Throwable e)
      Convert an exception to an IO exception.
      static void copyExcept​(java.lang.Object src, java.lang.Object dst, int oldSize, int removeIndex)
      Copy the elements of an array, and remove one element.
      static void copyWithGap​(java.lang.Object src, java.lang.Object dst, int oldSize, int gapIndex)
      Copy the elements of an array, with a gap.
      static int decodePageLength​(int code)
      Get the maximum length for the given code.
      static int encodeLength​(int len)
      Convert the length to a length code 0..31.
      static java.lang.String formatMessage​(int errorCode, java.lang.String message, java.lang.Object... arguments)
      Format an error message.
      static short getCheckValue​(int x)
      Calculate a check value for the given integer.
      (package private) static int getConfigParam​(java.util.Map<java.lang.String,​?> config, java.lang.String key, int defaultValue)
      Get the configuration parameter value, or default.
      static int getFletcher32​(byte[] bytes, int offset, int length)
      Calculate the Fletcher32 checksum.
      static java.lang.String getFromMap​(java.lang.String s, java.lang.String key)
      Parse a specified pair from key-value pair list.
      static java.lang.String getMapName​(java.lang.String s)
      Parse a name from key-value pair list.
      static int getPageChunkId​(long pos)
      Get the chunk id from the position.
      static int getPageMapId​(long tocElement)
      Get the map id from the chunk's table of content element.
      static int getPageMaxLength​(long pos)
      Get the maximum length for the given page position.
      static int getPageOffset​(long tocElement)
      Get the offset from the position.
      static long getPagePos​(int chunkId, int offset, int length, int type)
      Get the position of this page.
      static long getPagePos​(int chunkId, long tocElement)
      Convert tocElement into pagePos by replacing mapId with chunkId.
      static int getPageType​(long pos)
      Get the page type from the position.
      static long getTocElement​(int mapId, int offset, int length, int type)
      Create table of content element.
      static int getVarIntLen​(int x)
      Get the length of the variable size int.
      static int getVarLongLen​(long x)
      Get the length of the variable size long.
      private static <T extends java.lang.Exception>
      T
      initCause​(T e, java.lang.Object... arguments)  
      static boolean isLeafPosition​(long pos)
      Determines whether specified file position corresponds to a leaf page
      (package private) static boolean isPageRemoved​(long pos)
      Find out if page was removed.
      static boolean isPageSaved​(long pos)
      Find out if page was saved.
      static java.lang.IllegalArgumentException newIllegalArgumentException​(java.lang.String message, java.lang.Object... arguments)
      Create a new IllegalArgumentException.
      static MVStoreException newMVStoreException​(int errorCode, java.lang.String message, java.lang.Object... arguments)
      Create a new MVStoreException.
      static java.lang.UnsupportedOperationException newUnsupportedOperationException​(java.lang.String message)
      Create a new UnsupportedOperationException.
      (package private) static java.util.HashMap<java.lang.String,​java.lang.String> parseChecksummedMap​(byte[] bytes)
      Parse a key-value pair list and checks its checksum.
      (package private) static byte[] parseHexBytes​(java.util.Map<java.lang.String,​?> map, java.lang.String key)
      Parse the hex-encoded bytes of an entry in the map.
      static int parseHexInt​(java.lang.String x)
      Parse an unsigned, hex long.
      static long parseHexLong​(java.lang.String x)
      Parse an unsigned, hex long.
      static java.util.HashMap<java.lang.String,​java.lang.String> parseMap​(java.lang.String s)
      Parse a key-value pair list.
      private static int parseMapValue​(java.lang.StringBuilder buff, java.lang.String s, int i, int size)  
      static void readFully​(java.nio.channels.FileChannel file, long pos, java.nio.ByteBuffer dst)
      Read from a file channel until the buffer is full.
      (package private) static int readHexInt​(java.util.Map<java.lang.String,​?> map, java.lang.String key, int defaultValue)
      Read a hex int value from a map.
      static long readHexLong​(java.util.Map<java.lang.String,​?> map, java.lang.String key, long defaultValue)
      Read a hex long value from a map.
      static java.lang.String readString​(java.nio.ByteBuffer buff)
      Read a string.
      static java.lang.String readString​(java.nio.ByteBuffer buff, int len)
      Read a string.
      static int readVarInt​(java.nio.ByteBuffer buff)
      Read a variable size int.
      private static int readVarIntRest​(java.nio.ByteBuffer buff, int b)  
      static long readVarLong​(java.nio.ByteBuffer buff)
      Read a variable size long.
      static void writeFully​(java.nio.channels.FileChannel file, long pos, java.nio.ByteBuffer src)
      Write to a file channel.
      static void writeStringData​(java.nio.ByteBuffer buff, java.lang.String s, int len)
      Write characters from a string (without the length).
      static void writeVarInt​(java.io.OutputStream out, int x)
      Write a variable size int.
      static void writeVarInt​(java.nio.ByteBuffer buff, int x)
      Write a variable size int.
      static void writeVarLong​(java.io.OutputStream out, long x)
      Write a variable size long.
      static void writeVarLong​(java.nio.ByteBuffer buff, long x)
      Write a variable size long.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • ERROR_READING_FAILED

        public static final int ERROR_READING_FAILED
        An error occurred while reading from the file.
        See Also:
        Constant Field Values
      • ERROR_WRITING_FAILED

        public static final int ERROR_WRITING_FAILED
        An error occurred when trying to write to the file.
        See Also:
        Constant Field Values
      • ERROR_INTERNAL

        public static final int ERROR_INTERNAL
        An internal error occurred. This could be a bug, or a memory corruption (for example caused by out of memory).
        See Also:
        Constant Field Values
      • ERROR_CLOSED

        public static final int ERROR_CLOSED
        The object is already closed.
        See Also:
        Constant Field Values
      • ERROR_UNSUPPORTED_FORMAT

        public static final int ERROR_UNSUPPORTED_FORMAT
        The file format is not supported.
        See Also:
        Constant Field Values
      • ERROR_FILE_CORRUPT

        public static final int ERROR_FILE_CORRUPT
        The file is corrupt or (for encrypted files) the encryption key is wrong.
        See Also:
        Constant Field Values
      • ERROR_FILE_LOCKED

        public static final int ERROR_FILE_LOCKED
        The file is locked.
        See Also:
        Constant Field Values
      • ERROR_SERIALIZATION

        public static final int ERROR_SERIALIZATION
        An error occurred when serializing or de-serializing.
        See Also:
        Constant Field Values
      • ERROR_CHUNK_NOT_FOUND

        public static final int ERROR_CHUNK_NOT_FOUND
        The application was trying to read data from a chunk that is no longer available.
        See Also:
        Constant Field Values
      • ERROR_BLOCK_NOT_FOUND

        public static final int ERROR_BLOCK_NOT_FOUND
        The block in the stream store was not found.
        See Also:
        Constant Field Values
      • ERROR_TRANSACTION_CORRUPT

        public static final int ERROR_TRANSACTION_CORRUPT
        The transaction store is corrupt.
        See Also:
        Constant Field Values
      • ERROR_TRANSACTION_LOCKED

        public static final int ERROR_TRANSACTION_LOCKED
        An entry is still locked by another transaction.
        See Also:
        Constant Field Values
      • ERROR_TOO_MANY_OPEN_TRANSACTIONS

        public static final int ERROR_TOO_MANY_OPEN_TRANSACTIONS
        There are too many open transactions.
        See Also:
        Constant Field Values
      • ERROR_TRANSACTION_ILLEGAL_STATE

        public static final int ERROR_TRANSACTION_ILLEGAL_STATE
        The transaction store is in an illegal state (for example, not yet initialized).
        See Also:
        Constant Field Values
      • ERROR_TRANSACTION_TOO_BIG

        public static final int ERROR_TRANSACTION_TOO_BIG
        The transaction contains too many changes.
        See Also:
        Constant Field Values
      • ERROR_TRANSACTIONS_DEADLOCK

        public static final int ERROR_TRANSACTIONS_DEADLOCK
        Deadlock discovered and one of transactions involved chosen as victim and rolled back.
        See Also:
        Constant Field Values
      • ERROR_UNKNOWN_DATA_TYPE

        public static final int ERROR_UNKNOWN_DATA_TYPE
        The transaction store can not be initialized because data type is not found in type registry.
        See Also:
        Constant Field Values
      • PAGE_TYPE_LEAF

        public static final int PAGE_TYPE_LEAF
        The type for leaf page.
        See Also:
        Constant Field Values
      • PAGE_TYPE_NODE

        public static final int PAGE_TYPE_NODE
        The type for node page.
        See Also:
        Constant Field Values
      • PAGE_COMPRESSED

        public static final int PAGE_COMPRESSED
        The bit mask for compressed pages (compression level fast).
        See Also:
        Constant Field Values
      • PAGE_COMPRESSED_HIGH

        public static final int PAGE_COMPRESSED_HIGH
        The bit mask for compressed pages (compression level high).
        See Also:
        Constant Field Values
      • PAGE_HAS_PAGE_NO

        public static final int PAGE_HAS_PAGE_NO
        The bit mask for pages with page sequential number.
        See Also:
        Constant Field Values
      • MAX_VAR_INT_LEN

        public static final int MAX_VAR_INT_LEN
        The maximum length of a variable size int.
        See Also:
        Constant Field Values
      • MAX_VAR_LONG_LEN

        public static final int MAX_VAR_LONG_LEN
        The maximum length of a variable size long.
        See Also:
        Constant Field Values
      • COMPRESSED_VAR_INT_MAX

        public static final int COMPRESSED_VAR_INT_MAX
        The maximum integer that needs less space when using variable size encoding (only 3 bytes instead of 4).
        See Also:
        Constant Field Values
      • COMPRESSED_VAR_LONG_MAX

        public static final long COMPRESSED_VAR_LONG_MAX
        The maximum long that needs less space when using variable size encoding (only 7 bytes instead of 8).
        See Also:
        Constant Field Values
      • PAGE_LARGE

        public static final int PAGE_LARGE
        The marker size of a very large page.
        See Also:
        Constant Field Values
      • META_CHUNK

        public static final java.lang.String META_CHUNK
        The prefix for chunks ("chunk."). This, plus the chunk id (hex encoded) is the key, and the serialized chunk metadata is the value.
        See Also:
        Constant Field Values
      • META_ROOT

        public static final java.lang.String META_ROOT
        The prefix for root positions of maps ("root."). This, plus the map id (hex encoded) is the key, and the position (hex encoded) is the value.
        See Also:
        Constant Field Values
      • META_NAME

        public static final java.lang.String META_NAME
        The prefix for names ("name."). This, plus the name of the map, is the key, and the map id (hex encoded) is the value.
        See Also:
        Constant Field Values
      • META_MAP

        public static final java.lang.String META_MAP
        The prefix for maps ("map."). This, plus the map id (hex encoded) is the key, and the serialized in the map metadata is the value.
        See Also:
        Constant Field Values
    • Constructor Detail

      • DataUtils

        public DataUtils()
    • Method Detail

      • getVarIntLen

        public static int getVarIntLen​(int x)
        Get the length of the variable size int.
        Parameters:
        x - the value
        Returns:
        the length in bytes
      • getVarLongLen

        public static int getVarLongLen​(long x)
        Get the length of the variable size long.
        Parameters:
        x - the value
        Returns:
        the length in bytes
      • readVarInt

        public static int readVarInt​(java.nio.ByteBuffer buff)
        Read a variable size int.
        Parameters:
        buff - the source buffer
        Returns:
        the value
      • readVarIntRest

        private static int readVarIntRest​(java.nio.ByteBuffer buff,
                                          int b)
      • readVarLong

        public static long readVarLong​(java.nio.ByteBuffer buff)
        Read a variable size long.
        Parameters:
        buff - the source buffer
        Returns:
        the value
      • writeVarInt

        public static void writeVarInt​(java.io.OutputStream out,
                                       int x)
                                throws java.io.IOException
        Write a variable size int.
        Parameters:
        out - the output stream
        x - the value
        Throws:
        java.io.IOException - if some data could not be written
      • writeVarInt

        public static void writeVarInt​(java.nio.ByteBuffer buff,
                                       int x)
        Write a variable size int.
        Parameters:
        buff - the source buffer
        x - the value
      • writeStringData

        public static void writeStringData​(java.nio.ByteBuffer buff,
                                           java.lang.String s,
                                           int len)
        Write characters from a string (without the length).
        Parameters:
        buff - the target buffer (must be large enough)
        s - the string
        len - the number of characters
      • readString

        public static java.lang.String readString​(java.nio.ByteBuffer buff)
        Read a string.
        Parameters:
        buff - the source buffer
        Returns:
        the value
      • readString

        public static java.lang.String readString​(java.nio.ByteBuffer buff,
                                                  int len)
        Read a string.
        Parameters:
        buff - the source buffer
        len - the number of characters
        Returns:
        the value
      • writeVarLong

        public static void writeVarLong​(java.nio.ByteBuffer buff,
                                        long x)
        Write a variable size long.
        Parameters:
        buff - the target buffer
        x - the value
      • writeVarLong

        public static void writeVarLong​(java.io.OutputStream out,
                                        long x)
                                 throws java.io.IOException
        Write a variable size long.
        Parameters:
        out - the output stream
        x - the value
        Throws:
        java.io.IOException - if some data could not be written
      • copyWithGap

        public static void copyWithGap​(java.lang.Object src,
                                       java.lang.Object dst,
                                       int oldSize,
                                       int gapIndex)
        Copy the elements of an array, with a gap.
        Parameters:
        src - the source array
        dst - the target array
        oldSize - the size of the old array
        gapIndex - the index of the gap
      • copyExcept

        public static void copyExcept​(java.lang.Object src,
                                      java.lang.Object dst,
                                      int oldSize,
                                      int removeIndex)
        Copy the elements of an array, and remove one element.
        Parameters:
        src - the source array
        dst - the target array
        oldSize - the size of the old array
        removeIndex - the index of the entry to remove
      • readFully

        public static void readFully​(java.nio.channels.FileChannel file,
                                     long pos,
                                     java.nio.ByteBuffer dst)
        Read from a file channel until the buffer is full. The buffer is rewind after reading.
        Parameters:
        file - the file channel
        pos - the absolute position within the file
        dst - the byte buffer
        Throws:
        MVStoreException - if some data could not be read
      • writeFully

        public static void writeFully​(java.nio.channels.FileChannel file,
                                      long pos,
                                      java.nio.ByteBuffer src)
        Write to a file channel.
        Parameters:
        file - the file channel
        pos - the absolute position within the file
        src - the source buffer
      • encodeLength

        public static int encodeLength​(int len)
        Convert the length to a length code 0..31. 31 means more than 1 MB.
        Parameters:
        len - the length
        Returns:
        the length code
      • getPageChunkId

        public static int getPageChunkId​(long pos)
        Get the chunk id from the position.
        Parameters:
        pos - the position
        Returns:
        the chunk id
      • getPageMapId

        public static int getPageMapId​(long tocElement)
        Get the map id from the chunk's table of content element.
        Parameters:
        tocElement - packed table of content element
        Returns:
        the map id
      • getPageMaxLength

        public static int getPageMaxLength​(long pos)
        Get the maximum length for the given page position.
        Parameters:
        pos - the position
        Returns:
        the maximum length
      • decodePageLength

        public static int decodePageLength​(int code)
        Get the maximum length for the given code. For the code 31, PAGE_LARGE is returned.
        Parameters:
        code - encoded page length
        Returns:
        the maximum length
      • getPageOffset

        public static int getPageOffset​(long tocElement)
        Get the offset from the position.
        Parameters:
        tocElement - packed table of content element
        Returns:
        the offset
      • getPageType

        public static int getPageType​(long pos)
        Get the page type from the position.
        Parameters:
        pos - the position
        Returns:
        the page type (PAGE_TYPE_NODE or PAGE_TYPE_LEAF)
      • isLeafPosition

        public static boolean isLeafPosition​(long pos)
        Determines whether specified file position corresponds to a leaf page
        Parameters:
        pos - the position
        Returns:
        true if it is a leaf, false otherwise
      • isPageSaved

        public static boolean isPageSaved​(long pos)
        Find out if page was saved.
        Parameters:
        pos - the position
        Returns:
        true if page has been saved
      • isPageRemoved

        static boolean isPageRemoved​(long pos)
        Find out if page was removed.
        Parameters:
        pos - the position
        Returns:
        true if page has been removed (no longer accessible from the current root of the tree)
      • getPagePos

        public static long getPagePos​(int chunkId,
                                      int offset,
                                      int length,
                                      int type)
        Get the position of this page. The following information is encoded in the position: the chunk id, the page sequential number, the maximum length, and the type (node or leaf).
        Parameters:
        chunkId - the chunk id
        offset - the offset
        length - the length
        type - the page type (1 for node, 0 for leaf)
        Returns:
        the position
      • getPagePos

        public static long getPagePos​(int chunkId,
                                      long tocElement)
        Convert tocElement into pagePos by replacing mapId with chunkId.
        Parameters:
        chunkId - the chunk id
        tocElement - the element
        Returns:
        the page position
      • getTocElement

        public static long getTocElement​(int mapId,
                                         int offset,
                                         int length,
                                         int type)
        Create table of content element. The following information is encoded in it: the map id, the page offset, the maximum length, and the type (node or leaf).
        Parameters:
        mapId - the chunk id
        offset - the offset
        length - the length
        type - the page type (1 for node, 0 for leaf)
        Returns:
        the position
      • getCheckValue

        public static short getCheckValue​(int x)
        Calculate a check value for the given integer. A check value is mean to verify the data is consistent with a high probability, but not meant to protect against media failure or deliberate changes.
        Parameters:
        x - the value
        Returns:
        the check value
      • appendMap

        public static java.lang.StringBuilder appendMap​(java.lang.StringBuilder buff,
                                                        java.util.HashMap<java.lang.String,​?> map)
        Append a map to the string builder, sorted by key.
        Parameters:
        buff - the target buffer
        map - the map
        Returns:
        the string builder
      • appendMapKey

        private static java.lang.StringBuilder appendMapKey​(java.lang.StringBuilder buff,
                                                            java.lang.String key)
      • appendMap

        public static void appendMap​(java.lang.StringBuilder buff,
                                     java.lang.String key,
                                     java.lang.String value)
        Append a key-value pair to the string builder. Keys may not contain a colon. Values that contain a comma or a double quote are enclosed in double quotes, with special characters escaped using a backslash.
        Parameters:
        buff - the target buffer
        key - the key
        value - the value
      • appendMap

        public static void appendMap​(java.lang.StringBuilder buff,
                                     java.lang.String key,
                                     long value)
        Append a key-value pair to the string builder. Keys may not contain a colon.
        Parameters:
        buff - the target buffer
        key - the key
        value - the value
      • appendMap

        public static void appendMap​(java.lang.StringBuilder buff,
                                     java.lang.String key,
                                     int value)
        Append a key-value pair to the string builder. Keys may not contain a colon.
        Parameters:
        buff - the target buffer
        key - the key
        value - the value
      • parseMapValue

        private static int parseMapValue​(java.lang.StringBuilder buff,
                                         java.lang.String s,
                                         int i,
                                         int size)
        Parameters:
        buff - output buffer, should be empty
        s - parsed string
        i - offset to parse from
        size - stop offset (exclusive)
        Returns:
        new offset
      • parseMap

        public static java.util.HashMap<java.lang.String,​java.lang.String> parseMap​(java.lang.String s)
        Parse a key-value pair list.
        Parameters:
        s - the list
        Returns:
        the map
        Throws:
        MVStoreException - if parsing failed
      • parseChecksummedMap

        static java.util.HashMap<java.lang.String,​java.lang.String> parseChecksummedMap​(byte[] bytes)
        Parse a key-value pair list and checks its checksum.
        Parameters:
        bytes - encoded map
        Returns:
        the map without mapping for "fletcher", or null if checksum is wrong or parameter do not represent a properly formatted map serialization
      • getMapName

        public static java.lang.String getMapName​(java.lang.String s)
        Parse a name from key-value pair list.
        Parameters:
        s - the list
        Returns:
        value of name item, or null
        Throws:
        MVStoreException - if parsing failed
      • getFromMap

        public static java.lang.String getFromMap​(java.lang.String s,
                                                  java.lang.String key)
        Parse a specified pair from key-value pair list.
        Parameters:
        s - the list
        key - the name of the key
        Returns:
        value of the specified item, or null
        Throws:
        MVStoreException - if parsing failed
      • getFletcher32

        public static int getFletcher32​(byte[] bytes,
                                        int offset,
                                        int length)
        Calculate the Fletcher32 checksum.
        Parameters:
        bytes - the bytes
        offset - initial offset
        length - the message length (if odd, 0 is appended)
        Returns:
        the checksum
      • checkArgument

        public static void checkArgument​(boolean test,
                                         java.lang.String message,
                                         java.lang.Object... arguments)
        Throw an IllegalArgumentException if the argument is invalid.
        Parameters:
        test - true if the argument is valid
        message - the message
        arguments - the arguments
        Throws:
        java.lang.IllegalArgumentException - if the argument is invalid
      • newIllegalArgumentException

        public static java.lang.IllegalArgumentException newIllegalArgumentException​(java.lang.String message,
                                                                                     java.lang.Object... arguments)
        Create a new IllegalArgumentException.
        Parameters:
        message - the message
        arguments - the arguments
        Returns:
        the exception
      • newUnsupportedOperationException

        public static java.lang.UnsupportedOperationException newUnsupportedOperationException​(java.lang.String message)
        Create a new UnsupportedOperationException.
        Parameters:
        message - the message
        Returns:
        the exception
      • newMVStoreException

        public static MVStoreException newMVStoreException​(int errorCode,
                                                           java.lang.String message,
                                                           java.lang.Object... arguments)
        Create a new MVStoreException.
        Parameters:
        errorCode - the error code
        message - the message
        arguments - the arguments
        Returns:
        the exception
      • initCause

        private static <T extends java.lang.Exception> T initCause​(T e,
                                                                   java.lang.Object... arguments)
      • formatMessage

        public static java.lang.String formatMessage​(int errorCode,
                                                     java.lang.String message,
                                                     java.lang.Object... arguments)
        Format an error message.
        Parameters:
        errorCode - the error code
        message - the message
        arguments - the arguments
        Returns:
        the formatted message
      • readHexLong

        public static long readHexLong​(java.util.Map<java.lang.String,​?> map,
                                       java.lang.String key,
                                       long defaultValue)
        Read a hex long value from a map.
        Parameters:
        map - the map
        key - the key
        defaultValue - if the value is null
        Returns:
        the parsed value
        Throws:
        MVStoreException - if parsing fails
      • parseHexLong

        public static long parseHexLong​(java.lang.String x)
        Parse an unsigned, hex long.
        Parameters:
        x - the string
        Returns:
        the parsed value
        Throws:
        MVStoreException - if parsing fails
      • parseHexInt

        public static int parseHexInt​(java.lang.String x)
        Parse an unsigned, hex long.
        Parameters:
        x - the string
        Returns:
        the parsed value
        Throws:
        MVStoreException - if parsing fails
      • readHexInt

        static int readHexInt​(java.util.Map<java.lang.String,​?> map,
                              java.lang.String key,
                              int defaultValue)
        Read a hex int value from a map.
        Parameters:
        map - the map
        key - the key
        defaultValue - if the value is null
        Returns:
        the parsed value
        Throws:
        MVStoreException - if parsing fails
      • parseHexBytes

        static byte[] parseHexBytes​(java.util.Map<java.lang.String,​?> map,
                                    java.lang.String key)
        Parse the hex-encoded bytes of an entry in the map.
        Parameters:
        map - the map
        key - the key
        Returns:
        the byte array, or null if not in the map
      • getConfigParam

        static int getConfigParam​(java.util.Map<java.lang.String,​?> config,
                                  java.lang.String key,
                                  int defaultValue)
        Get the configuration parameter value, or default.
        Parameters:
        config - the configuration
        key - the key
        defaultValue - the default
        Returns:
        the configured value or default
      • convertToIOException

        public static java.io.IOException convertToIOException​(java.lang.Throwable e)
        Convert an exception to an IO exception.
        Parameters:
        e - the root cause
        Returns:
        the IO exception