org.codehaus.plexus.archiver.zip

Class AbstractZipArchiver

public abstract class AbstractZipArchiver extends AbstractArchiver implements FilterEnabled, FinalizerEnabled

Version: $Revision: 3651 $ $Date: 2006-08-21 17:05:02 -0400 (Mon, 21 Aug 2006) $

Field Summary
protected HashtableaddedDirs
VectoraddedFiles
protected booleanaddingNewFiles
true when we are adding new files into the Zip file, as opposed to adding back the unchanged files
protected StringarchiveType
Stringcomment
booleandoCompress
booleandoFilesonly
protected booleandoubleFilePass
booleandoUpdate
protected Stringduplicate
Stringencoding
Encoding to use for filenames, defaults to the platform's default encoding.
protected Hashtableentries
static longEMPTY_CRC
FilterSupportfilterSupport
Listfinalizers
booleanroundUp
Whether the file modification times will be rounded up to the next even number of seconds.
booleansavedDoUpdate
protected booleanskipWriting
Method Summary
protected voidaddParentDirs(File baseDir, String entry, ZipOutputStream zOut, String prefix)
Ensure all parent dirs of a given entry have been added.
protected voidaddResources(Map resources, ZipOutputStream zOut)
Add the given resources.
protected voidcleanUp()
Do any clean up necessary to allow this instance to be used again.
voidcreateArchive()
voidcreateArchiveMain()
protected booleancreateEmptyZip(File zipFile)
Create an empty zip file
protected voidfinalizeZipOutputStream(ZipOutputStream zOut)
method for subclasses to override
protected ListgetArchiveFinalizers()
StringgetComment()
intgetDirMode()
StringgetEncoding()
intgetFileMode()
protected MapgetResourcesToAdd(File file)
protected MapgetResourcesToUpdate(File file)
protected voidinitZipOutputStream(ZipOutputStream zOut)
method for subclasses to override
booleanisCompress()
booleanisFilesonly()
booleanisInUpdateMode()
booleanisRoundUp()
booleanisSupportingForced()
voidreset()
Makes this instance reset all attributes to their default values and forget all children.
protected voidrunArchiveFinalizers()
voidsetArchiveFilters(List filters)
voidsetArchiveFinalizers(List archiveFinalizers)
voidsetComment(String comment)
voidsetCompress(boolean compress)
voidsetDirMode(String octalString)
A 3 digit octal string, specify the user, group and other modes in the standard Unix fashion; optional, default=0755
voidsetEncoding(String encoding)
voidsetFileMode(String octalString)
A 3 digit octal string, specify the user, group and other modes in the standard Unix fashion; optional, default=0644
voidsetFilesonly(boolean f)
If true, emulate Sun's jar utility by not adding parent directories; optional, defaults to false.
voidsetRoundUp(boolean r)
Whether the file modification times will be rounded up to the next even number of seconds.
voidsetUpdateMode(boolean update)
protected voidzipDir(File dir, ZipOutputStream zOut, String vPath, int mode)
protected voidzipFile(InputStream in, ZipOutputStream zOut, String vPath, long lastModified, File fromArchive, int mode)
Adds a new entry to the archive, takes care of duplicates as well.
protected voidzipFile(ArchiveEntry entry, ZipOutputStream zOut, String vPath)
Method that gets called when adding from java.io.File instances.

Field Detail

addedDirs

protected Hashtable addedDirs

addedFiles

private Vector addedFiles

addingNewFiles

protected boolean addingNewFiles
true when we are adding new files into the Zip file, as opposed to adding back the unchanged files

archiveType

protected String archiveType

comment

private String comment

doCompress

private boolean doCompress

doFilesonly

private boolean doFilesonly

doubleFilePass

protected boolean doubleFilePass

doUpdate

private boolean doUpdate

duplicate

protected String duplicate

encoding

private String encoding
Encoding to use for filenames, defaults to the platform's default encoding.

entries

protected Hashtable entries

EMPTY_CRC

private static final long EMPTY_CRC

filterSupport

private FilterSupport filterSupport

finalizers

private List finalizers

roundUp

private boolean roundUp
Whether the file modification times will be rounded up to the next even number of seconds.

savedDoUpdate

private boolean savedDoUpdate

skipWriting

protected boolean skipWriting

Method Detail

addParentDirs

protected final void addParentDirs(File baseDir, String entry, ZipOutputStream zOut, String prefix)
Ensure all parent dirs of a given entry have been added.

addResources

protected final void addResources(Map resources, ZipOutputStream zOut)
Add the given resources.

Parameters: resources the resources to add zOut the stream to write to

cleanUp

protected void cleanUp()
Do any clean up necessary to allow this instance to be used again.

When we get here, the Zip file has been closed and all we need to do is to reset some globals.

This method will only reset globals that have been changed during execute(), it will not alter the attributes or nested child elements. If you want to reset the instance so that you can later zip a completely different set of files, you must use the reset method.

See Also: AbstractZipArchiver

createArchive

public void createArchive()

createArchiveMain

private void createArchiveMain()

createEmptyZip

protected boolean createEmptyZip(File zipFile)
Create an empty zip file

Returns: true for historic reasons

finalizeZipOutputStream

protected void finalizeZipOutputStream(ZipOutputStream zOut)
method for subclasses to override

getArchiveFinalizers

protected List getArchiveFinalizers()

getComment

public String getComment()

getDirMode

public int getDirMode()

Deprecated: use AbstractArchiver.getDefaultDirectoryMode() instead.

getEncoding

public String getEncoding()

getFileMode

public int getFileMode()

Deprecated: use AbstractArchiver.getDefaultFileMode() instead.

getResourcesToAdd

protected Map getResourcesToAdd(File file)

getResourcesToUpdate

protected Map getResourcesToUpdate(File file)

initZipOutputStream

protected void initZipOutputStream(ZipOutputStream zOut)
method for subclasses to override

isCompress

public boolean isCompress()

isFilesonly

public boolean isFilesonly()

isInUpdateMode

public boolean isInUpdateMode()

isRoundUp

public boolean isRoundUp()

isSupportingForced

public boolean isSupportingForced()

reset

public void reset()
Makes this instance reset all attributes to their default values and forget all children.

See Also: AbstractZipArchiver

runArchiveFinalizers

protected void runArchiveFinalizers()

setArchiveFilters

public void setArchiveFilters(List filters)

setArchiveFinalizers

public void setArchiveFinalizers(List archiveFinalizers)

setComment

public void setComment(String comment)

setCompress

public void setCompress(boolean compress)

setDirMode

public void setDirMode(String octalString)

Deprecated: use AbstractArchiver.setDefaultDirectoryMode(int).

A 3 digit octal string, specify the user, group and other modes in the standard Unix fashion; optional, default=0755

setEncoding

public void setEncoding(String encoding)

setFileMode

public void setFileMode(String octalString)

Deprecated: use AbstractArchiver.setDefaultFileMode(int) instead.

A 3 digit octal string, specify the user, group and other modes in the standard Unix fashion; optional, default=0644

setFilesonly

public void setFilesonly(boolean f)
If true, emulate Sun's jar utility by not adding parent directories; optional, defaults to false.

setRoundUp

public void setRoundUp(boolean r)
Whether the file modification times will be rounded up to the next even number of seconds.

Zip archives store file modification times with a granularity of two seconds, so the times will either be rounded up or down. If you round down, the archive will always seem out-of-date when you rerun the task, so the default is to round up. Rounding up may lead to a different type of problems like JSPs inside a web archive that seem to be slightly more recent than precompiled pages, rendering precompilation useless.

setUpdateMode

public void setUpdateMode(boolean update)

zipDir

protected void zipDir(File dir, ZipOutputStream zOut, String vPath, int mode)

zipFile

protected void zipFile(InputStream in, ZipOutputStream zOut, String vPath, long lastModified, File fromArchive, int mode)
Adds a new entry to the archive, takes care of duplicates as well.

Parameters: in the stream to read data for the entry from. zOut the stream to write to. vPath the name this entry shall have in the archive. lastModified last modification time for the entry. fromArchive the original archive we are copying this entry from, will be null if we are not copying from an archive. mode the Unix permissions to set.

zipFile

protected void zipFile(ArchiveEntry entry, ZipOutputStream zOut, String vPath)
Method that gets called when adding from java.io.File instances.

This implementation delegates to the six-arg version.

Parameters: entry the file to add to the archive zOut the stream to write to vPath the name this entry shall have in the archive