com.sun.enterprise.deployment.deploy.shared
Class InputJarArchive

java.lang.Object
  extended by com.sun.enterprise.deployment.deploy.shared.JarArchive
      extended by com.sun.enterprise.deployment.deploy.shared.InputJarArchive
All Implemented Interfaces:
Archive, ReadableArchive

@Service(name="jar")
@Scoped(value=org.jvnet.hk2.component.PerLookup.class)
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
protected  JarFile jarFile
           
protected  JarInputStream jarIS
           
 
Fields inherited from class com.sun.enterprise.deployment.deploy.shared.JarArchive
extraData
 
Constructor Summary
InputJarArchive()
           
 
Method Summary
 OutputStream addEntry(String name)
           
 void close()
          close the abstract archive
 void create(URI uri)
          creates a new abstract archive with the given path
 boolean delete()
          deletes the underlying jar file
 Enumeration<String> 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 archive
 Collection<String> getDirectories()
          Returns the collection of first level directories in this archive.
 InputStream getEntry(String entryName)
           
 long getEntrySize(String name)
          Returns the entry size for a given entry name or 0 if not known
 JarEntry getJarEntry(String name)
           
protected static JarFile getJarFile(URI uri)
           
 Manifest getManifest()
           
 ReadableArchive getSubArchive(String name)
           
 URI getURI()
          Returns the path used to create or open the underlying archive
 void open(URI uri)
          Open an abstract archive
 boolean renameTo(String name)
          rename the underlying jar file
 
Methods inherited from class com.sun.enterprise.deployment.deploy.shared.JarArchive
entries, getExtraData, getName, getParentArchive, isDirectory, 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.ReadableArchive
getExtraData, getParentArchive, removeExtraData, setExtraData, setParentArchive
 
Methods inherited from interface org.glassfish.api.deployment.archive.Archive
entries, getName, isDirectory
 

Field Detail

jarFile

protected volatile JarFile jarFile

jarIS

protected volatile JarInputStream jarIS
Constructor Detail

InputJarArchive

public InputJarArchive()
Method Detail

getArchiveSize

public long getArchiveSize()
                    throws NullPointerException,
                           SecurityException
Get the size of the archive

Specified by:
getArchiveSize in interface Archive
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 interface Archive
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 interface Archive
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()
Specified by:
entries in interface Archive

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 class JarArchive

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 interface ReadableArchive
Overrides:
exists in class JarArchive
Parameters:
name - the file name relative to the root of the module. * @return the existence the given entry name.
Throws:
IOException

getEntry

public InputStream getEntry(String entryName)
                     throws IOException
Specified by:
getEntry in interface ReadableArchive
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 interface ReadableArchive
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 interface ReadableArchive
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
Specified by:
getManifest in interface Archive
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

Specified by:
getURI in interface Archive
Returns:
the path for this archive.

exists

public boolean exists()
Specified by:
exists in interface ReadableArchive
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 interface ReadableArchive

renameTo

public boolean renameTo(String name)
rename the underlying jar file

Specified by:
renameTo in interface ReadableArchive

getSubArchive

public ReadableArchive getSubArchive(String name)
                              throws IOException
Specified by:
getSubArchive in interface ReadableArchive
Returns:
an Archive for an embedded archive indentified with the name parameter
Throws:
IOException


Copyright © 2012. All Rights Reserved.