Package com.sun.ts.lib.util.sec.misc

# Class JarIndex

java.lang.Object
com.sun.ts.lib.util.sec.misc.JarIndex

public class JarIndex extends Object
This class is used to maintain mappings from packages, classes and resources to their enclosing JAR files. Mappings are kept at the package level except for class or resource files that are located at the root directory. URLClassLoader uses the mapping information to determine where to fetch an extension class or resource from.

Since:
  1.3
Author:
  Zhenghua Li

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `INDEX_NAME`
  The index file name.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `JarIndex()`
  Constructs a new, empty jar index.
  `JarIndex(InputStream is)`
  Constructs a new index from the specified input stream.
  `JarIndex(String[] files)`
  Constructs a new index for the specified list of jar files.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `add(String fileName, String jarName)`
  Add the mapping from the specified file to the specified jar file.
  `LinkedList`
  `get(String fileName)`
  Returns the list of jar files that are mapped to the file.
  `String[]`
  `getJarFiles()`
  Returns the jar files that are defined in this index.
  `static JarIndex`
  `getJarIndex(JarFile jar, MetaIndex metaIndex)`
  Returns the jar index, or `null` if none.
  `void`
  `merge(JarIndex toIndex, String path)`
  Merges the current index into another index, taking into account the relative path of the current index.
  `void`
  `read(InputStream is)`
  Reads the index from the specified InputStream.
  `void`
  `write(OutputStream out)`
  Writes the index to the specified OutputStream

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### INDEX_NAME

    public static final String INDEX_NAME
    The index file name.
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### JarIndex

    public JarIndex()
    Constructs a new, empty jar index.

  - ### JarIndex

    public JarIndex(InputStream is) throws IOException
    Constructs a new index from the specified input stream.
    Parameters:
      `is` - the input stream containing the index data
    Throws:
      `IOException`

  - ### JarIndex

    public JarIndex(String[] files) throws IOException
    Constructs a new index for the specified list of jar files.
    Parameters:
      `files` - the list of jar files to construct the index from.
    Throws:
      `IOException`

- ## Method Details

  - ### getJarIndex

    public static JarIndex getJarIndex(JarFile jar, MetaIndex metaIndex) throws IOException
    Returns the jar index, or `null` if none.
    Parameters:
      `jar` - the JAR file to get the index from.
    Throws:
      `IOException` - if an I/O error has occurred.

  - ### getJarFiles

    public String[] getJarFiles()
    Returns the jar files that are defined in this index.

  - ### get

    public LinkedList get(String fileName)
    Returns the list of jar files that are mapped to the file.
    Parameters:
      `fileName` - the key of the mapping

  - ### add

    public void add(String fileName, String jarName)
    Add the mapping from the specified file to the specified jar file. If there were no mapping for the package of the specified file before, a new linked list will be created, the jar file is added to the list and a new mapping from the package to the jar file list is added to the hashmap. Otherwise, the jar file will be added to the end of the existing list.
    Parameters:
      `fileName` - the file name
      `jarName` - the jar file that the file is mapped to

  - ### write

    public void write(OutputStream out) throws IOException
    Writes the index to the specified OutputStream
    Parameters:
      `out` - the output stream
    Throws:
      `IOException` - if an I/O error has occurred

  - ### read

    public void read(InputStream is) throws IOException
    Reads the index from the specified InputStream.
    Parameters:
      `is` - the input stream
    Throws:
      `IOException` - if an I/O error has occurred

  - ### merge

    public void merge(JarIndex toIndex, String path)
    Merges the current index into another index, taking into account the relative path of the current index.
    Parameters:
      `toIndex` - The destination index which the current index will merge into.
      `path` - The relative path of the this index to the destination index.