Package org.apache.tools.zip

# Class ExtraFieldUtils

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

public class ExtraFieldUtils extends Object
ZipExtraField related methods

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static final class`
  `ExtraFieldUtils.UnparseableExtraField`
  "enum" for the possible actions to take if the extra field cannot be parsed.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ExtraFieldUtils()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `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(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 Details

  - ### ExtraFieldUtils

    public ExtraFieldUtils()

- ## Method Details

  - ### register

    public static void register(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 InstantiationException, 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:
      `InstantiationException` - if unable to instantiate the class
      `IllegalAccessException` - if not allowed to instantiate the class
    Since:
      1.1

  - ### parse

    public static ZipExtraField[] parse(byte[] data) throws 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:
      `ZipException` - on error

  - ### parse

    public static ZipExtraField[] parse(byte[] data, boolean local) throws 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:
      `ZipException` - on error
    Since:
      1.1

  - ### parse

    public static ZipExtraField[] parse(byte[] data, boolean local, ExtraFieldUtils.UnparseableExtraField onUnparseableData) throws 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:
      `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