Class AbstractZipArchiver

java.lang.Object
org.codehaus.plexus.archiver.AbstractArchiver
org.codehaus.plexus.archiver.zip.AbstractZipArchiver
All Implemented Interfaces:
Archiver, FinalizerEnabled
Direct Known Subclasses:
ZipArchiver

public abstract class AbstractZipArchiver extends AbstractArchiver
  • Field Details

    • archiveType

      protected String archiveType
    • entries

      protected final Hashtable<String,String> entries
    • addedDirs

      protected final AddedDirs addedDirs
    • doubleFilePass

      protected boolean doubleFilePass
    • skipWriting

      protected boolean skipWriting
    • duplicate

      @Deprecated protected final String duplicate
      Deprecated.
      See Also:
    • addingNewFiles

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

      protected org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream zipArchiveOutputStream
  • Constructor Details

    • AbstractZipArchiver

      public AbstractZipArchiver()
  • Method Details

    • getComment

      public String getComment()
    • setComment

      public void setComment(String comment)
    • getEncoding

      public String getEncoding()
    • setEncoding

      public void setEncoding(String encoding)
    • setCompress

      public void setCompress(boolean compress)
    • isCompress

      public boolean isCompress()
    • isRecompressAddedZips

      public boolean isRecompressAddedZips()
    • setRecompressAddedZips

      public void setRecompressAddedZips(boolean recompressAddedZips)
    • setUpdateMode

      public void setUpdateMode(boolean update)
    • isInUpdateMode

      public boolean isInUpdateMode()
    • setFilesonly

      public void setFilesonly(boolean f)
      If true, emulate Sun's jar utility by not adding parent directories; optional, defaults to false.
      Parameters:
      f - true to emilate sun jar utility
    • isFilesonly

      public boolean isFilesonly()
    • execute

      protected void execute() throws ArchiverException, IOException
      Specified by:
      execute in class AbstractArchiver
      Throws:
      ArchiverException
      IOException
    • finalizeZipOutputStream

      protected void finalizeZipOutputStream(ConcurrentJarCreator zOut) throws IOException, ArchiverException
      Throws:
      IOException
      ArchiverException
    • addResources

      protected final void addResources(ResourceIterator resources, ConcurrentJarCreator zOut) throws IOException, ArchiverException
      Add the given resources.
      Parameters:
      resources - the resources to add
      zOut - the stream to write to
      Throws:
      IOException
      ArchiverException
    • zipFile

      protected void zipFile(org.apache.commons.compress.parallel.InputStreamSupplier in, ConcurrentJarCreator zOut, String vPath, long lastModified, File fromArchive, int mode, String symlinkDestination, boolean addInParallel) throws IOException, ArchiverException
      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
      symlinkDestination -
      addInParallel - Indicates if the entry should be add in parallel. If set to false it is added synchronously. If the entry is symbolic link this parameter is ignored.
      Throws:
      IOException
      ArchiverException
    • zipFile

      protected void zipFile(ArchiveEntry entry, ConcurrentJarCreator zOut, String vPath) throws IOException, ArchiverException
      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
      Throws:
      IOException
      ArchiverException
    • setZipEntryTime

      protected void setZipEntryTime(org.apache.commons.compress.archivers.zip.ZipArchiveEntry zipEntry, long lastModifiedTime)
      Set the ZipEntry dostime using the date if specified otherwise the original time.

      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. plexus-archiver chooses to round up.

      Parameters:
      zipEntry - to set the last modified time
      lastModifiedTime - to set in the zip entry only if AbstractArchiver.getLastModifiedTime() returns null
    • zipDir

      protected void zipDir(org.codehaus.plexus.components.io.resources.PlexusIoResource dir, ConcurrentJarCreator zOut, String vPath, int mode, String encodingToUse) throws IOException
      Throws:
      IOException
    • createEmptyZip

      protected boolean createEmptyZip(File zipFile) throws ArchiverException
      Create an empty zip file
      Parameters:
      zipFile - The file
      Returns:
      true for historic reasons
      Throws:
      ArchiverException
    • cleanUp

      protected void cleanUp() throws IOException
      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.

      Overrides:
      cleanUp in class AbstractArchiver
      Throws:
      IOException
      See Also:
    • reset

      public void reset()
      Makes this instance reset all attributes to their default values and forget all children.
      See Also:
    • initZipOutputStream

      protected void initZipOutputStream(ConcurrentJarCreator zOut) throws ArchiverException, IOException
      method for subclasses to override
      Parameters:
      zOut - The output stream
      Throws:
      ArchiverException
      IOException
    • isSupportingForced

      public boolean isSupportingForced()
      method for subclasses to override
      Specified by:
      isSupportingForced in interface Archiver
      Overrides:
      isSupportingForced in class AbstractArchiver
      Returns:
      true, if the archiver does support uptodate checks, false otherwise
      See Also:
    • revert

      protected boolean revert(StringBuffer messageBuffer)
      Overrides:
      revert in class AbstractArchiver
    • close

      protected void close() throws IOException
      Specified by:
      close in class AbstractArchiver
      Throws:
      IOException
    • getArchiveType

      protected String getArchiveType()
      Specified by:
      getArchiveType in class AbstractArchiver
    • normalizeLastModifiedTime

      protected FileTime normalizeLastModifiedTime(FileTime lastModifiedTime)
      Description copied from class: AbstractArchiver
      Normalize last modified time value to get reproducible archive entries, based on archive binary format.

      tar uses UTC timestamp, but zip uses local time then requires tweaks to make the value reproducible whatever the current timezone is.

      Overrides:
      normalizeLastModifiedTime in class AbstractArchiver
      Parameters:
      lastModifiedTime - The last modification time
      Returns:
      The normalized last modification time
      See Also: