Class AbstractArchiver
- java.lang.Object
-
- org.codehaus.plexus.archiver.AbstractArchiver
-
- All Implemented Interfaces:
Archiver,FinalizerEnabled
- Direct Known Subclasses:
AbstractZipArchiver,BZip2Archiver,DirectoryArchiver,GZipArchiver,SnappyArchiver,TarArchiver,XZArchiver
public abstract class AbstractArchiver extends java.lang.Object implements Archiver, FinalizerEnabled
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static classAbstractArchiver.AddedResourceCollection
-
Field Summary
Fields Modifier and Type Field Description private javax.inject.Provider<ArchiverManager>archiverManagerProviderInjected: Allows us to pull the ArchiverManager instance out of the container without causing a chicken-and-egg instantiation/composition problem.private java.util.List<java.io.Closeable>closeablesprivate intdefaultDirectoryModeprivate intdefaultFileModeprivate java.io.FiledestFileprivate java.io.FiledotFileDirectoryprivate java.lang.StringduplicateBehaviorprivate java.util.Comparator<java.lang.String>filenameComparatorprivate java.util.List<ArchiveFinalizer>finalizersprivate booleanforcedprivate intforcedDirectoryModeprivate intforcedFileModeprivate booleanignorePermissionsprivate booleanincludeEmptyDirsprivate java.nio.file.attribute.FileTimelastModifiedTimeprivate org.slf4j.Loggerloggerprivate intoverrideGidprivate java.lang.StringoverrideGroupNameprivate intoverrideUidprivate java.lang.StringoverrideUserNameprivate booleanreplacePathSlashesToJavaPathsprivate java.util.List<java.lang.Object>resourcesA list of the following objects: Instances ofArchiveEntry, which are passed back bygetResources()without modifications . Instances ofPlexusIoResourceCollection, which are converted into anIteratorover instances ofArchiveEntrybygetResources().private intumaskprivate booleanuseJvmChmodsince 2.2 is on by default-
Fields inherited from interface org.codehaus.plexus.archiver.Archiver
DEFAULT_DIR_MODE, DEFAULT_FILE_MODE, DEFAULT_SYMLILNK_MODE, DUPLICATES_ADD, DUPLICATES_FAIL, DUPLICATES_PRESERVE, DUPLICATES_SKIP, DUPLICATES_VALID_BEHAVIORS
-
-
Constructor Summary
Constructors Constructor Description AbstractArchiver()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods Modifier and Type Method Description voidaddArchivedFileSet(java.io.File archiveFile)Deprecated.voidaddArchivedFileSet(java.io.File archiveFile, java.lang.String prefix)Deprecated.voidaddArchivedFileSet(java.io.File archiveFile, java.lang.String[] includes, java.lang.String[] excludes)Deprecated.voidaddArchivedFileSet(java.io.File archiveFile, java.lang.String prefix, java.lang.String[] includes, java.lang.String[] excludes)Deprecated.voidaddArchivedFileSet(ArchivedFileSet fileSet)Adds the given archive file set to the archive.voidaddArchivedFileSet(ArchivedFileSet fileSet, java.nio.charset.Charset charset)Adds the given archive file set to the archive.voidaddArchiveFinalizer(ArchiveFinalizer finalizer)private voidaddCloseable(java.lang.Object maybeCloseable)voidaddDirectory(java.io.File directory)Deprecated.voidaddDirectory(java.io.File directory, java.lang.String prefix)Deprecated.voidaddDirectory(java.io.File directory, java.lang.String[] includes, java.lang.String[] excludes)Deprecated.voidaddDirectory(java.io.File directory, java.lang.String prefix, java.lang.String[] includes, java.lang.String[] excludes)Deprecated.voidaddFile(java.io.File inputFile, java.lang.String destFileName)voidaddFile(java.io.File inputFile, java.lang.String destFileName, int permissions)voidaddFileSet(FileSet fileSet)Adds the given file set to the archive.voidaddResource(org.codehaus.plexus.components.io.resources.PlexusIoResource resource, java.lang.String destFileName, int permissions)Adds the given resource collection to the archive.voidaddResources(org.codehaus.plexus.components.io.resources.PlexusIoResourceCollection collection)Adds a resource collection to the archive.voidaddSymlink(java.lang.String symlinkName, int permissions, java.lang.String symlinkDestination)voidaddSymlink(java.lang.String symlinkName, java.lang.String symlinkDestination)private ArchiveEntryasArchiveEntry(AbstractArchiver.AddedResourceCollection collection, org.codehaus.plexus.components.io.resources.PlexusIoResource resource)protected ArchiveEntryasArchiveEntry(org.codehaus.plexus.components.io.resources.PlexusIoResource resource, java.lang.String destFileName, int permissions, org.codehaus.plexus.components.io.resources.PlexusIoResourceCollection collection)protected org.codehaus.plexus.components.io.resources.PlexusIoResourceCollectionasResourceCollection(ArchivedFileSet fileSet, java.nio.charset.Charset charset)protected booleancheckForced()protected voidcleanUp()protected abstract voidclose()private static voidcloseIfCloseable(java.lang.Object resource)private voidcloseIterators()private static voidcloseQuietlyIfCloseable(java.lang.Object resource)voidconfigureReproducible(java.util.Date lastModifiedDate)Deprecated.UseconfigureReproducibleBuild(FileTime)instead.voidconfigureReproducibleBuild(java.nio.file.attribute.FileTime lastModifiedTime)Configure the archiver to create archives in a reproducible way (see Reproducible Builds).voidcreateArchive()private voiddoAddResource(java.lang.Object item)protected abstract voidexecute()protected abstract java.lang.StringgetArchiveType()intgetDefaultDirectoryMode()intgetDefaultFileMode()java.io.FilegetDestFile()intgetDirectoryMode()Gets the forced mode for directories, falling back to default if none is forced.java.lang.StringgetDuplicateBehavior()Returns the behavior of this archiver when duplicate files are detected.private longgetFileLastModifiedTime(java.io.File file)Returns the last modified time in milliseconds of a file.intgetFileMode()java.util.Comparator<java.lang.String>getFilenameComparator()java.util.Map<java.lang.String,ArchiveEntry>getFiles()Deprecated.UsegetResources()instead.booleangetIncludeEmptyDirs()java.util.DategetLastModifiedDate()Deprecated.UsegetLastModifiedTime()instead.java.nio.file.attribute.FileTimegetLastModifiedTime()Returns the last modification time of the archiver.protected org.slf4j.LoggergetLogger()intgetOverrideDirectoryMode()intgetOverrideFileMode()intgetOverrideGid()java.lang.StringgetOverrideGroupName()intgetOverrideUid()java.lang.StringgetOverrideUserName()intgetRawDefaultFileMode()Deprecated.ResourceIteratorgetResources()Returns an iterator over instances ofArchiveEntry, which have previously been added by calls toArchiver.addResources(PlexusIoResourceCollection),Archiver.addResource(PlexusIoResource, String, int),Archiver.addFileSet(FileSet), etc.intgetUmask()protected booleanhasVirtualFiles()booleanisForced()Returns, whether recreating the archive is forced (default).booleanisIgnorePermissions()booleanisSupportingForced()Returns, whether the archive supports uptodate checks.protected booleanisUptodate()booleanisUseJvmChmod()Deprecated.protected java.nio.file.attribute.FileTimenormalizeLastModifiedTime(java.nio.file.attribute.FileTime lastModifiedTime)Normalize last modified time value to get reproducible archive entries, based on archive binary format.protected voidpostCreateArchive()This method is called after the archive creation completes successfully (no exceptions are thrown).protected booleanrevert(java.lang.StringBuffer messageBuffer)protected voidrunArchiveFinalizers()voidsetArchiveFinalizers(java.util.List<ArchiveFinalizer> archiveFinalizers)voidsetDefaultDirectoryMode(int mode)This is the "default" value we should use if no other value is specifiedvoidsetDefaultFileMode(int mode)voidsetDestFile(java.io.File destFile)voidsetDirectoryMode(int mode)This is the forced mode that should be used regardless if set, otherwise falls back to default.voidsetDotFileDirectory(java.io.File dotFileDirectory)voidsetDuplicateBehavior(java.lang.String duplicate)Set the behavior of this archiver when duplicate files are detected.voidsetFileMode(int mode)voidsetFilenameComparator(java.util.Comparator<java.lang.String> filenameComparator)Set filename comparator, used to sort file entries when scanning directories since File.list() does not guarantee any order.voidsetForced(boolean forced)Sets, whether recreating the archive is forced (default).voidsetIgnorePermissions(boolean ignorePermissions)voidsetIncludeEmptyDirs(boolean includeEmptyDirs)voidsetLastModifiedDate(java.util.Date lastModifiedDate)Deprecated.UsesetLastModifiedTime(FileTime)instead.voidsetLastModifiedTime(java.nio.file.attribute.FileTime lastModifiedTime)Sets the last modification time of the entries (if non null).voidsetOverrideGid(int gid)voidsetOverrideGroupName(java.lang.String groupName)voidsetOverrideUid(int uid)voidsetOverrideUserName(java.lang.String userName)voidsetUmask(int umask)voidsetUseJvmChmod(boolean useJvmChmod)Deprecated.private ArchiveEntryupdateArchiveEntryAttributes(ArchiveEntry entry)protected voidvalidate()
-
-
-
Field Detail
-
logger
private final org.slf4j.Logger logger
-
destFile
private java.io.File destFile
-
resources
private final java.util.List<java.lang.Object> resources
A list of the following objects:- Instances of
ArchiveEntry, which are passed back bygetResources()without modifications . - Instances of
PlexusIoResourceCollection, which are converted into anIteratorover instances ofArchiveEntrybygetResources().
- Instances of
-
includeEmptyDirs
private boolean includeEmptyDirs
-
forcedFileMode
private int forcedFileMode
-
forcedDirectoryMode
private int forcedDirectoryMode
-
defaultFileMode
private int defaultFileMode
-
defaultDirectoryMode
private int defaultDirectoryMode
-
umask
private int umask
-
forced
private boolean forced
-
finalizers
private java.util.List<ArchiveFinalizer> finalizers
-
dotFileDirectory
private java.io.File dotFileDirectory
-
duplicateBehavior
private java.lang.String duplicateBehavior
-
replacePathSlashesToJavaPaths
private final boolean replacePathSlashesToJavaPaths
-
closeables
private final java.util.List<java.io.Closeable> closeables
-
useJvmChmod
private boolean useJvmChmod
since 2.2 is on by default- Since:
- 1.1
-
lastModifiedTime
private java.nio.file.attribute.FileTime lastModifiedTime
-
filenameComparator
private java.util.Comparator<java.lang.String> filenameComparator
- Since:
- 4.2.0
-
overrideUid
private int overrideUid
- Since:
- 4.2.0
-
overrideUserName
private java.lang.String overrideUserName
- Since:
- 4.2.0
-
overrideGid
private int overrideGid
- Since:
- 4.2.0
-
overrideGroupName
private java.lang.String overrideGroupName
- Since:
- 4.2.0
-
archiverManagerProvider
@Inject private javax.inject.Provider<ArchiverManager> archiverManagerProvider
Injected: Allows us to pull the ArchiverManager instance out of the container without causing a chicken-and-egg instantiation/composition problem.
-
ignorePermissions
private boolean ignorePermissions
- Since:
- 1.1
-
-
Method Detail
-
getLogger
protected org.slf4j.Logger getLogger()
-
getDuplicateBehavior
public java.lang.String getDuplicateBehavior()
Description copied from interface:ArchiverReturns the behavior of this archiver when duplicate files are detected.- Specified by:
getDuplicateBehaviorin interfaceArchiver
-
setDuplicateBehavior
public void setDuplicateBehavior(java.lang.String duplicate)
Description copied from interface:ArchiverSet the behavior of this archiver when duplicate files are detected. One of:
- add - Add the duplicates to the archive as duplicate entries
- skip/preserve - Leave the first entry encountered in the archive, skip the new one
- fail - throw an
ArchiverException
SeeArchiver.DUPLICATES_ADD,Archiver.DUPLICATES_SKIP,Archiver.DUPLICATES_PRESERVE,Archiver.DUPLICATES_FAIL.- Specified by:
setDuplicateBehaviorin interfaceArchiver
-
setFileMode
public final void setFileMode(int mode)
- Specified by:
setFileModein interfaceArchiver
-
setDefaultFileMode
public final void setDefaultFileMode(int mode)
- Specified by:
setDefaultFileModein interfaceArchiver
-
getOverrideFileMode
public final int getOverrideFileMode()
- Specified by:
getOverrideFileModein interfaceArchiver
-
getFileMode
public final int getFileMode()
- Specified by:
getFileModein interfaceArchiver
-
getDefaultFileMode
public final int getDefaultFileMode()
- Specified by:
getDefaultFileModein interfaceArchiver
-
getRawDefaultFileMode
@Deprecated public final int getRawDefaultFileMode()
Deprecated.
-
setDirectoryMode
public final void setDirectoryMode(int mode)
Description copied from interface:ArchiverThis is the forced mode that should be used regardless if set, otherwise falls back to default.- Specified by:
setDirectoryModein interfaceArchiver
-
setDefaultDirectoryMode
public final void setDefaultDirectoryMode(int mode)
Description copied from interface:ArchiverThis is the "default" value we should use if no other value is specified- Specified by:
setDefaultDirectoryModein interfaceArchiver
-
getOverrideDirectoryMode
public final int getOverrideDirectoryMode()
- Specified by:
getOverrideDirectoryModein interfaceArchiver
-
getDirectoryMode
public final int getDirectoryMode()
Description copied from interface:ArchiverGets the forced mode for directories, falling back to default if none is forced.- Specified by:
getDirectoryModein interfaceArchiver- Returns:
-
getDefaultDirectoryMode
public final int getDefaultDirectoryMode()
- Specified by:
getDefaultDirectoryModein interfaceArchiver
-
getIncludeEmptyDirs
public boolean getIncludeEmptyDirs()
- Specified by:
getIncludeEmptyDirsin interfaceArchiver
-
setIncludeEmptyDirs
public void setIncludeEmptyDirs(boolean includeEmptyDirs)
- Specified by:
setIncludeEmptyDirsin interfaceArchiver
-
addDirectory
@Deprecated public void addDirectory(@Nonnull java.io.File directory) throws ArchiverExceptionDeprecated.Description copied from interface:ArchiverObsolete, useArchiver.addFileSet(FileSet).- Specified by:
addDirectoryin interfaceArchiver- Throws:
ArchiverException
-
addDirectory
@Deprecated public void addDirectory(@Nonnull java.io.File directory, java.lang.String prefix) throws ArchiverExceptionDeprecated.Description copied from interface:ArchiverObsolete, useArchiver.addFileSet(FileSet).- Specified by:
addDirectoryin interfaceArchiver- Throws:
ArchiverException
-
addDirectory
@Deprecated public void addDirectory(@Nonnull java.io.File directory, java.lang.String[] includes, java.lang.String[] excludes) throws ArchiverExceptionDeprecated.Description copied from interface:ArchiverObsolete, useArchiver.addFileSet(FileSet).- Specified by:
addDirectoryin interfaceArchiver- Throws:
ArchiverException
-
addDirectory
@Deprecated public void addDirectory(@Nonnull java.io.File directory, java.lang.String prefix, java.lang.String[] includes, java.lang.String[] excludes) throws ArchiverExceptionDeprecated.Description copied from interface:ArchiverObsolete, useArchiver.addFileSet(FileSet).- Specified by:
addDirectoryin interfaceArchiver- Throws:
ArchiverException
-
addFileSet
public void addFileSet(@Nonnull FileSet fileSet) throws ArchiverExceptionDescription copied from interface:ArchiverAdds the given file set to the archive. This method is basically obsoletingArchiver.addDirectory(File),Archiver.addDirectory(File, String),Archiver.addDirectory(File, String[], String[]), andArchiver.addDirectory(File, String, String[], String[]). However, as these methods are in widespread use, they cannot easily be deprecated.- Specified by:
addFileSetin interfaceArchiver- Throws:
ArchiverException- Adding the file set failed.
-
addFile
public void addFile(@Nonnull java.io.File inputFile, @Nonnull java.lang.String destFileName) throws ArchiverException- Specified by:
addFilein interfaceArchiver- Throws:
ArchiverException
-
addSymlink
public void addSymlink(java.lang.String symlinkName, java.lang.String symlinkDestination) throws ArchiverException- Specified by:
addSymlinkin interfaceArchiver- Throws:
ArchiverException
-
addSymlink
public void addSymlink(java.lang.String symlinkName, int permissions, java.lang.String symlinkDestination) throws ArchiverException- Specified by:
addSymlinkin interfaceArchiver- Throws:
ArchiverException
-
updateArchiveEntryAttributes
private ArchiveEntry updateArchiveEntryAttributes(ArchiveEntry entry)
-
asArchiveEntry
protected ArchiveEntry asArchiveEntry(@Nonnull org.codehaus.plexus.components.io.resources.PlexusIoResource resource, java.lang.String destFileName, int permissions, org.codehaus.plexus.components.io.resources.PlexusIoResourceCollection collection) throws ArchiverException
- Throws:
ArchiverException
-
asArchiveEntry
private ArchiveEntry asArchiveEntry(AbstractArchiver.AddedResourceCollection collection, org.codehaus.plexus.components.io.resources.PlexusIoResource resource) throws ArchiverException
- Throws:
ArchiverException
-
addResource
public void addResource(org.codehaus.plexus.components.io.resources.PlexusIoResource resource, java.lang.String destFileName, int permissions) throws ArchiverExceptionDescription copied from interface:ArchiverAdds the given resource collection to the archive. Stream transformers are *not* supported on this method- Specified by:
addResourcein interfaceArchiver- Throws:
ArchiverException
-
addFile
public void addFile(@Nonnull java.io.File inputFile, @Nonnull java.lang.String destFileName, int permissions) throws ArchiverException- Specified by:
addFilein interfaceArchiver- Throws:
ArchiverException
-
getResources
@Nonnull public ResourceIterator getResources() throws ArchiverException
Description copied from interface:ArchiverReturns an iterator over instances ofArchiveEntry, which have previously been added by calls toArchiver.addResources(PlexusIoResourceCollection),Archiver.addResource(PlexusIoResource, String, int),Archiver.addFileSet(FileSet), etc.- Specified by:
getResourcesin interfaceArchiver- Throws:
ArchiverException
-
closeIfCloseable
private static void closeIfCloseable(java.lang.Object resource) throws java.io.IOException- Throws:
java.io.IOException
-
closeQuietlyIfCloseable
private static void closeQuietlyIfCloseable(java.lang.Object resource)
-
getFiles
@Deprecated public java.util.Map<java.lang.String,ArchiveEntry> getFiles()
Deprecated.UsegetResources()instead.Returns a map of the files that have been added to the archive.Note: The entry names in the map use platform-specific path separators (e.g., backslashes on Windows, forward slashes on Unix). For ZIP archivers, the actual archive entries will use forward slashes as required by the ZIP specification, but this map returns names as they were added.
For ZIP-based archivers (ZipArchiver, JarArchiver, etc.), use the overridden implementation which normalizes paths to forward slashes to match the actual ZIP entry names.
-
getDestFile
public java.io.File getDestFile()
- Specified by:
getDestFilein interfaceArchiver
-
setDestFile
public void setDestFile(java.io.File destFile)
- Specified by:
setDestFilein interfaceArchiver
-
asResourceCollection
protected org.codehaus.plexus.components.io.resources.PlexusIoResourceCollection asResourceCollection(ArchivedFileSet fileSet, java.nio.charset.Charset charset) throws ArchiverException
- Throws:
ArchiverException
-
addResources
public void addResources(org.codehaus.plexus.components.io.resources.PlexusIoResourceCollection collection) throws ArchiverExceptionAdds a resource collection to the archive.- Specified by:
addResourcesin interfaceArchiver- Throws:
ArchiverException
-
doAddResource
private void doAddResource(java.lang.Object item)
-
addArchivedFileSet
public void addArchivedFileSet(ArchivedFileSet fileSet) throws ArchiverException
Description copied from interface:ArchiverAdds the given archive file set to the archive. This method is basically obsoletingArchiver.addArchivedFileSet(File),Archiver.addArchivedFileSet(File, String[], String[]), andArchiver.addArchivedFileSet(File, String, String[], String[]). However, as these methods are in widespread use, they cannot easily be deprecated. Stream transformers are supported on this method- Specified by:
addArchivedFileSetin interfaceArchiver- Throws:
ArchiverException
-
addArchivedFileSet
public void addArchivedFileSet(ArchivedFileSet fileSet, java.nio.charset.Charset charset) throws ArchiverException
Description copied from interface:ArchiverAdds the given archive file set to the archive. This method is basically obsoletingArchiver.addArchivedFileSet(File),Archiver.addArchivedFileSet(File, String[], String[]), andArchiver.addArchivedFileSet(File, String, String[], String[]). However, as these methods are in widespread use, they cannot easily be deprecated.- Specified by:
addArchivedFileSetin interfaceArchiver- Parameters:
fileSet- the fileSet to addcharset- the encoding to use, particularly useful to specific non-standard filename encodings for some kinds of archives (for instance zip files) Stream transformers are supported on this method- Throws:
ArchiverException
-
addArchivedFileSet
@Deprecated public void addArchivedFileSet(@Nonnull java.io.File archiveFile, java.lang.String prefix, java.lang.String[] includes, java.lang.String[] excludes) throws ArchiverExceptionDeprecated.Description copied from interface:ArchiverObsolete, useArchiver.addArchivedFileSet(ArchivedFileSet).- Specified by:
addArchivedFileSetin interfaceArchiver- Throws:
ArchiverException- Since:
- 1.0-alpha-7
-
addArchivedFileSet
@Deprecated public void addArchivedFileSet(@Nonnull java.io.File archiveFile, java.lang.String prefix) throws ArchiverExceptionDeprecated.Description copied from interface:ArchiverObsolete, useArchiver.addArchivedFileSet(ArchivedFileSet).- Specified by:
addArchivedFileSetin interfaceArchiver- Throws:
ArchiverException- Since:
- 1.0-alpha-7
-
addArchivedFileSet
@Deprecated public void addArchivedFileSet(@Nonnull java.io.File archiveFile, java.lang.String[] includes, java.lang.String[] excludes) throws ArchiverExceptionDeprecated.Description copied from interface:ArchiverObsolete, useArchiver.addArchivedFileSet(ArchivedFileSet).- Specified by:
addArchivedFileSetin interfaceArchiver- Throws:
ArchiverException- Since:
- 1.0-alpha-7
-
addArchivedFileSet
@Deprecated public void addArchivedFileSet(@Nonnull java.io.File archiveFile) throws ArchiverExceptionDeprecated.Description copied from interface:ArchiverObsolete, useArchiver.addArchivedFileSet(ArchivedFileSet).- Specified by:
addArchivedFileSetin interfaceArchiver- Throws:
ArchiverException- Since:
- 1.0-alpha-7
-
isForced
public boolean isForced()
Description copied from interface:ArchiverReturns, whether recreating the archive is forced (default). Setting this option to false means, that the archiver should compare the timestamps of included files with the timestamp of the target archive and rebuild the archive only, if the latter timestamp precedes the former timestamps. Checking for timestamps will typically offer a performance gain (in particular, if the following steps in a build can be suppressed, if an archive isn't recreated) on the cost that you get inaccurate results from time to time. In particular, removal of source files won't be detected.
An archiver doesn't necessarily support checks for uptodate. If so, setting this option to true will simply be ignored. The method
Archiver.isSupportingForced()may be called to check whether an archiver does support uptodate checks.- Specified by:
isForcedin interfaceArchiver- Returns:
- true if the target archive should always be created; false otherwise
- See Also:
Archiver.setForced(boolean),Archiver.isSupportingForced()
-
setForced
public void setForced(boolean forced)
Description copied from interface:ArchiverSets, whether recreating the archive is forced (default). Setting this option to false means, that the archiver should compare the timestamps of included files with the timestamp of the target archive and rebuild the archive only, if the latter timestamp precedes the former timestamps. Checking for timestamps will typically offer a performance gain (in particular, if the following steps in a build can be suppressed, if an archive isn't recreated) on the cost that you get inaccurate results from time to time. In particular, removal of source files won't be detected.
An archiver doesn't necessarily support checks for uptodate. If so, setting this option to true will simply be ignored. The method
Archiver.isSupportingForced()may be called to check whether an archiver does support uptodate checks.- Specified by:
setForcedin interfaceArchiver- Parameters:
forced- true, if the target archive should always be created; false otherwise- See Also:
Archiver.isForced(),Archiver.isSupportingForced()
-
addArchiveFinalizer
public void addArchiveFinalizer(ArchiveFinalizer finalizer)
- Specified by:
addArchiveFinalizerin interfaceFinalizerEnabled
-
setArchiveFinalizers
public void setArchiveFinalizers(java.util.List<ArchiveFinalizer> archiveFinalizers)
- Specified by:
setArchiveFinalizersin interfaceFinalizerEnabled
-
setDotFileDirectory
public void setDotFileDirectory(java.io.File dotFileDirectory)
- Specified by:
setDotFileDirectoryin interfaceArchiver
-
isUptodate
protected boolean isUptodate() throws ArchiverException- Throws:
ArchiverException
-
getFileLastModifiedTime
private long getFileLastModifiedTime(java.io.File file) throws ArchiverExceptionReturns the last modified time in milliseconds of a file. It avoids the bug where milliseconds precision is lost on File#lastModified (JDK-8177809) on JDK8 and Linux.- Parameters:
file- The file where the last modified time will be returned for.- Returns:
- The last modified time in milliseconds of the file.
- Throws:
ArchiverException- In the case of an IOException, for example when the file does not exists.
-
checkForced
protected boolean checkForced() throws ArchiverException- Throws:
ArchiverException
-
isSupportingForced
public boolean isSupportingForced()
Description copied from interface:ArchiverReturns, whether the archive supports uptodate checks. If so, you may setArchiver.setForced(boolean)to true.- Specified by:
isSupportingForcedin interfaceArchiver- Returns:
- true, if the archiver does support uptodate checks, false otherwise
- See Also:
Archiver.setForced(boolean),Archiver.isForced()
-
runArchiveFinalizers
protected void runArchiveFinalizers() throws ArchiverException- Throws:
ArchiverException
-
createArchive
public final void createArchive() throws ArchiverException, java.io.IOException- Specified by:
createArchivein interfaceArchiver- Throws:
ArchiverExceptionjava.io.IOException
-
hasVirtualFiles
protected boolean hasVirtualFiles()
-
revert
protected boolean revert(java.lang.StringBuffer messageBuffer)
-
validate
protected void validate() throws ArchiverException, java.io.IOException- Throws:
ArchiverExceptionjava.io.IOException
-
postCreateArchive
protected void postCreateArchive() throws ArchiverException, java.io.IOExceptionThis method is called after the archive creation completes successfully (no exceptions are thrown). Subclasses may override this method in order to augment or validate the archive after it is created.- Throws:
ArchiverExceptionjava.io.IOException- Since:
- 3.6
-
getArchiveType
protected abstract java.lang.String getArchiveType()
-
addCloseable
private void addCloseable(java.lang.Object maybeCloseable)
-
closeIterators
private void closeIterators()
-
close
protected abstract void close() throws java.io.IOException- Throws:
java.io.IOException
-
cleanUp
protected void cleanUp() throws java.io.IOException- Throws:
java.io.IOException
-
execute
protected abstract void execute() throws ArchiverException, java.io.IOException- Throws:
ArchiverExceptionjava.io.IOException
-
isUseJvmChmod
@Deprecated public boolean isUseJvmChmod()
Deprecated.- Specified by:
isUseJvmChmodin interfaceArchiver- Returns:
- Since:
- 1.1
-
setUseJvmChmod
@Deprecated public void setUseJvmChmod(boolean useJvmChmod)
Deprecated.Description copied from interface:Archiverto use or not the jvm method for file permissions: user all not active for group permissions- Specified by:
setUseJvmChmodin interfaceArchiver- Since:
- 1.1
-
isIgnorePermissions
public boolean isIgnorePermissions()
- Specified by:
isIgnorePermissionsin interfaceArchiver- Since:
- 1.1
-
setIgnorePermissions
public void setIgnorePermissions(boolean ignorePermissions)
- Specified by:
setIgnorePermissionsin interfaceArchiver- Since:
- 1.1
-
setLastModifiedDate
@Deprecated public void setLastModifiedDate(java.util.Date lastModifiedDate)
Deprecated.UsesetLastModifiedTime(FileTime)instead.Description copied from interface:ArchiverDefine forced last modification date for entries (if non null).- Specified by:
setLastModifiedDatein interfaceArchiver
-
getLastModifiedDate
@Deprecated public java.util.Date getLastModifiedDate()
Deprecated.UsegetLastModifiedTime()instead.- Specified by:
getLastModifiedDatein interfaceArchiver
-
setLastModifiedTime
public void setLastModifiedTime(java.nio.file.attribute.FileTime lastModifiedTime)
Description copied from interface:ArchiverSets the last modification time of the entries (if non null).- Specified by:
setLastModifiedTimein interfaceArchiver- Parameters:
lastModifiedTime- to set in the archive entries- See Also:
Archiver.getLastModifiedTime()
-
getLastModifiedTime
public java.nio.file.attribute.FileTime getLastModifiedTime()
Description copied from interface:ArchiverReturns the last modification time of the archiver.- Specified by:
getLastModifiedTimein interfaceArchiver- Returns:
- The last modification time of the archiver, null if not specified
- See Also:
Archiver.setLastModifiedTime(FileTime)
-
setFilenameComparator
public void setFilenameComparator(java.util.Comparator<java.lang.String> filenameComparator)
Description copied from interface:ArchiverSet filename comparator, used to sort file entries when scanning directories since File.list() does not guarantee any order.- Specified by:
setFilenameComparatorin interfaceArchiver
-
getFilenameComparator
public java.util.Comparator<java.lang.String> getFilenameComparator()
-
setOverrideUid
public void setOverrideUid(int uid)
- Specified by:
setOverrideUidin interfaceArchiver
-
setOverrideUserName
public void setOverrideUserName(java.lang.String userName)
- Specified by:
setOverrideUserNamein interfaceArchiver
-
getOverrideUid
public int getOverrideUid()
- Specified by:
getOverrideUidin interfaceArchiver
-
getOverrideUserName
public java.lang.String getOverrideUserName()
- Specified by:
getOverrideUserNamein interfaceArchiver
-
setOverrideGid
public void setOverrideGid(int gid)
- Specified by:
setOverrideGidin interfaceArchiver
-
setOverrideGroupName
public void setOverrideGroupName(java.lang.String groupName)
- Specified by:
setOverrideGroupNamein interfaceArchiver
-
getOverrideGid
public int getOverrideGid()
- Specified by:
getOverrideGidin interfaceArchiver
-
getOverrideGroupName
public java.lang.String getOverrideGroupName()
- Specified by:
getOverrideGroupNamein interfaceArchiver
-
configureReproducible
@Deprecated public void configureReproducible(java.util.Date lastModifiedDate)
Deprecated.UseconfigureReproducibleBuild(FileTime)instead.Description copied from interface:ArchiverThis method is obsolete and will just callArchiver.configureReproducibleBuild(FileTime)with the Date transformed into FileTime.- Specified by:
configureReproduciblein interfaceArchiver- Parameters:
lastModifiedDate- the date to use for archive entries last modified time
-
configureReproducibleBuild
public void configureReproducibleBuild(java.nio.file.attribute.FileTime lastModifiedTime)
Description copied from interface:ArchiverConfigure the archiver to create archives in a reproducible way (see Reproducible Builds).This will configure:
- reproducible archive entries order,
- defined entries timestamp
- Specified by:
configureReproducibleBuildin interfaceArchiver- Parameters:
lastModifiedTime- The last modification time of the entries- See Also:
- Reproducible Builds
-
normalizeLastModifiedTime
protected java.nio.file.attribute.FileTime normalizeLastModifiedTime(java.nio.file.attribute.FileTime lastModifiedTime)
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.
- Parameters:
lastModifiedTime- The last modification time- Returns:
- The normalized last modification time
- See Also:
configureReproducibleBuild(FileTime)
-
-