Author: Douglas Voet (dvoet at sapient.com)
Version: $Revision: 1.2 $($Author: araman $ / $Date: 2003/05/05 07:44:12 $)
Created: May 2003
The classes in the java.util.jar package provide funtionality to read and write
jar files. In order to read the contents of a specific entry of a jar file, the JarFile class
has a method, getInputStream, that returns an input stream for a specific entry. There is no
method, however, to get an output stream for a specific jar entry. The classes of the
org.sape.carbon.core.util.jar package implement this functionality.
The EnhancedJarFile class behaves exactly like a java.util.jar.JarFile with the addition of
the method getEntryOutputStream. This method returns a JarEntryOutputStream for given
entry name. The JarEntryOutputStream buffers all data that is written to it until it is closed.
When it is closed, the jar is rewritten entry for entry with the entry that is the target
of the JarEntryOutputStream replaced with the new data. When the new jar is written, it is
written to a temporary jar file first, then the original is replaced with the new. Note that
this is not a thread-safe operation. In a multi-threaded environment, only one writer
should be allowed at a time to avoid loss of data.