Top Description Fields Constructors Methods
org.apache.commons.compress.archivers.zip

public Class X7875_NewUnix

extends Object
implements ZipExtraField, Cloneable, Serializable
Class Inheritance
All Implemented Interfaces
java.io.Serializable, java.lang.Cloneable, org.apache.commons.compress.archivers.zip.ZipExtraField
Static Imports
org.apache.commons.compress.archivers.zip.ZipUtil.reverse, .ZipUtil.signedByteToUnsignedInt, .ZipUtil.unsignedIntToSignedByte

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.txt
Local-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

Field Summary

Modifier and TypeField and Description
private BigInteger
pack-priv static final ZipShort
private static final BigInteger
private static final long
private BigInteger
private int
private static final ZipShort

Constructor Summary

AccessConstructor and Description
public
X7875_NewUnix()

Constructor for X7875_NewUnix.

Method Summary

Modifier and TypeMethod and Description
public Object
clone()

Overrides java.lang.Object.clone.

Creates and returns a copy of this object.
public boolean
equals(final Object
the reference object with which to compare.
o
)

Overrides java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.
public byte[]

Returns:

get the data
getCentralDirectoryData
()

Implements org.apache.commons.compress.archivers.zip.ZipExtraField.getCentralDirectoryData.

The actual data to put into central directory data - without Header-ID or length specifier.
public ZipShort

Returns:

a ZipShort for the length of the data of this extra field
getCentralDirectoryLength
()

Implements org.apache.commons.compress.archivers.zip.ZipExtraField.getCentralDirectoryLength.

Length of the extra field in the central directory data - without Header-ID or length specifier.
public long

Returns:

the GID value.
getGID
()

Gets the GID as a long.

public ZipShort

Returns:

the value for the header id for this extrafield
getHeaderId
()

Implements org.apache.commons.compress.archivers.zip.ZipExtraField.getHeaderId.

The Header-ID.
public byte[]

Returns:

get the data
getLocalFileDataData
()

Implements org.apache.commons.compress.archivers.zip.ZipExtraField.getLocalFileDataData.

The actual data to put into local file data - without Header-ID or length specifier.
public ZipShort

Returns:

a ZipShort for the length of the data of this extra field
getLocalFileDataLength
()

Implements org.apache.commons.compress.archivers.zip.ZipExtraField.getLocalFileDataLength.

Length of the extra field in the local file data - without Header-ID or length specifier.
public long

Returns:

the UID value.
getUID
()

Gets the UID as a long.

public int
hashCode()

Overrides java.lang.Object.hashCode.

Returns a hash code value for the object.
public void
parseFromCentralDirectoryData(final byte[]
the buffer to read data from
buffer
,
final int
offset into buffer to read data
offset
,
final int
the length of data
length
)

Implements org.apache.commons.compress.archivers.zip.ZipExtraField.parseFromCentralDirectoryData.

Doesn't do anything since this class doesn't store anything inside the central directory.
public void
parseFromLocalFileData(final byte[]
an array of bytes
data
,
int
the start offset
offset
,
final int
the number of bytes in the array from offset
length
)

Implements org.apache.commons.compress.archivers.zip.ZipExtraField.parseFromLocalFileData.

Populate data from this array as if it was in local file data.
private void
reset()

Reset state back to newly constructed state.

public void
setGID(final long
GID value to set on this extra field.
l
)

Sets the GID.

public void
setUID(final long
UID value to set on this extra field.
l
)

Sets the UID.

public String

Returns:

A String representation of this class useful for debugging purposes.
toString
()

Overrides java.lang.Object.toString.

Returns a String representation of this class useful for debugging purposes.
pack-priv static byte[]

Returns:

trimmed & padded byte[] array.
trimLeadingZeroesForceMinLength
(final byte[]
byte[] array to trim & pad.
array
)

Not really for external usage, but marked "package" visibility to help us JUnit it.

Inherited from java.lang.Object:
finalizegetClassnotifynotifyAllwaitwaitwait

Field Detail

gidback to summary
private BigInteger gid
HEADER_IDback to summary
pack-priv static final ZipShort HEADER_ID
ONE_THOUSANDback to summary
private static final BigInteger ONE_THOUSAND
serialVersionUIDback to summary
private static final long serialVersionUID
uidback to summary
private BigInteger uid
versionback to summary
private int version
ZEROback to summary
private static final ZipShort ZERO

Constructor Detail

X7875_NewUnixback to summary
public X7875_NewUnix()

Constructor for X7875_NewUnix.

Method Detail

cloneback to summary
public Object clone() throws CloneNotSupportedException

Overrides java.lang.Object.clone.

Doc from java.lang.Object.clone.

Creates and returns a copy of this object. The precise meaning of "copy" may depend on the class of the object. The general intent is that, for any object x, the expression:

x.clone() != x
will be true, and that the expression:
x.clone().getClass() == x.getClass()
will be true, but these are not absolute requirements. While it is typically the case that:
x.clone().equals(x)
will be true, this is not an absolute requirement.

By convention, the returned object should be obtained by calling super.clone. If a class and all of its superclasses (except Object) obey this convention, it will be the case that x.clone().getClass() == x.getClass().

By convention, the object returned by this method should be independent of this object (which is being cloned). To achieve this independence, it may be necessary to modify one or more fields of the object returned by super.clone before returning it. Typically, this means copying any mutable objects that comprise the internal "deep structure" of the object being cloned and replacing the references to these objects with references to the copies. If a class contains only primitive fields or references to immutable objects, then it is usually the case that no fields in the object returned by super.clone need to be modified.

Returns:Object

a clone of this instance.

Annotations
@Override
Exceptions
CloneNotSupportedException:
if the object's class does not support the Cloneable interface. Subclasses that override the clone method can also throw this exception to indicate that an instance cannot be cloned.
equalsback to summary
public boolean equals(final Object o)

Overrides java.lang.Object.equals.

Doc from java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.

The equals method implements an equivalence relation on non-null object references:

  • It is reflexive: for any non-null reference value x, x.equals(x) should return true.
  • It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
  • It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
  • It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.
  • For any non-null reference value x, x.equals(null) should return false.

An equivalence relation partitions the elements it operates on into equivalence classes; all the members of an equivalence class are equal to each other. Members of an equivalence class are substitutable for each other, at least for some purposes.

Parameters
o:Object

the reference object with which to compare.

Returns:boolean

true if this object is the same as the obj argument; false otherwise.

Annotations
@Override
getCentralDirectoryDataback to summary
public byte[] getCentralDirectoryData()

Implements org.apache.commons.compress.archivers.zip.ZipExtraField.getCentralDirectoryData.

The actual data to put into central directory data - without Header-ID or length specifier.

Returns:byte[]

get the data

Annotations
@Override
getCentralDirectoryLengthback to summary
public ZipShort getCentralDirectoryLength()

Implements org.apache.commons.compress.archivers.zip.ZipExtraField.getCentralDirectoryLength.

Length of the extra field in the central directory data - without Header-ID or length specifier.

Returns:ZipShort

a ZipShort for the length of the data of this extra field

Annotations
@Override
getGIDback to summary
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:long

the GID value.

getHeaderIdback to summary
public ZipShort getHeaderId()

Implements org.apache.commons.compress.archivers.zip.ZipExtraField.getHeaderId.

The Header-ID.

Returns:ZipShort

the value for the header id for this extrafield

Annotations
@Override
getLocalFileDataDataback to summary
public byte[] getLocalFileDataData()

Implements org.apache.commons.compress.archivers.zip.ZipExtraField.getLocalFileDataData.

The actual data to put into local file data - without Header-ID or length specifier.

Returns:byte[]

get the data

Annotations
@Override
getLocalFileDataLengthback to summary
public ZipShort getLocalFileDataLength()

Implements org.apache.commons.compress.archivers.zip.ZipExtraField.getLocalFileDataLength.

Length of the extra field in the local file data - without Header-ID or length specifier.

Returns:ZipShort

a ZipShort for the length of the data of this extra field

Annotations
@Override
getUIDback to summary
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:long

the UID value.

hashCodeback to summary
public int hashCode()

Overrides java.lang.Object.hashCode.

Doc from java.lang.Object.hashCode.

Returns a hash code value for the object. This method is supported for the benefit of hash tables such as those provided by java.util.HashMap.

The general contract of hashCode is:

  • Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application.
  • If two objects are equal according to the equals method, then calling the hashCode method on each of the two objects must produce the same integer result.
  • It is not required that if two objects are unequal according to the equals method, then calling the hashCode method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables.
Returns:int

a hash code value for this object.

Annotations
@Override
parseFromCentralDirectoryDataback to summary
public void parseFromCentralDirectoryData(final byte[] buffer, final int offset, final int length) throws ZipException

Implements org.apache.commons.compress.archivers.zip.ZipExtraField.parseFromCentralDirectoryData.

Doesn't do anything since this class doesn't store anything inside the central directory.

Parameters
buffer:byte[]

Doc from org.apache.commons.compress.archivers.zip.ZipExtraField.parseFromCentralDirectoryData.

the buffer to read data from

offset:int

Doc from org.apache.commons.compress.archivers.zip.ZipExtraField.parseFromCentralDirectoryData.

offset into buffer to read data

length:int

Doc from org.apache.commons.compress.archivers.zip.ZipExtraField.parseFromCentralDirectoryData.

the length of data

Annotations
@Override
Exceptions
ZipException:

Doc from org.apache.commons.compress.archivers.zip.ZipExtraField.parseFromCentralDirectoryData.

on error

parseFromLocalFileDataback to summary
public void parseFromLocalFileData(final byte[] data, int offset, final int length) throws ZipException

Implements org.apache.commons.compress.archivers.zip.ZipExtraField.parseFromLocalFileData.

Populate data from this array as if it was in local file data.

Parameters
data:byte[]

an array of bytes

offset:int

the start offset

length:int

the number of bytes in the array from offset

Annotations
@Override
Exceptions
ZipException:
on error
resetback to summary
private void reset()

Reset state back to newly constructed state. Helps us make sure parse() calls always generate clean results.

setGIDback to summary
public void setGID(final long l)

Sets the GID.

Parameters
l:long

GID value to set on this extra field.

setUIDback to summary
public void setUID(final long l)

Sets the UID.

Parameters
l:long

UID value to set on this extra field.

toStringback to summary
public String toString()

Overrides java.lang.Object.toString.

Returns a String representation of this class useful for debugging purposes.

Returns:String

A String representation of this class useful for debugging purposes.

Annotations
@Override
trimLeadingZeroesForceMinLengthback to summary
pack-priv static byte[] trimLeadingZeroesForceMinLength(final 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[]

byte[] array to trim & pad.

Returns:byte[]

trimmed & padded byte[] array.