CoherenceTM v3.3
Copyright© 2000-2007 by Oracle Corporation

com.tangosol.coherence.servlet
Class WebPluginInstaller.ApplyPatch

java.lang.Object
  extended by com.tangosol.util.Base
      extended by com.tangosol.coherence.servlet.WebPluginInstaller.ApplyPatch
Enclosing class:
WebPluginInstaller

public abstract static class WebPluginInstaller.ApplyPatch
extends Base

Abstract base class for all command line utilities that modify web container libraries to support extension.


Field Summary
static byte[] BLOCK_BUF
          The buffer to use for buffered I/O.
static int BLOCK_SIZE
          The size (in bytes) to perform buffered I/O on.
static String INSTALL_DESCRIPTOR
          The name of the XML file that contains information about the plugin installation.
protected  File m_fileLib
          The target web container library file.
static String MANIFEST_NAME
          The JAR manifest file name.
 
Constructor Summary
WebPluginInstaller.ApplyPatch()
           
 
Method Summary
protected  String convertClassToEntry(String sClass)
          Convert the given Java class name to its corresponding Jar entry name.
protected  String convertEntryToClass(String sEntry)
          Convert the given Jar entry name to its corresponding Java class name.
protected  void copyEntry(ApplicationEntry entry, ApplicationReader reader, ApplicationWriter writer)
          Copy an entry from one application archive to another.
protected  void createDelegateEntry(ApplicationEntry entry, ApplicationReader reader, ApplicationWriter writer)
          Create a new delegate class entry that extends the given class entry and delegates all methods to a wrapped instance of the class entry.
protected  void createDelegateMethod(ClassFile classfile, Method method, String sClass, Method methodGet)
          Creates a delegate method in the given ClassFile that delegates the given method to the object returned by the given accessor method.
protected  void extendEntry(ApplicationEntry entry, ApplicationReader reader, ApplicationWriter writer)
          Process the given class entry, making any non-private final methods non-final and if necessary, adding a default contructor.
abstract  String getContainerName()
          Return the name of the target web container for this utility.
 File getLibrary()
          Return the library to be patched by this utility.
abstract  String getLibraryName()
          Return the name of the web container library modified by this utility.
abstract  void init(File fileDir)
          Initialize the utility with the installation directory of the target web container.
 void install()
          Install extension classes.
protected abstract  void processEntry(ApplicationEntry entry, ApplicationReader reader, ApplicationWriter writer)
          Perform any necessary processing on the given class entry.
protected  byte[] readEntry(ApplicationEntry entry, ApplicationReader reader)
          Read an entry and return its content.
protected  String readManifestAttribute(File fileJar, String sName)
          Read and return the value of the main Manifest attribute with the given name from the Manifest file contained in the specified JAR file.
protected  void setLibrary(File fileLib)
          Set the library to be patched by this utility.
 void uninstall()
          Uninstall extension classes.
protected  void writeEntry(ApplicationEntry entry, ApplicationWriter writer, byte[] ab)
          Write the contents of an entry.
 

Field Detail

INSTALL_DESCRIPTOR

public static final String INSTALL_DESCRIPTOR
The name of the XML file that contains information about the plugin installation.

See Also:
Constant Field Values

BLOCK_SIZE

public static final int BLOCK_SIZE
The size (in bytes) to perform buffered I/O on.

See Also:
Constant Field Values

BLOCK_BUF

public static final byte[] BLOCK_BUF
The buffer to use for buffered I/O.


MANIFEST_NAME

public static final String MANIFEST_NAME
The JAR manifest file name.

See Also:
Constant Field Values

m_fileLib

protected File m_fileLib
The target web container library file.

Constructor Detail

WebPluginInstaller.ApplyPatch

public WebPluginInstaller.ApplyPatch()
Method Detail

init

public abstract void init(File fileDir)
Initialize the utility with the installation directory of the target web container.

This method will be called immediately after construction but before the install() or uninstall() is called.

If the given directory does not exist or is not an installation directory of a web container of the appropriate type, an exception must be thrown. Implementations of this method must call setLibrary(File) with the resolved target web container library before returning.

Parameters:
fileDir - the installation directory of the target web container

getContainerName

public abstract String getContainerName()
Return the name of the target web container for this utility.

Returns:
the target web container name

getLibraryName

public abstract String getLibraryName()
Return the name of the web container library modified by this utility.

Returns:
the target web container library

processEntry

protected abstract void processEntry(ApplicationEntry entry,
                                     ApplicationReader reader,
                                     ApplicationWriter writer)
                              throws IOException
Perform any necessary processing on the given class entry.

Parameters:
entry - the ApplicationEntry to process
reader - the ApplicationReader used to read from a JAR file
writer - the ApplicationWriter used to write to a JAR file
Throws:
IOException - on processing error

install

public void install()
Install extension classes.


uninstall

public void uninstall()
Uninstall extension classes.


convertClassToEntry

protected String convertClassToEntry(String sClass)
Convert the given Java class name to its corresponding Jar entry name.

Parameters:
sClass - the Java class name to convert
Returns:
the Jar entry name that corresponds to the given Java class name

convertEntryToClass

protected String convertEntryToClass(String sEntry)
Convert the given Jar entry name to its corresponding Java class name.

Parameters:
sEntry - the Jar entry name to convert
Returns:
the Java class name that corresponds to the given Jar entry name

readManifestAttribute

protected String readManifestAttribute(File fileJar,
                                       String sName)
Read and return the value of the main Manifest attribute with the given name from the Manifest file contained in the specified JAR file.

Parameters:
fileJar - the File object that represents the target JAR file
sName - the name of the main Manifest attribute to read
Returns:
the value of the specified main Manifest attribute or null if the attribute does not exist or could not be read

readEntry

protected byte[] readEntry(ApplicationEntry entry,
                           ApplicationReader reader)
                    throws IOException
Read an entry and return its content.

Parameters:
entry - the ApplicationEntry to process
reader - the ApplicationReader to read from a JAR file
Returns:
the entry contents, as a byte array
Throws:
IOException

writeEntry

protected void writeEntry(ApplicationEntry entry,
                          ApplicationWriter writer,
                          byte[] ab)
                   throws IOException
Write the contents of an entry.

Parameters:
entry - the ApplicationEntry to process
writer - the ApplicationWriter to write to a JAR file
ab - the entry contents, as a byte array
Throws:
IOException

copyEntry

protected void copyEntry(ApplicationEntry entry,
                         ApplicationReader reader,
                         ApplicationWriter writer)
                  throws IOException
Copy an entry from one application archive to another.

Parameters:
entry - the ApplicationEntry to process
reader - the ApplicationReader to read from a JAR file
writer - the ApplicationWriter to write to a JAR file
Throws:
IOException

extendEntry

protected void extendEntry(ApplicationEntry entry,
                           ApplicationReader reader,
                           ApplicationWriter writer)
                    throws IOException
Process the given class entry, making any non-private final methods non-final and if necessary, adding a default contructor.

Parameters:
entry - the ApplicationEntry to process
reader - the ApplicationReader used to read from a JAR file
writer - the ApplicationWriter used to write to a JAR file
Throws:
IOException - on processing error

createDelegateEntry

protected void createDelegateEntry(ApplicationEntry entry,
                                   ApplicationReader reader,
                                   ApplicationWriter writer)
                            throws IOException
Create a new delegate class entry that extends the given class entry and delegates all methods to a wrapped instance of the class entry.

Parameters:
entry - the ApplicationEntry for which a delegate is created
reader - the ApplicationReader used to read from a JAR file
writer - the ApplicationWriter used to write to a JAR file
Throws:
IOException - on processing error

createDelegateMethod

protected void createDelegateMethod(ClassFile classfile,
                                    Method method,
                                    String sClass,
                                    Method methodGet)
Creates a delegate method in the given ClassFile that delegates the given method to the object returned by the given accessor method.

Parameters:
classfile - the ClassFile to which to add the delegate method
method - the method to delegate
sClass - the name of the class in which the target method is declared
methodGet - the accessor method that returns the target object

getLibrary

public File getLibrary()
Return the library to be patched by this utility.

Returns:
the library to be patched

setLibrary

protected void setLibrary(File fileLib)
Set the library to be patched by this utility.

Parameters:
fileLib - the library to be patched

CoherenceTM v3.3
Copyright© 2000-2007 by Oracle Corporation