public class DefaultArchive extends java.lang.Object implements Archive
ARCHIVE_ENTRY_NAME_COMPARATOR, BUFFER_SIZE
Modifier | Constructor and Description |
---|---|
protected |
DefaultArchive(boolean forceRewrite)
Creates a new instance of
DefaultArchive and initializes it to omit the Created-By line in the manifest file. |
Modifier and Type | Method and Description |
---|---|
void |
addContents(ArchiveEntry cdaPacket) |
void |
addContents(ArchiveEntry[] cdaPackets)
Fills in the manifest with all necessary information provided by the
ArchiveEntry array passed in. |
void |
addContents(java.util.Collection cdaPackets)
Fills in the manifest with all necessary information provided by the
Collection of ArchiveEntry instances passed in. |
void |
addContents(java.util.Collection cdaPackets, java.lang.String entryNamePrefix)
Fills in the manifest with all necessary information provided by the
Collection of ArchiveEntry instances passed in. |
void |
addDirectoryTrees(java.net.URL[] dirs, java.lang.String entryNamePrefix) |
boolean |
containsEntry(java.lang.String entryName) |
java.lang.Object |
copyTo(java.lang.Object target)
Copies the internal state of
this object to the specified copy . |
protected void |
copyToImpl(DefaultArchive copy) |
static DefaultArchive |
create(boolean includeManifest, boolean forceRewrite)
Convenience method.
|
java.util.Iterator<ArchiveEntry> |
getArchiveEntries()
Returns an iterator to the contents that have been added to the
Archive instance so far. |
oracle.jdevimpl.deploy.CdaPacket[] |
getCdaPackets()
Deprecated.
Use getArchiveEntries() instead.
|
java.util.ArrayList<ArchiveEntry[]> |
getCollisions() |
int |
getCompressionLevel()
Return the desired compression level.
|
ArchiveEntry |
getEntryByName(java.lang.String entryName)
Get a handle to an ArchiveEntry by its name.
|
protected static java.lang.String |
getJarFileCreatedBy()
Returns the string that should be used in the manifest file's Created-By main attribute.
|
java.lang.String |
getMainAttribute(java.lang.String attrName)
Returns the specified main attribute from the jar's manifest file.
|
java.util.jar.Manifest |
getManifest()
Returns the current
Manifest . |
java.lang.String |
getManifestAsString()
Returns the current
Manfiest as a String . |
java.util.SortedSet |
getMissingEntryNames()
Returns a
SortedSet of entry names corresponding to entries which could not be found (i.e. |
boolean |
hasContents()
Returns whether the written jar file had any contents.
|
boolean |
isCompressed() |
boolean |
isIncludeManifest() |
void |
mergeManifest(java.util.jar.Manifest manifest)
Merges the given
Manifest with the manifest currently held by DefaultArchive . |
void |
mergeManifest(java.net.URL manifestURL)
Merge the manifest at the specified
URL . |
ArchiveEntry |
removeEntry(java.lang.String entryName) |
ArchiveEntry |
renameEntry(java.lang.String fromName, java.lang.String toName)
Change the name of an ArchiveEntry.
|
void |
setCompressed(boolean compressed)
Sets whether the jar file that is written out should be compressed.
|
void |
setCompressionLevel(int level)
Set the desired compression level.
|
void |
setCreatedBy(java.lang.String creator)
Sets the
Created-By main attribute for the manifest file. |
void |
setIncludeManifest(boolean includeManifest) |
void |
setMainAttribute(java.lang.String attrName, java.lang.String attrValue)
Sets the specified main attribute for the jar's manifest file.
|
void |
setMainClass(java.lang.String mainClass)
Sets the
Main-Class main attribute for the manifest file. |
void |
setReportNameCollisions(boolean reportNameCollisions)
Deprecated.
|
static boolean |
writeJarFile(Archive archive, java.net.URL outputURL, java.io.PrintWriter printWriter, boolean forceRewrite, boolean compressed)
Utility method to write out a Jar file given an Archive.
|
boolean |
writeJarFile(java.net.URL outputURL, java.io.PrintWriter printWriter)
Writes out the jar file according to all of the
ArchiveEntry s, manifests, and attributes that have been set on this DefaultArchive instance. |
protected DefaultArchive(boolean forceRewrite)
DefaultArchive
and initializes it to omit the Created-By
line in the manifest file.public static DefaultArchive create(boolean includeManifest, boolean forceRewrite)
DefaultArchive
instance. If includeManifest
is true, a manifest file will be produced by the DefaultArchive
instance, and the manifest file's Created-By
attribute will be set to the appropriate value automatically.protected static java.lang.String getJarFileCreatedBy()
public java.util.jar.Manifest getManifest()
Manifest
.getManifest
in interface Archive
public java.lang.String getManifestAsString() throws java.io.IOException
Manfiest
as a String
. If there is no manifest, null
is returned.getManifestAsString
in interface Archive
java.io.IOException
- if an I/O exception occurs while converting the manifest contents to String
.public void setCreatedBy(java.lang.String creator)
Created-By
main attribute for the manifest file.
If creator
is null
, then the Created-By
attribute is removed from the manifest.
setCreatedBy
in interface Archive
public java.lang.String getMainAttribute(java.lang.String attrName)
null
if the attribute does not exist. Throws IllegalArgumentException if the attribute name is not formatted properly.getMainAttribute
in interface Archive
public void setMainAttribute(java.lang.String attrName, java.lang.String attrValue)
attrName
is null
this method does nothing. If attrValue
is null
then the specified attribute is removed from the manifest's main attributes section.setMainAttribute
in interface Archive
public void setMainClass(java.lang.String mainClass)
Main-Class
main attribute for the manifest file. The Main-Class
attribute allows a jar file to be used on the command line to launch an application, so that you can launch the application with a command like java -jar MyApp.jar
.
If mainClass
is null
, then the Main-Class
attribute is removed from the manifest.
setMainClass
in interface Archive
public void setCompressed(boolean compressed)
setCompressed
in interface Archive
public void setCompressionLevel(int level)
Archive
setCompressionLevel
in interface Archive
level
- the compression level, -1 or 0-9Deflater
public boolean isCompressed()
isCompressed
in interface Archive
public int getCompressionLevel()
Archive
getCompressionLevel
in interface Archive
Deflater
public boolean isIncludeManifest()
isIncludeManifest
in interface Archive
public void setIncludeManifest(boolean includeManifest)
setIncludeManifest
in interface Archive
@Deprecated public void setReportNameCollisions(boolean reportNameCollisions)
setReportNameCollisions
in interface Archive
public java.util.ArrayList<ArchiveEntry[]> getCollisions()
public void mergeManifest(java.util.jar.Manifest manifest)
Manifest
with the manifest currently held by DefaultArchive
.mergeManifest
in interface Archive
public void mergeManifest(java.net.URL manifestURL) throws java.io.IOException
URL
.mergeManifest
in interface Archive
java.io.IOException
public void addContents(java.util.Collection cdaPackets, java.lang.String entryNamePrefix)
Collection
of ArchiveEntry
instances passed in. This Collection
is traversed in the order provided by its Iterator
. Before the collection of ArchiveEntry
s is processed, the given entryNamePrefix
is prepended to each ArchiveEntry
's entryName
. This provides a convenient way of adding a collection of content to a particular directory tree within the archive (e.g. "WEB-INF/classes/"). If the entryNamePrefix
represents a directory, it must end with a forward-slash ("/"), because there is no automatic insertion of any intermediate character during the prepending.addContents
in interface Archive
public void addContents(java.util.Collection cdaPackets)
Collection
of ArchiveEntry
instances passed in. This Collection
is traversed in the order provided by its Iterator
.addContents
in interface Archive
public void addContents(ArchiveEntry cdaPacket)
addContents
in interface Archive
public boolean containsEntry(java.lang.String entryName)
containsEntry
in interface Archive
public ArchiveEntry removeEntry(java.lang.String entryName)
removeEntry
in interface Archive
public void addContents(ArchiveEntry[] cdaPackets)
ArchiveEntry
array passed in.addContents
in interface Archive
public void addDirectoryTrees(java.net.URL[] dirs, java.lang.String entryNamePrefix)
addDirectoryTrees
in interface Archive
@Deprecated public oracle.jdevimpl.deploy.CdaPacket[] getCdaPackets()
CdaPacket
objects corresponding to the contents that have been added to the DefaultArchive
instance so far.public java.util.SortedSet getMissingEntryNames()
SortedSet
of entry names corresponding to entries which could not be found (i.e. their URL
is null
). This information is based on the entries that have been added through one of the addContent()
methods up to the point in time that getMissingEntryNames()
is called. If no entries are missing, an empty SortedSet
is returned.getMissingEntryNames
in interface Archive
public boolean hasContents()
writeJarFile()
methods), then this will return false
.hasContents
in interface Archive
public boolean writeJarFile(java.net.URL outputURL, java.io.PrintWriter printWriter) throws java.io.IOException
ArchiveEntry
s, manifests, and attributes that have been set on this DefaultArchive
instance.outputURL
- The URL
where the jar file will be written.printWriter
- A PrintWriter
where any output messages will be written. This parameter can be null
which means that any output messages will not be printed at all.java.io.IOException
public static boolean writeJarFile(Archive archive, java.net.URL outputURL, java.io.PrintWriter printWriter, boolean forceRewrite, boolean compressed) throws java.io.IOException
archive
- the Archive to write out.outputURL
- the file to write to.printWriter
- print writer for log messagesforceRewrite
- whether the jar should be re-written if one already exists at outputURL and if it is up-to-date. A timestamp comparision is done of the files within the jar and its Manifest.compressed
- if the file should be compressedDeployException
java.io.IOException
public java.util.Iterator<ArchiveEntry> getArchiveEntries()
Archive
Archive
instance so far.getArchiveEntries
in interface Archive
public java.lang.Object copyTo(java.lang.Object target)
Copyable
this
object to the specified copy
. If copy
is null
, then this method should create a new instance of this
class and proceed to copy the internal state to the newly created object. Generally, only the persistent state of the object should be copied, but whether or not it is appropriate to copy transient properties is at the discretion of the individual implementor.
Regardless of whether the copy occurs to an existing object or to a newly created object, the return value is object to which this
object's state was copied.
There is a standard implementation pattern for the copyTo
method that helps avoid problems that arise when a Copyable
object is subclassed. The pattern is:
The parameter passed into thepublic Object copyTo( Object target ) { final <this_class> copy = target != null ? (<this_class>) target : new <this_class>(); copyToImpl( copy ); return copy; } protected final void copyToImpl( <this_class> copy ) { super.copyToImpl( copy ); // if necessary // put code here for copying the properties of <this_class> }
copyToImpl
method is the same type of this
class. The responsibility of copyToImpl
is to copy the state of this
class through direct access of the fields. The copyToImpl
method should not use getters and setters since these may be overridden, causing the state of this
class to be incompletely copied.copyTo
in interface Copyable
target
- The target object to which the state of this
object should be copied. If target
is null
, then the copyTo
method will return a new instance of this
class.this
object was copied. If the target
was non-null
, then the return value is the same as the target
object that was passed in; otherwise, the return value is a new instance of this
class.protected void copyToImpl(DefaultArchive copy)
public ArchiveEntry getEntryByName(java.lang.String entryName)
Archive
ArchiveEntry e = archive.getEntryByName("WEB-INF/web.xml");
getEntryByName
in interface Archive
public ArchiveEntry renameEntry(java.lang.String fromName, java.lang.String toName)
Archive
renameEntry
in interface Archive