com.deltax.cpacker
Class ClassPacker

java.lang.Object
  |
  +--com.deltax.cpacker.ClassPacker

public class ClassPacker
extends java.lang.Object

This class checks and packs togheter in a JAR file all the .class files necessary to resolve, link and execute a given Java class.
A ClassNameFilter object is used to filter out unwanted classes. By default, a JavaNameFilter is used, which excludes both java.* and javax.* classes.
A ClassFileFinder object is used to locate the class files for building the JAR. By default, the JDK 1.2 class loading scheme is emulated to retrieve the necessary files, but an arbitrary ClassFileFinder can be set if diverse class find schemes are necessary.
A FileNameProvider object can be optionally used to specify a file name for the method createJar. By default, a DefaultFileNameProvider, which prompts the user for a file name is used.


Inner Class Summary
static interface ClassPacker.ClassNameFilter
          This inteface defines a class name filter.
static interface ClassPacker.ClassScanListener
          This inteface must be implemented by any object interested in listening to scanning events
static class ClassPacker.DefaultFileNameProvider
          This class prompts a GUI to ask the user for a file name.
static class ClassPacker.DefaultRmiImplNameProvider
          Defines the default conventions for searching implementation classes of Remote interfaces.
static interface ClassPacker.FileNameProvider
          This inteface must be implemented by any class providing a file name for the JAR file constructed by createJAR
static class ClassPacker.JavaNameFilter
          This class filters out "java.*" and (optionally) "javax.*" class names.
static class ClassPacker.Monitor
          This class simply pops up a GUI Frame (Swing) to show the scanning status.
static class ClassPacker.PropertiesImplNameProvider
          A class which uses property files to determine implementations for RMI Remote interfaces.
static interface ClassPacker.RmiImplNameProvider
          This interface must be implemented by any class providing RMI implementation name conventions for searching implementations of Remote interfaces.
 
Constructor Summary
ClassPacker(java.lang.Class cls)
           
ClassPacker(java.lang.Class cls, ClassPacker.ClassNameFilter filter)
           
ClassPacker(java.lang.String name)
           
ClassPacker(java.lang.String name, ClassPacker.ClassNameFilter filter)
           
 
Method Summary
 void addScanListener(ClassPacker.ClassScanListener l)
           
 int countClasses()
           
 void createForNameUsageReport(java.lang.String clsName, java.io.PrintStream p)
          Creates a report to the given printstream for classes which use Class.forName (and are therefore likely to need manual additions to the JAR file)
 void createJar()
          Creates a JAR file for the collected classes.
 void createJar(java.lang.String jarfile)
          Creates a JAR file for the collected classes with the given name
 boolean getAppend()
           
 java.util.Enumeration getClasses()
          After a successful scanning, returns the classes set
 ClassFileFinder getClassFileFinder()
           
 ClassPacker.ClassNameFilter getClassNameFilter()
           
 boolean getCreateManifestFile()
           
 ClassPacker.FileNameProvider getFileNameProvider()
           
 java.lang.String getManifestMainClass()
           
 java.util.Enumeration getNames()
          After a successful scanning, returns the names of the classes set
 boolean getScanForNameUsage()
           
static void main(java.lang.String[] args)
           
 void removeScanListener(ClassPacker.ClassScanListener l)
           
 void setAppend(boolean v)
           
 void setClassFileFinder(ClassFileFinder cff)
           
 void setClassNameFilter(ClassPacker.ClassNameFilter filter)
           
 void setCreateManifestFile(boolean v)
           
 void setFileNameProvider(ClassPacker.FileNameProvider fnn)
           
 void setIncRMISkel(boolean v)
           
 void setIncRMIStub(boolean v)
           
 void setManifestMainClass(java.lang.String c)
           
 void setRmiImplNameProvider(ClassPacker.RmiImplNameProvider rnp)
           
 void setScanForNameUsage(boolean v)
           
 void startScan()
          Starts scanning the class.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ClassPacker

public ClassPacker(java.lang.String name)
            throws java.lang.ClassNotFoundException

ClassPacker

public ClassPacker(java.lang.String name,
                   ClassPacker.ClassNameFilter filter)
            throws java.lang.ClassNotFoundException

ClassPacker

public ClassPacker(java.lang.Class cls,
                   ClassPacker.ClassNameFilter filter)

ClassPacker

public ClassPacker(java.lang.Class cls)
Method Detail

getClassFileFinder

public ClassFileFinder getClassFileFinder()

setClassFileFinder

public void setClassFileFinder(ClassFileFinder cff)

getClassNameFilter

public ClassPacker.ClassNameFilter getClassNameFilter()

setClassNameFilter

public void setClassNameFilter(ClassPacker.ClassNameFilter filter)

getFileNameProvider

public ClassPacker.FileNameProvider getFileNameProvider()

setFileNameProvider

public void setFileNameProvider(ClassPacker.FileNameProvider fnn)

setRmiImplNameProvider

public void setRmiImplNameProvider(ClassPacker.RmiImplNameProvider rnp)

setAppend

public void setAppend(boolean v)

getAppend

public boolean getAppend()

getCreateManifestFile

public boolean getCreateManifestFile()

setCreateManifestFile

public void setCreateManifestFile(boolean v)

getManifestMainClass

public java.lang.String getManifestMainClass()

setManifestMainClass

public void setManifestMainClass(java.lang.String c)

addScanListener

public void addScanListener(ClassPacker.ClassScanListener l)

removeScanListener

public void removeScanListener(ClassPacker.ClassScanListener l)

getNames

public java.util.Enumeration getNames()
After a successful scanning, returns the names of the classes set
Returns:
an enumeration of String objects

getClasses

public java.util.Enumeration getClasses()
After a successful scanning, returns the classes set
Returns:
an enumeration of Class objects

countClasses

public int countClasses()

startScan

public void startScan()
Starts scanning the class. Each addition is notified to the listeners (if any), as well as the end of the process.

createJar

public void createJar(java.lang.String jarfile)
               throws java.lang.ClassNotFoundException,
                      java.io.IOException
Creates a JAR file for the collected classes with the given name
Parameters:
jarfile - the JAR file name. If null, the current FileNameProvider will be used
Throws:
java.lang.ClassNotFoundException - if the class is not found. See class description for a discussion of class finding
java.io.IOException - if an I/O exception occurs

setScanForNameUsage

public void setScanForNameUsage(boolean v)

getScanForNameUsage

public boolean getScanForNameUsage()

setIncRMIStub

public void setIncRMIStub(boolean v)

setIncRMISkel

public void setIncRMISkel(boolean v)

createJar

public void createJar()
               throws java.lang.ClassNotFoundException,
                      java.io.IOException
Creates a JAR file for the collected classes. The current FileNameProvider is invoked to obtain a file name for the JAR file.

createForNameUsageReport

public void createForNameUsageReport(java.lang.String clsName,
                                     java.io.PrintStream p)
Creates a report to the given printstream for classes which use Class.forName (and are therefore likely to need manual additions to the JAR file)

main

public static void main(java.lang.String[] args)