Class InputJarArchive
- java.lang.Object
-
- com.sun.enterprise.deployment.deploy.shared.JarArchive
-
- com.sun.enterprise.deployment.deploy.shared.InputJarArchive
-
- All Implemented Interfaces:
Archive
,ReadableArchive
@Service(name="jar") @PerLookup public class InputJarArchive extends JarArchive implements ReadableArchive
This implementation of the Archive deal with reading jar files either from a JarFile or from a JarInputStream- Author:
- Jerome Dochez
-
-
Field Summary
Fields Modifier and Type Field Description static Logger
deplLogger
protected JarFile
jarFile
protected JarInputStream
jarIS
-
Fields inherited from class com.sun.enterprise.deployment.deploy.shared.JarArchive
archiveMetaData, extraData
-
-
Constructor Summary
Constructors Constructor Description InputJarArchive()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description OutputStream
addEntry(String name)
void
close()
close the abstract archivevoid
create(URI uri)
creates a new abstract archive with the given pathboolean
delete()
deletes the underlying jar fileEnumeration<String>
entries()
Returns an enumeration of the module file entries.Enumeration
entries(Enumeration embeddedArchives)
boolean
exists()
boolean
exists(String name)
Returns the existence of the given entry name The file name must be relative to the root of the module.long
getArchiveSize()
Get the size of the archiveCollection<String>
getDirectories()
Returns the collection of first level directories in this archive.InputStream
getEntry(String entryName)
Returns the InputStream for the given entry name The file name must be relative to the root of the module.long
getEntrySize(String name)
Returns the entry size for a given entry name or 0 if not knownJarEntry
getJarEntry(String name)
protected static JarFile
getJarFile(URI uri)
Manifest
getManifest()
Returns the manifest information for this archiveReadableArchive
getSubArchive(String name)
Returns an instance of this archive abstraction for an embedded archive within this archive.URI
getURI()
Returns the path used to create or open the underlying archivevoid
open(URI uri)
Open an abstract archiveboolean
renameTo(String name)
rename the underlying jar file-
Methods inherited from class com.sun.enterprise.deployment.deploy.shared.JarArchive
addArchiveMetaData, entries, getArchiveMetaData, getExtraData, getName, getParentArchive, isDirectory, removeArchiveMetaData, removeExtraData, setExtraData, setParentArchive
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.glassfish.api.deployment.archive.Archive
entries, getName, isDirectory
-
Methods inherited from interface org.glassfish.api.deployment.archive.ReadableArchive
addArchiveMetaData, getArchiveMetaData, getExtraData, getParentArchive, removeArchiveMetaData, removeExtraData, setExtraData, setParentArchive
-
-
-
-
Field Detail
-
deplLogger
public static final Logger deplLogger
-
jarFile
protected volatile JarFile jarFile
-
jarIS
protected volatile JarInputStream jarIS
-
-
Method Detail
-
getArchiveSize
public long getArchiveSize() throws NullPointerException, SecurityException
Get the size of the archive- Specified by:
getArchiveSize
in interfaceArchive
- Returns:
- tje the size of this archive or -1 on error
- Throws:
NullPointerException
SecurityException
-
addEntry
public OutputStream addEntry(String name) throws IOException
- Parameters:
name
- the entry name- Returns:
- an @see java.io.OutputStream for a new entry in this current abstract archive.
- Throws:
IOException
-
close
public void close() throws IOException
close the abstract archive- Specified by:
close
in interfaceArchive
- Throws:
IOException
-
getDirectories
public Collection<String> getDirectories() throws IOException
Returns the collection of first level directories in this archive.Avoid having to fetch all the entries if we can avoid it. The only time we must do that is if size() is invoked on the collection. Use the CollectionWrappedEnumeration for this optimization which will create a full in-memory list of the entries only if and when needed to satisfy the size() method.
- Specified by:
getDirectories
in interfaceArchive
- Returns:
- collection of directories under the root of this archive
- Throws:
IOException
-
create
public void create(URI uri) throws IOException
creates a new abstract archive with the given path- Parameters:
uri
- the path to create the archive- Throws:
IOException
-
entries
public Enumeration<String> entries()
Description copied from interface:Archive
Returns an enumeration of the module file entries. All elements in the enumeration are of type String. Each String represents a file name relative to the root of the module.
-
entries
public Enumeration entries(Enumeration embeddedArchives)
- Returns:
- an @see java.util.Enumeration of entries in this abstract archive, providing the list of embedded archive to not count their entries as part of this archive
-
getJarEntry
public JarEntry getJarEntry(String name)
- Specified by:
getJarEntry
in classJarArchive
-
exists
public boolean exists(String name) throws IOException
Returns the existence of the given entry name The file name must be relative to the root of the module.- Specified by:
exists
in interfaceReadableArchive
- Overrides:
exists
in classJarArchive
- Parameters:
name
- the file name relative to the root of the module. * @return the existence the given entry name.- Returns:
- the existence the given entry name.
- Throws:
IOException
-
getEntry
public InputStream getEntry(String entryName) throws IOException
Description copied from interface:ReadableArchive
Returns the InputStream for the given entry name The file name must be relative to the root of the module.- Specified by:
getEntry
in interfaceReadableArchive
- Parameters:
entryName
- entry name- Returns:
- a @see java.io.InputStream for an existing entry in the current abstract archive
- Throws:
IOException
-
getEntrySize
public long getEntrySize(String name)
Returns the entry size for a given entry name or 0 if not known- Specified by:
getEntrySize
in interfaceReadableArchive
- Parameters:
name
- the entry name- Returns:
- the entry size
-
open
public void open(URI uri) throws IOException
Open an abstract archive- Specified by:
open
in interfaceReadableArchive
- Parameters:
uri
- the path to the archive- Throws:
IOException
-
getJarFile
protected static JarFile getJarFile(URI uri) throws IOException
- Returns:
- a JarFile instance for a file path
- Throws:
IOException
-
getManifest
public Manifest getManifest() throws IOException
Description copied from interface:Archive
Returns the manifest information for this archive- Specified by:
getManifest
in interfaceArchive
- Returns:
- the manifest information for this abstract archive
- Throws:
IOException
-
getURI
public URI getURI()
Returns the path used to create or open the underlying archive
-
exists
public boolean exists()
- Specified by:
exists
in interfaceReadableArchive
- Returns:
- true if this abstract archive maps to an existing jar file
-
delete
public boolean delete()
deletes the underlying jar file- Specified by:
delete
in interfaceReadableArchive
-
renameTo
public boolean renameTo(String name)
rename the underlying jar file- Specified by:
renameTo
in interfaceReadableArchive
- Parameters:
name
- the archive name
-
getSubArchive
public ReadableArchive getSubArchive(String name) throws IOException
Description copied from interface:ReadableArchive
Returns an instance of this archive abstraction for an embedded archive within this archive.- Specified by:
getSubArchive
in interfaceReadableArchive
- Parameters:
name
- is the entry name relative to the root for the archive- Returns:
- an Archive for an embedded archive indentified with the name parameter
- Throws:
IOException
-
-