@deftypemethod Attributes {public String} getValue (java.lang.String@w{ }@var{name}) 
Gets the value of an attribute name given as a String.
@end deftypemethod
@deftypemethod Attributes {public String} getValue (java.util.jar.Attributes.Name@w{ }@var{name}) 
Gets the value of the given attribute name.
@end deftypemethod
@deftypemethod Attributes {public String} putValue (java.lang.String@w{ }@var{name}, java.lang.String@w{ }@var{value}) 
Stores an attribute name (represented by a String) and value in this
 Attributes map.
 When the (case insensitive string) name already exists the value is
 replaced and the old value is returned.
@end deftypemethod
@deftypemethod Attributes {public Object} clone () 
Return a clone of this attribute map.
@end deftypemethod
@deftypemethod Attributes {public void} clear () 
Removes all attributes.
@end deftypemethod
@deftypemethod Attributes {public boolean} containsKey (java.lang.Object@w{ }@var{attrName}) 
Checks to see if there is an attribute with the specified name.
 XXX - what if the object is a String?
@end deftypemethod
@deftypemethod Attributes {public boolean} containsValue (java.lang.Object@w{ }@var{attrValue}) 
Checks to see if there is an attribute name with the specified value.
@end deftypemethod
@deftypemethod Attributes {public Set} entrySet () 
Gives a Set of attribute name and values pairs as MapEntries.
@end deftypemethod
@deftypemethod Attributes {public boolean} equals (java.lang.Object@w{ }@var{o}) 
Checks to see if two Attributes are equal. The supplied object must be
 a real instance of Attributes and contain the same attribute name/value
 pairs.
@end deftypemethod
@deftypemethod Attributes {public Object} get (java.lang.Object@w{ }@var{attrName}) 
Gets the value of a specified attribute name.
 XXX - what if the object is a String?
@end deftypemethod
@deftypemethod Attributes {public int} hashCode () 
Returns the hashcode of the attribute name/value map.
@end deftypemethod
@deftypemethod Attributes {public boolean} isEmpty () 
Returns true if there are no attributes set, false otherwise.
@end deftypemethod
@deftypemethod Attributes {public Set} keySet () 
Gives a Set of all the values of defined attribute names.
@end deftypemethod
@deftypemethod Attributes {public Object} put (java.lang.Object@w{ }@var{name}, java.lang.Object@w{ }@var{value}) 
Adds or replaces a attribute name/value pair.
 XXX - What if the name is a string? What if the name is neither a Name
 nor a String? What if the value is not a string?
@end deftypemethod
@deftypemethod Attributes {public void} putAll (java.util.Map@w{ }@var{attr}) 
Adds or replaces all attribute name/value pairs from another
 Attributes object to this one. The supplied Map must be an instance of
 Attributes.
@end deftypemethod
@deftypemethod Attributes {public Object} remove (java.lang.Object@w{ }@var{name}) 
Remove a attribute name/value pair.
 XXX - What if the name is a String?
@end deftypemethod
@deftypemethod Attributes {public int} size () 
Returns the number of defined attribute name/value pairs.
@end deftypemethod
@deftypemethod Attributes {public Collection} values () 
Returns all the values of the defined attribute name/value pairs as a
 Collection.
@end deftypemethod
@deftypemethod Attributes.Name {public int} hashCode () 
Returns the hash code of the (lowercase) String representation of
 this Name.
@end deftypemethod
@deftypemethod Attributes.Name {public boolean} equals (java.lang.Object@w{ }@var{o}) 
Checks if another object is equal to this Name object.
 Another object is equal to this Name object if it is an instance of
 Name and the (lowercase) string representation of the name is equal.
@end deftypemethod
@deftypemethod Attributes.Name {public String} toString () 
Returns the string representation of this Name as given to the
 constructor (not neccesarily the lower case representation).
@end deftypemethod
@deftypemethod JarEntry {public Attributes} getAttributes () @*throws IOException
Returns a copy of the Attributes set for this entry.
 When no Attributes are set in the manifest null is returned.
@end deftypemethod
@deftypemethod JarEntry {public Certificate} getCertificates () 
Returns a copy of the certificates set for this entry.
 When no certificates are set or when not all data of this entry has
 been read null is returned.
 


 To make sure that this call returns a valid value you must read all
 data from the JarInputStream for this entry.
 When you don't need the data for an entry but want to know the
 certificates that are set for the entry then you can skip all data by
 calling @code{skip(entry.getSize())} on the JarInputStream for
 the entry.
@end deftypemethod
@deftypemethod JarFile {public Enumeration} entries () @*throws IllegalStateException
Returns a enumeration of all the entries in the JarFile.
 Note that also the Jar META-INF entries are returned.
@end deftypemethod
@deftypemethod JarFile {public ZipEntry} getEntry (java.lang.String@w{ }@var{name}) 
XXX
 It actually returns a JarEntry not a zipEntry
@end deftypemethod
@deftypemethod JarFile {public synchronized InputStream} getInputStream (java.util.zip.ZipEntry@w{ }@var{entry}) @*throws ZipException, IOException
XXX should verify the inputstream
@end deftypemethod
@deftypemethod JarFile {public JarEntry} getJarEntry (java.lang.String@w{ }@var{name}) 
Returns the JarEntry that belongs to the name if such an entry
 exists in the JarFile. Returns null otherwise
 Convenience method that just casts the result from @code{getEntry}
 to a JarEntry.
@end deftypemethod
@deftypemethod JarFile {public Manifest} getManifest () 
Returns the manifest for this JarFile or null when the JarFile does not
 contain a manifest file.
@end deftypemethod
@deftypemethod JarInputStream {protected ZipEntry} createZipEntry (java.lang.String@w{ }@var{name}) 
Creates a JarEntry for a particular name and consults the manifest
 for the Attributes of the entry.
 Used by @code{ZipEntry.getNextEntry()}
@end deftypemethod
@deftypemethod JarInputStream {public Manifest} getManifest () 
Returns the Manifest for the jar file or null if there was no Manifest.
@end deftypemethod
@deftypemethod JarInputStream {public ZipEntry} getNextEntry () @*throws IOException
Returns the next entry or null when there are no more entries.
 Does actually return a JarEntry, if you don't want to cast it yourself
 use @code{getNextJarEntry()}. Does not return any entries found
 at the beginning of the ZipFile that are special
 (those that start with "META-INF/").
@end deftypemethod
@deftypemethod JarInputStream {public JarEntry} getNextJarEntry () @*throws IOException
Returns the next jar entry or null when there are no more entries.
@end deftypemethod
@deftypemethod JarInputStream {public int} read (byte[]@w{ }@var{buf}, int@w{ }@var{off}, int@w{ }@var{len}) @*throws IOException
XXX
@end deftypemethod
@deftypemethod JarOutputStream {public void} putNextEntry (java.util.zip.ZipEntry@w{ }@var{entry}) @*throws IOException
Prepares the JarOutputStream for writing the next entry. 
 This implementation just calls @code{super.putNextEntre()}.
@end deftypemethod
@deftypemethod Manifest {public Attributes} getMainAttributes () 
Gets the main attributes of this Manifest.
@end deftypemethod
@deftypemethod Manifest {public Map} getEntries () 
Gets a map of entry Strings to Attributes for all the entries described
 in this manifest. Adding, changing or removing from this entries map
 changes the entries of this manifest.
@end deftypemethod
@deftypemethod Manifest {public Attributes} getAttributes (java.lang.String@w{ }@var{entryName}) 
Returns the Attributes associated with the Entry.
 


 Implemented as:
 @code{return (Attributes)getEntries().get(entryName)}
@end deftypemethod
@deftypemethod Manifest {public void} clear () 
Clears the main attributes and removes all the entries from the
 manifest.
@end deftypemethod
@deftypemethod Manifest {public void} read (java.io.InputStream@w{ }@var{in}) @*throws IOException
XXX
@end deftypemethod
@deftypemethod Manifest {public void} write (java.io.OutputStream@w{ }@var{out}) @*throws IOException
XXX
@end deftypemethod
@deftypemethod Manifest {public Object} clone () 
Makes a deep copy of the main attributes, but a shallow copy of
 the other entries. This means that you can freely add, change or remove
 the main attributes or the entries of the new manifest without effecting
 the original manifest, but adding, changing or removing attributes from
 a particular entry also changes the attributes of that entry in the
 original manifest. Calls @code{new Manifest(this)}.
@end deftypemethod
@deftypemethod Manifest {public boolean} equals (java.lang.Object@w{ }@var{o}) 
Checks if another object is equal to this Manifest object.
 Another Object is equal to this Manifest object if it is an instance of
 Manifest and the main attributes and the entries of the other manifest
 are equal to this one.
@end deftypemethod
@deftypemethod Manifest {public int} hashCode () 
Calculates the hash code of the manifest. Implemented by a xor of the
 hash code of the main attributes with the hash code of the entries map.
@end deftypemethod
