org.apache.tools.ant.taskdefs
Class Manifest

java.lang.Object
  extended by org.apache.tools.ant.taskdefs.Manifest

public class Manifest
extends java.lang.Object

Holds the data of a jar manifest. Manifests are processed according to the Jar file specification.. Specifically, a manifest element consists of a set of attributes and sections. These sections in turn may contain attributes. Note in particular that this may result in manifest lines greater than 72 bytes being wrapped and continued on the next line. If an application can not handle the continuation mechanism, it is a defect in the application, not this task.

Since:
Ant 1.4

Nested Class Summary
static class Manifest.Attribute
          An attribute for the manifest.
static class Manifest.Section
          A manifest section - you can nest attribute elements into sections.
 
Field Summary
static java.lang.String ATTRIBUTE_CLASSPATH
          The Class-Path Header is special - it can be duplicated
static java.lang.String ATTRIBUTE_FROM
          The From Header is disallowed in a Manifest
static java.lang.String ATTRIBUTE_MANIFEST_VERSION
          The standard manifest version header
static java.lang.String ATTRIBUTE_NAME
          The Name Attribute is the first in a named section
static java.lang.String ATTRIBUTE_SIGNATURE_VERSION
          The standard Signature Version header
static java.lang.String DEFAULT_MANIFEST_VERSION
          Default Manifest version if one is not specified
static java.lang.String EOL
          The End-Of-Line marker in manifests
static java.lang.String ERROR_FROM_FORBIDDEN
          Error for attributes
static java.lang.String JAR_ENCODING
          Encoding to be used for JAR files.
static int MAX_LINE_LENGTH
          The max length of a line in a Manifest
static int MAX_SECTION_LENGTH
          Max length of a line section which is continued.
 
Constructor Summary
Manifest()
          Construct an empty manifest
Manifest(java.io.Reader r)
          Read a manifest file from the given reader
 
Method Summary
 void addConfiguredAttribute(Manifest.Attribute attribute)
          Add an attribute to the manifest - it is added to the main section.
 void addConfiguredSection(Manifest.Section section)
          Add a section to the manifest
 boolean equals(java.lang.Object rhs)
           
static Manifest getDefaultManifest()
          Construct a manifest from Ant's default manifest file.
 Manifest.Section getMainSection()
          Get the main section of the manifest
 java.lang.String getManifestVersion()
          Get the version of the manifest
 Manifest.Section getSection(java.lang.String name)
          Get a particular section from the manifest
 java.util.Enumeration getSectionNames()
          Get the section names in this manifest.
 java.util.Enumeration getWarnings()
          Get the warnings for this manifest.
 int hashCode()
           
 void merge(Manifest other)
          Merge the contents of the given manifest into this manifest
 void merge(Manifest other, boolean overwriteMain)
          Merge the contents of the given manifest into this manifest
 java.lang.String toString()
          Convert the manifest to its string representation
 void write(java.io.PrintWriter writer)
          Write the manifest out to a print writer.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

ATTRIBUTE_MANIFEST_VERSION

public static final java.lang.String ATTRIBUTE_MANIFEST_VERSION
The standard manifest version header

See Also:
Constant Field Values

ATTRIBUTE_SIGNATURE_VERSION

public static final java.lang.String ATTRIBUTE_SIGNATURE_VERSION
The standard Signature Version header

See Also:
Constant Field Values

ATTRIBUTE_NAME

public static final java.lang.String ATTRIBUTE_NAME
The Name Attribute is the first in a named section

See Also:
Constant Field Values

ATTRIBUTE_FROM

public static final java.lang.String ATTRIBUTE_FROM
The From Header is disallowed in a Manifest

See Also:
Constant Field Values

ATTRIBUTE_CLASSPATH

public static final java.lang.String ATTRIBUTE_CLASSPATH
The Class-Path Header is special - it can be duplicated

See Also:
Constant Field Values

DEFAULT_MANIFEST_VERSION

public static final java.lang.String DEFAULT_MANIFEST_VERSION
Default Manifest version if one is not specified

See Also:
Constant Field Values

MAX_LINE_LENGTH

public static final int MAX_LINE_LENGTH
The max length of a line in a Manifest

See Also:
Constant Field Values

MAX_SECTION_LENGTH

public static final int MAX_SECTION_LENGTH
Max length of a line section which is continued. Need to allow for the CRLF.

See Also:
Constant Field Values

EOL

public static final java.lang.String EOL
The End-Of-Line marker in manifests

See Also:
Constant Field Values

ERROR_FROM_FORBIDDEN

public static final java.lang.String ERROR_FROM_FORBIDDEN
Error for attributes

See Also:
Constant Field Values

JAR_ENCODING

public static final java.lang.String JAR_ENCODING
Encoding to be used for JAR files.

See Also:
Constant Field Values
Constructor Detail

Manifest

public Manifest()
Construct an empty manifest


Manifest

public Manifest(java.io.Reader r)
         throws ManifestException,
                java.io.IOException
Read a manifest file from the given reader

Parameters:
r - is the reader from which the Manifest is read
Throws:
ManifestException - if the manifest is not valid according to the JAR spec
java.io.IOException - if the manifest cannot be read from the reader.
Method Detail

getDefaultManifest

public static Manifest getDefaultManifest()
                                   throws BuildException
Construct a manifest from Ant's default manifest file.

Returns:
the default manifest.
Throws:
BuildException - if there is a problem loading the default manifest

addConfiguredSection

public void addConfiguredSection(Manifest.Section section)
                          throws ManifestException
Add a section to the manifest

Parameters:
section - the manifest section to be added
Throws:
ManifestException - if the secti0on is not valid.

addConfiguredAttribute

public void addConfiguredAttribute(Manifest.Attribute attribute)
                            throws ManifestException
Add an attribute to the manifest - it is added to the main section.

Parameters:
attribute - the attribute to be added.
Throws:
ManifestException - if the attribute is not valid.

merge

public void merge(Manifest other)
           throws ManifestException
Merge the contents of the given manifest into this manifest

Parameters:
other - the Manifest to be merged with this one.
Throws:
ManifestException - if there is a problem merging the manifest according to the Manifest spec.

merge

public void merge(Manifest other,
                  boolean overwriteMain)
           throws ManifestException
Merge the contents of the given manifest into this manifest

Parameters:
other - the Manifest to be merged with this one.
overwriteMain - whether to overwrite the main section of the current manifest
Throws:
ManifestException - if there is a problem merging the manifest according to the Manifest spec.

write

public void write(java.io.PrintWriter writer)
           throws java.io.IOException
Write the manifest out to a print writer.

Parameters:
writer - the Writer to which the manifest is written
Throws:
java.io.IOException - if the manifest cannot be written

toString

public java.lang.String toString()
Convert the manifest to its string representation

Overrides:
toString in class java.lang.Object
Returns:
a multiline string with the Manifest as it appears in a Manifest file.

getWarnings

public java.util.Enumeration getWarnings()
Get the warnings for this manifest.

Returns:
an enumeration of warning strings

hashCode

public int hashCode()
Overrides:
hashCode in class java.lang.Object
Returns:
a hashcode based on the version, main and sections.
See Also:
Object.hashCode()

equals

public boolean equals(java.lang.Object rhs)
Overrides:
equals in class java.lang.Object
Parameters:
rhs - the object to check for equality.
Returns:
true if the version, main and sections are the same.
See Also:
Object.equals(java.lang.Object)

getManifestVersion

public java.lang.String getManifestVersion()
Get the version of the manifest

Returns:
the manifest's version string

getMainSection

public Manifest.Section getMainSection()
Get the main section of the manifest

Returns:
the main section of the manifest

getSection

public Manifest.Section getSection(java.lang.String name)
Get a particular section from the manifest

Parameters:
name - the name of the section desired.
Returns:
the specified section or null if that section does not exist in the manifest

getSectionNames

public java.util.Enumeration getSectionNames()
Get the section names in this manifest.

Returns:
an Enumeration of section names