Class X7875_NewUnix
- java.lang.Object
-
- org.apache.commons.compress.archivers.zip.X7875_NewUnix
-
- All Implemented Interfaces:
java.io.Serializable
,java.lang.Cloneable
,ZipExtraField
public class X7875_NewUnix extends java.lang.Object implements ZipExtraField, java.lang.Cloneable, java.io.Serializable
An extra field that stores UNIX UID/GID data (owner & group ownership) for a given zip entry. We're using the field definition given in Info-Zip's source archive: zip-3.0.tar.gz/proginfo/extrafld.txtLocal-header version: Value Size Description ----- ---- ----------- 0x7875 Short tag for this extra block type ("ux") TSize Short total data size for this block Version 1 byte version of this extra field, currently 1 UIDSize 1 byte Size of UID field UID Variable UID for this entry (little endian) GIDSize 1 byte Size of GID field GID Variable GID for this entry (little endian) Central-header version: Value Size Description ----- ---- ----------- 0x7855 Short tag for this extra block type ("Ux") TSize Short total data size for this block (0)
- Since:
- 1.5
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description private java.math.BigInteger
gid
private static ZipShort
HEADER_ID
private static java.math.BigInteger
ONE_THOUSAND
private static long
serialVersionUID
private java.math.BigInteger
uid
private int
version
private static ZipShort
ZERO
-
Fields inherited from interface org.apache.commons.compress.archivers.zip.ZipExtraField
EXTRAFIELD_HEADER_SIZE
-
-
Constructor Summary
Constructors Constructor Description X7875_NewUnix()
Constructor for X7875_NewUnix.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.Object
clone()
boolean
equals(java.lang.Object o)
byte[]
getCentralDirectoryData()
The actual data to put into central directory data - without Header-ID or length specifier.ZipShort
getCentralDirectoryLength()
Length of the extra field in the central directory data - without Header-ID or length specifier.long
getGID()
Gets the GID as a long.ZipShort
getHeaderId()
The Header-ID.byte[]
getLocalFileDataData()
The actual data to put into local file data - without Header-ID or length specifier.ZipShort
getLocalFileDataLength()
Length of the extra field in the local file data - without Header-ID or length specifier.long
getUID()
Gets the UID as a long.int
hashCode()
void
parseFromCentralDirectoryData(byte[] buffer, int offset, int length)
Doesn't do anything since this class doesn't store anything inside the central directory.void
parseFromLocalFileData(byte[] data, int offset, int length)
Populate data from this array as if it was in local file data.private void
reset()
Reset state back to newly constructed state.void
setGID(long l)
Sets the GID.void
setUID(long l)
Sets the UID.java.lang.String
toString()
Returns a String representation of this class useful for debugging purposes.(package private) static byte[]
trimLeadingZeroesForceMinLength(byte[] array)
Not really for external usage, but marked "package" visibility to help us JUnit it.
-
-
-
Field Detail
-
HEADER_ID
private static final ZipShort HEADER_ID
-
ZERO
private static final ZipShort ZERO
-
ONE_THOUSAND
private static final java.math.BigInteger ONE_THOUSAND
-
serialVersionUID
private static final long serialVersionUID
- See Also:
- Constant Field Values
-
version
private int version
-
uid
private java.math.BigInteger uid
-
gid
private java.math.BigInteger gid
-
-
Method Detail
-
getHeaderId
public ZipShort getHeaderId()
The Header-ID.- Specified by:
getHeaderId
in interfaceZipExtraField
- Returns:
- the value for the header id for this extrafield
-
getUID
public long getUID()
Gets the UID as a long. UID is typically a 32 bit unsigned value on most UNIX systems, so we return a long to avoid integer overflow into the negatives in case values above and including 2^31 are being used.- Returns:
- the UID value.
-
getGID
public long getGID()
Gets the GID as a long. GID is typically a 32 bit unsigned value on most UNIX systems, so we return a long to avoid integer overflow into the negatives in case values above and including 2^31 are being used.- Returns:
- the GID value.
-
setUID
public void setUID(long l)
Sets the UID.- Parameters:
l
- UID value to set on this extra field.
-
setGID
public void setGID(long l)
Sets the GID.- Parameters:
l
- GID value to set on this extra field.
-
getLocalFileDataLength
public ZipShort getLocalFileDataLength()
Length of the extra field in the local file data - without Header-ID or length specifier.- Specified by:
getLocalFileDataLength
in interfaceZipExtraField
- Returns:
- a
ZipShort
for the length of the data of this extra field
-
getCentralDirectoryLength
public ZipShort getCentralDirectoryLength()
Length of the extra field in the central directory data - without Header-ID or length specifier.- Specified by:
getCentralDirectoryLength
in interfaceZipExtraField
- Returns:
- a
ZipShort
for the length of the data of this extra field
-
getLocalFileDataData
public byte[] getLocalFileDataData()
The actual data to put into local file data - without Header-ID or length specifier.- Specified by:
getLocalFileDataData
in interfaceZipExtraField
- Returns:
- get the data
-
getCentralDirectoryData
public byte[] getCentralDirectoryData()
The actual data to put into central directory data - without Header-ID or length specifier.- Specified by:
getCentralDirectoryData
in interfaceZipExtraField
- Returns:
- get the data
-
parseFromLocalFileData
public void parseFromLocalFileData(byte[] data, int offset, int length) throws java.util.zip.ZipException
Populate data from this array as if it was in local file data.- Specified by:
parseFromLocalFileData
in interfaceZipExtraField
- Parameters:
data
- an array of bytesoffset
- the start offsetlength
- the number of bytes in the array from offset- Throws:
java.util.zip.ZipException
- on error
-
parseFromCentralDirectoryData
public void parseFromCentralDirectoryData(byte[] buffer, int offset, int length) throws java.util.zip.ZipException
Doesn't do anything since this class doesn't store anything inside the central directory.- Specified by:
parseFromCentralDirectoryData
in interfaceZipExtraField
- Parameters:
buffer
- the buffer to read data fromoffset
- offset into buffer to read datalength
- the length of data- Throws:
java.util.zip.ZipException
- on error
-
reset
private void reset()
Reset state back to newly constructed state. Helps us make sure parse() calls always generate clean results.
-
toString
public java.lang.String toString()
Returns a String representation of this class useful for debugging purposes.- Overrides:
toString
in classjava.lang.Object
- Returns:
- A String representation of this class useful for debugging purposes.
-
clone
public java.lang.Object clone() throws java.lang.CloneNotSupportedException
- Overrides:
clone
in classjava.lang.Object
- Throws:
java.lang.CloneNotSupportedException
-
equals
public boolean equals(java.lang.Object o)
- Overrides:
equals
in classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
trimLeadingZeroesForceMinLength
static byte[] trimLeadingZeroesForceMinLength(byte[] array)
Not really for external usage, but marked "package" visibility to help us JUnit it. Trims a byte array of leading zeroes while also enforcing a minimum length, and thus it really trims AND pads at the same time.- Parameters:
array
- byte[] array to trim & pad.- Returns:
- trimmed & padded byte[] array.
-
-