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