org.apache.tools.zip
Class ExtraFieldUtils

java.lang.Object
  extended by org.apache.tools.zip.ExtraFieldUtils

public class ExtraFieldUtils
extends java.lang.Object

ZipExtraField related methods


Nested Class Summary
static class ExtraFieldUtils.UnparseableExtraField
          "enum" for the possible actions to take if the extra field cannot be parsed.
 
Constructor Summary
ExtraFieldUtils()
           
 
Method Summary
static ZipExtraField createExtraField(ZipShort headerId)
          Create an instance of the appropriate ExtraField, falls back to UnrecognizedExtraField.
static byte[] mergeCentralDirectoryData(ZipExtraField[] data)
          Merges the central directory fields of the given ZipExtraFields.
static byte[] mergeLocalFileDataData(ZipExtraField[] data)
          Merges the local file data fields of the given ZipExtraFields.
static ZipExtraField[] parse(byte[] data)
          Split the array into ExtraFields and populate them with the given data as local file data, throwing an exception if the data cannot be parsed.
static ZipExtraField[] parse(byte[] data, boolean local)
          Split the array into ExtraFields and populate them with the given data, throwing an exception if the data cannot be parsed.
static ZipExtraField[] parse(byte[] data, boolean local, ExtraFieldUtils.UnparseableExtraField onUnparseableData)
          Split the array into ExtraFields and populate them with the given data.
static void register(java.lang.Class<?> c)
          Register a ZipExtraField implementation.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ExtraFieldUtils

public ExtraFieldUtils()
Method Detail

register

public static void register(java.lang.Class<?> c)
Register a ZipExtraField implementation.

The given class must have a no-arg constructor and implement the ZipExtraField interface.

Parameters:
c - the class to register
Since:
1.1

createExtraField

public static ZipExtraField createExtraField(ZipShort headerId)
                                      throws java.lang.InstantiationException,
                                             java.lang.IllegalAccessException
Create an instance of the appropriate ExtraField, falls back to UnrecognizedExtraField.

Parameters:
headerId - the header identifier
Returns:
an instance of the appropriate ExtraField
Throws:
java.lang.InstantiationException - if unable to instantiate the class
java.lang.IllegalAccessException - if not allowed to instantiate the class
Since:
1.1

parse

public static ZipExtraField[] parse(byte[] data)
                             throws java.util.zip.ZipException
Split the array into ExtraFields and populate them with the given data as local file data, throwing an exception if the data cannot be parsed.

Parameters:
data - an array of bytes as it appears in local file data
Returns:
an array of ExtraFields
Throws:
java.util.zip.ZipException - on error

parse

public static ZipExtraField[] parse(byte[] data,
                                    boolean local)
                             throws java.util.zip.ZipException
Split the array into ExtraFields and populate them with the given data, throwing an exception if the data cannot be parsed.

Parameters:
data - an array of bytes
local - whether data originates from the local file data or the central directory
Returns:
an array of ExtraFields
Throws:
java.util.zip.ZipException - on error
Since:
1.1

parse

public static ZipExtraField[] parse(byte[] data,
                                    boolean local,
                                    ExtraFieldUtils.UnparseableExtraField onUnparseableData)
                             throws java.util.zip.ZipException
Split the array into ExtraFields and populate them with the given data.

Parameters:
data - an array of bytes
local - whether data originates from the local file data or the central directory
onUnparseableData - what to do if the extra field data cannot be parsed.
Returns:
an array of ExtraFields
Throws:
java.util.zip.ZipException - on error
Since:
Ant 1.8.1

mergeLocalFileDataData

public static byte[] mergeLocalFileDataData(ZipExtraField[] data)
Merges the local file data fields of the given ZipExtraFields.

Parameters:
data - an array of ExtraFiles
Returns:
an array of bytes
Since:
1.1

mergeCentralDirectoryData

public static byte[] mergeCentralDirectoryData(ZipExtraField[] data)
Merges the central directory fields of the given ZipExtraFields.

Parameters:
data - an array of ExtraFields
Returns:
an array of bytes
Since:
1.1