org.apache.uima.pear.tools
Class InstallationController

java.lang.Object
  extended by org.apache.uima.pear.tools.InstallationController

public class InstallationController
extends Object

The InstallationController class allows installing PEAR files that contain UIMA compliant components.
Note: current version works both in Windows and Linux.
This class may be used in the following ways:

See Also:
InstallationDescriptor, InstallationProcessor, InstallationTester, MessageRouter

Nested Class Summary
static interface InstallationController.InstallationMonitor
          The InstallationMonitor interface defines methods required for notifying of component installation status and location of the installed PEAR packages.
static interface InstallationController.PackageSelector
          The PackageSelector interface defines methods required for manually or automatically selecting installed PEAR package root directories and PEAR package files.
static class InstallationController.TestStatus
          The TestStatus class encapsulates attributes related to the results of the 'serviceability' verification test.
 
Field Summary
static String CLASSPATH_VAR
           
protected static String INSTALL_IN_ROOT_OPT
           
static String INSTALLATION_COMPLETED
           
static String INSTALLATION_FAILED
           
static String INSTALLATION_IN_PROGRESS
           
protected static String INSTALLATION_TESTER_APP
           
protected static String JAR_FILE_EXT
           
protected static String LOCAL_OPT
           
static String PACKAGE_BIN_DIR
           
static String PACKAGE_CONF_DIR
           
static String PACKAGE_CONFIG_FILE
           
static String PACKAGE_DATA_DIR
           
static String PACKAGE_DESC_DIR
           
static String PACKAGE_DOC_DIR
           
static String PACKAGE_LIB_DIR
           
static String PACKAGE_METADATA_DIR
           
static String PACKAGE_RESOURCES_DIR
           
static String PACKAGE_SOURCES_DIR
           
protected static String PATH_VAR
           
static String PEAR_DESC_FILE_POSTFIX
           
static String SET_ENV_FILE
           
protected static String UIMA_HOME_ENV
           
protected static String UIMA_LIB_DIR
           
static String VERIFICATION_CANCELLED
           
static String VERIFICATION_COMPLETED
           
static String VERIFICATION_FAILED
           
static String VERIFICATION_IN_PROGRESS
           
protected static String VINCI_LIB_DIR
           
 
Constructor Summary
  InstallationController(String componentId, File localPearFile, File rootDir)
          Constructor for the 'local' mode, which specifies component ID, local PEAR file and a local root directory where the component will be installed.
  InstallationController(String componentId, File localPearFile, File rootDir, boolean installInRootDir)
          Constructor for the 'local' mode, which specifies component ID, local PEAR file and a local root directory where the component will be installed.
  InstallationController(String componentId, File localPearFile, File rootDir, boolean installInRootDir, boolean cleanInstallDir)
          Constructor for the 'local' mode, which specifies component ID, local PEAR file and a local root directory where the component will be installed.
  InstallationController(String componentId, File localPearFile, File rootDir, boolean installInRootDir, MessageRouter.StdChannelListener msgListener)
          Constructor for the 'local' mode, which specifies component ID, local PEAR file and a local root directory where the component will be installed.
  InstallationController(String componentId, File localPearFile, File rootDir, boolean installInRootDir, MessageRouter.StdChannelListener msgListener, boolean cleanInstallDir)
          Constructor for the 'local' mode, which specifies component ID, local PEAR file and a local root directory where the component will be installed.
  InstallationController(String componentId, String rootDirPath)
          Constructs an instance of the InstallationController class for a given component and a given installation root directory.
  InstallationController(String componentId, String rootDirPath, boolean installInRootDir)
          Constructs an instance of the InstallationController class for a given component and a given installation root directory.
  InstallationController(String componentId, String rootDirPath, boolean installInRootDir, MessageRouter.StdChannelListener msgListener)
          Constructs an instance of the InstallationController class for a given component and a given installation root directory.
protected InstallationController(String componentId, String rootDirPath, boolean installInRootDir, MessageRouter msgRouter, MessageRouter.StdChannelListener msgListener, boolean cleanInstallDir)
          Internal constructor that creates an instance of the InstallationController class for a given component and a given installation root directory.
 
Method Summary
protected static StringBuffer addListOfJarFiles(File libDir, StringBuffer listBuffer)
          Appends a list of JAR files in a given lib directory, separated with the OS dependent separator (';' or ':'), to a given initial StringBuffer object.
 void addMsgListener(MessageRouter.StdChannelListener listener)
          Adds a given object, implementing the MessageRouter.StdChannelListener interface to the list of standard channel listeners.
protected static boolean addToSystemEnvTable(Properties sysEnvTable, String localKey, String localValue)
          Adds a given local environment variable to appropriate system environment variable (before the system value).
static String[] buildArrayOfNetworkParams(InstallationDescriptor insdObject)
          Creates a string array that contains network parameters (in the JVM '-Dname=value' format) specified in a given installation descriptor object.
 String buildComponentClassPath()
          Builds CLASSPATH for the installed component, including CLASSPATH for all separate delegate components that are utilized by the main installed component, if any.
static String buildComponentClassPath(String compRootDirPath, InstallationDescriptor insdObject, boolean addLibDir)
          Creates a string that should be added to the CLASSPATH for a given installed component associated with a given installation descriptor object.
 String buildComponentPath()
          Builds PATH for the installed component, including PATH for all separate delegate components that are utilized by the main installed component, if any.
static String buildComponentPath(String compRootDirPath, InstallationDescriptor insdObject)
          Creates a string that should be added to the SPATH for a given installed component associated with a given installation descriptor object.
static String buildListOfEnvVars(InstallationDescriptor insdObject)
          Creates a string that contains the list of environment variables settings (in the JVM '-Dname=value' format) included in a given installation descriptor object.
static String buildListOfNetworkParams(InstallationDescriptor insdObject)
          Creates a string that contains network parameters (in the JVM '-Dname=value' format) specified in a given installation descriptor object.
 Properties buildTableOfEnvVars()
          Builds Properties table of required environment variables for the installed component, including environment variables for all separate delegate components that are utilized by the main installed component, if any.
static Properties buildTableOfEnvVars(InstallationDescriptor insdObject)
          Creates a Properties table that contains (name, value) pairs of environment variables settings for a given installation descriptor object.
static String buildUIMAClassPath(String uimaHomeEnv)
          Creates a string that should be added to the CLASSPATH environment variable for UIMA framework.
static boolean deleteInstalledFiles(String componentId, File parentDir, boolean includeDelegates)
          Deletes all installed files for a given component in a given parent directory.
static String extractFilesFromPEARFile(String pearFileLocation, String fileExt, File targetDir, boolean cleanTarget)
          Extracts files with a given extension from a given PEAR file into a given target directory.
protected static String extractFilesFromPEARFile(String pearFileLocation, String fileExt, File targetDir, InstallationController controller, boolean cleanTarget)
          Internal implementatiton of the extractFilesFromPEARFile method, which allows sending messages to the OUT and ERR queues.
static String extractPEARFile(String pearFileLocation, File installationDir, boolean cleanTarget)
          Extracts all files of a given component from a given PEAR file into a given target directory.
protected static String extractPEARFile(String pearFileLocation, File installationDir, InstallationController controller, boolean cleanTarget)
          Internal implementation of the extractPEARFile method, which allows sending messages to the OUT and ERR queues.
protected  void finalize()
          Overrides standard finalize method.
protected  void generatePackageConfigFile()
          Generates/updates the PEAR configuration file setting the main component root directory, as well as root directories of all related delegate components.
protected static void generatePearSpecifier(String mainComponentRootPath, String mainComponentId)
          generates the pearSpecifier to run the installed pear component.
protected  void generateSetEnvFile()
          Generates the file (batch file for Windows) containing specific environment variables that should be used to run the component.
protected static Hashtable<String,InstallationDescriptor> getDelegateInstallationDescriptors(Hashtable<String,String> installationTable)
          Creates a Hashtable that contains (compId, InsD) pairs for all separate delegate components specified in a given installation table.
protected  PrintWriter getErrMsgWriter()
           
static String getHostIpAddress()
           
 String getInstallationMsg()
           
protected static String getInstalledComponentRootPath(String componentId, InstallationController.PackageSelector pkgSelector)
          Retrieves the root directory path of a given component, installed in the local file system, by using a given PackageSelector input.
protected  PrintWriter getOutMsgWriter()
           
protected static String getPEARFileLocation(String componentId, InstallationController.PackageSelector pkgSelector)
          Gets the PEAR file location (file path or URL) for a given component by using SITH DB a given PackageSelector input.
 String getVerificationMsg()
           
 InstallationDescriptor installComponent()
          Performs installation of the specified component in the specified target directory, including all delegate components (if exist).
 InstallationDescriptor installComponentDescriptors()
          Performs installation of XML descriptors of the specified component in the specified target directory, including XML descriptors of all the delegate components (if exist).
protected  void installDelegateComponents()
          Performs installation of all separate delegate components for the specified main component.
protected  void installDelegateComponentsDescriptors()
          Performs installation of XML descriptors for all separate delegate components of the specified main component.
static void main(String[] args)
          Starts the application.
 void removeMsgListener(MessageRouter.StdChannelListener listener)
          Removes a given MessageRouter.StdChannelListener object from the list of standard channel listeners.
 void saveInstallationDescriptorFile()
          Saves modified installation descriptor file.
protected  void setInstallationError(Exception error)
          Prints the stack trace of a given Exception object as the installation error message.
 void setInstallationMonitor(InstallationController.InstallationMonitor monitor)
          Plugs-in a given implementation of the InstallationMonitor interface.
static void setLocalMode(boolean inLocalMode)
          Switches between the 'local' and 'DB' modes, depending on a given boolean flag.
 void setPackageSelector(InstallationController.PackageSelector selector)
          Plugs-in a given implementation of the PackageSelector interface.
 void setUimaHomePath(String uimaHomePath)
          Sets a given UIMA local home directory path.
protected  void setVerificationError(Exception error)
          Prints the stack trace of a given Exception object as the verification error message.
 void terminate()
          Terminates the MessageRouter thread.
 boolean verifyComponent()
          Verifies installations of the main component, and sets appropriate component status in the SITH DB.
static InstallationController.TestStatus verifyComponentInstallation(PackageBrowser pkgBrowser)
          Runs the installation test for a given installed pear component, and returns the TestStatus object with the test results.
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

INSTALLATION_IN_PROGRESS

public static final String INSTALLATION_IN_PROGRESS
See Also:
Constant Field Values

INSTALLATION_FAILED

public static final String INSTALLATION_FAILED
See Also:
Constant Field Values

INSTALLATION_COMPLETED

public static final String INSTALLATION_COMPLETED
See Also:
Constant Field Values

VERIFICATION_IN_PROGRESS

public static final String VERIFICATION_IN_PROGRESS
See Also:
Constant Field Values

VERIFICATION_FAILED

public static final String VERIFICATION_FAILED
See Also:
Constant Field Values

VERIFICATION_COMPLETED

public static final String VERIFICATION_COMPLETED
See Also:
Constant Field Values

VERIFICATION_CANCELLED

public static final String VERIFICATION_CANCELLED
See Also:
Constant Field Values

INSTALLATION_TESTER_APP

protected static final String INSTALLATION_TESTER_APP
See Also:
Constant Field Values

PACKAGE_CONFIG_FILE

public static final String PACKAGE_CONFIG_FILE
See Also:
Constant Field Values

PACKAGE_METADATA_DIR

public static final String PACKAGE_METADATA_DIR
See Also:
Constant Field Values

PACKAGE_BIN_DIR

public static final String PACKAGE_BIN_DIR
See Also:
Constant Field Values

PACKAGE_CONF_DIR

public static final String PACKAGE_CONF_DIR
See Also:
Constant Field Values

PACKAGE_DATA_DIR

public static final String PACKAGE_DATA_DIR
See Also:
Constant Field Values

PACKAGE_DESC_DIR

public static final String PACKAGE_DESC_DIR
See Also:
Constant Field Values

PACKAGE_DOC_DIR

public static final String PACKAGE_DOC_DIR
See Also:
Constant Field Values

PACKAGE_LIB_DIR

public static final String PACKAGE_LIB_DIR
See Also:
Constant Field Values

PACKAGE_RESOURCES_DIR

public static final String PACKAGE_RESOURCES_DIR
See Also:
Constant Field Values

PACKAGE_SOURCES_DIR

public static final String PACKAGE_SOURCES_DIR
See Also:
Constant Field Values

SET_ENV_FILE

public static final String SET_ENV_FILE
See Also:
Constant Field Values

PEAR_DESC_FILE_POSTFIX

public static final String PEAR_DESC_FILE_POSTFIX
See Also:
Constant Field Values

UIMA_HOME_ENV

protected static final String UIMA_HOME_ENV
See Also:
Constant Field Values

UIMA_LIB_DIR

protected static final String UIMA_LIB_DIR
See Also:
Constant Field Values

VINCI_LIB_DIR

protected static final String VINCI_LIB_DIR
See Also:
Constant Field Values

JAR_FILE_EXT

protected static final String JAR_FILE_EXT
See Also:
Constant Field Values

CLASSPATH_VAR

public static final String CLASSPATH_VAR
See Also:
Constant Field Values

PATH_VAR

protected static final String PATH_VAR
See Also:
Constant Field Values

LOCAL_OPT

protected static final String LOCAL_OPT
See Also:
Constant Field Values

INSTALL_IN_ROOT_OPT

protected static final String INSTALL_IN_ROOT_OPT
See Also:
Constant Field Values
Constructor Detail

InstallationController

public InstallationController(String componentId,
                              String rootDirPath)
Constructs an instance of the InstallationController class for a given component and a given installation root directory. By default, the InstallationController creates a component_id subdirectory for the component code and resources. By default, the InstallationController class sends all stdout and stderr messages to the default message listener, which prints them to the standard console streams.

Parameters:
componentId - The given component ID.
rootDirPath - The given installation root directory path.

InstallationController

public InstallationController(String componentId,
                              String rootDirPath,
                              boolean installInRootDir)
Constructs an instance of the InstallationController class for a given component and a given installation root directory. If the installInRootDir flag is true, the component will be installed in the given root directory, otherwise the InstallationController will create a component_id subdirectory for the component code and resources. By default, the InstallationController class sends all stdout and stderr messages to the default message listener, which prints them to the standard console streams.

Parameters:
componentId - The given component ID.
rootDirPath - The given installation root directory path.
installInRootDir - If true, the component will be installed in the given root directory, otherwise it will be installed in the component_id subdirectory of the root directory. Note: the installation directory will be cleaned before the PEAR file is installed to it.

InstallationController

public InstallationController(String componentId,
                              String rootDirPath,
                              boolean installInRootDir,
                              MessageRouter.StdChannelListener msgListener)
Constructs an instance of the InstallationController class for a given component and a given installation root directory. If the installInRootDir flag is true, the component will be installed in the given root directory, otherwise the InstallationController will create a component_id subdirectory for the component code and resources. If a given custom message listener is not null, the InstallationController instance will sends all stdout and stderr messages to the given message listener, otherwise these messages are sent to the default message listener, which prints them to the standard console streams.

Parameters:
componentId - The given component ID.
rootDirPath - The given installation root directory path.
installInRootDir - If true, the component will be installed in the given root directory, otherwise it will be installed in the component_id subdirectory of the root directory. Note: the installation directory will be cleaned before the PEAR file is installed to it.
msgListener - The given custom message listener or null.

InstallationController

protected InstallationController(String componentId,
                                 String rootDirPath,
                                 boolean installInRootDir,
                                 MessageRouter msgRouter,
                                 MessageRouter.StdChannelListener msgListener,
                                 boolean cleanInstallDir)
Internal constructor that creates an instance of the InstallationController class for a given component and a given installation root directory. If the installInRootDir flag is true, the component will be installed in the given root directory, otherwise the InstallationController will create a component_id subdirectory for the component code and resources. If a given custom MessageRouter is not null, the new InstallationController instance will use the given message router, otherwise it will create a new message router object. If a given custom message listener is not null, the InstallationController instance will send all stdout and stderr messages to the given message listener, otherwise these messages are sent to the default message listener, which prints them to the standard console streams.

Parameters:
componentId - The given component ID.
rootDirPath - The given installation root directory.
installInRootDir - If true, the component will be installed in the given root directory, otherwise it will be installed in the component_id subdirectory of the root directory.
msgRouter - The given custom MessageRouter object or null.
msgListener - The given custom message listener object or null.
cleanInstallDir - If true, the target installation directory will be cleaned before the PEAR file is installed.

InstallationController

public InstallationController(String componentId,
                              File localPearFile,
                              File rootDir)
Constructor for the 'local' mode, which specifies component ID, local PEAR file and a local root directory where the component will be installed. By default, the InstallationController creates a component_id subdirectory for the component code and resources. By default, the InstallationController class sends all stdout and stderr messages to the default message listener, which prints them to the standard console streams.

Parameters:
componentId - The given component ID.
localPearFile - The given local PEAR file.
rootDir - The given local root directory for installation.

InstallationController

public InstallationController(String componentId,
                              File localPearFile,
                              File rootDir,
                              boolean installInRootDir,
                              boolean cleanInstallDir)
Constructor for the 'local' mode, which specifies component ID, local PEAR file and a local root directory where the component will be installed. If the installInRootDir flag is true, the component code and resources will be installed in the specified root directory, otherwise the InstallationController will create a component_id subdirectory for the component code and resources. By default, the InstallationController class sends all stdout and stderr messages to the default message listener, which prints them to the standard console streams.

Parameters:
componentId - The given component ID.
localPearFile - The given local PEAR file.
rootDir - The given local root directory for installation.
installInRootDir - If true, the component will be installed in the given root directory, otherwise it will be installed in the component_id subdirectory of the root directory.
cleanInstallDir - If true, the target installation directory will be cleaned before the PEAR file is installed.

InstallationController

public InstallationController(String componentId,
                              File localPearFile,
                              File rootDir,
                              boolean installInRootDir)
Constructor for the 'local' mode, which specifies component ID, local PEAR file and a local root directory where the component will be installed. If the installInRootDir flag is true, the component code and resources will be installed in the specified root directory, otherwise the InstallationController will create a component_id subdirectory for the component code and resources. By default, the InstallationController class sends all stdout and stderr messages to the default message listener, which prints them to the standard console streams.

Parameters:
componentId - The given component ID.
localPearFile - The given local PEAR file.
rootDir - The given local root directory for installation.
installInRootDir - If true, the component will be installed in the given root directory, otherwise it will be installed in the component_id subdirectory of the root directory. Note: the installation directory will be cleaned before the PEAR file is installed to it.

InstallationController

public InstallationController(String componentId,
                              File localPearFile,
                              File rootDir,
                              boolean installInRootDir,
                              MessageRouter.StdChannelListener msgListener)
Constructor for the 'local' mode, which specifies component ID, local PEAR file and a local root directory where the component will be installed. If the installInRootDir flag is true, the component code and resources will be installed in the specified root directory, otherwise the InstallationController will create a component_id subdirectory for the component code and resources. If the custom message listener is not null, the InstallationController class sends all stdout and stderr messages to this message listener, otherwise these messages are sent to the default message listener, which prints them to the standard console streams.

Parameters:
componentId - The given component ID.
localPearFile - The given local PEAR file.
rootDir - The given local root directory for installation.
installInRootDir - If true, the component will be installed in the given root directory, otherwise it will be installed in the component_id subdirectory of the root directory.
msgListener - The given custom message listener or null.

InstallationController

public InstallationController(String componentId,
                              File localPearFile,
                              File rootDir,
                              boolean installInRootDir,
                              MessageRouter.StdChannelListener msgListener,
                              boolean cleanInstallDir)
Constructor for the 'local' mode, which specifies component ID, local PEAR file and a local root directory where the component will be installed. If the installInRootDir flag is true, the component code and resources will be installed in the specified root directory, otherwise the InstallationController will create a component_id subdirectory for the component code and resources. If the custom message listener is not null, the InstallationController class sends all stdout and stderr messages to this message listener, otherwise these messages are sent to the default message listener, which prints them to the standard console streams.

Parameters:
componentId - The given component ID.
localPearFile - The given local PEAR file.
rootDir - The given local root directory for installation.
installInRootDir - If true, the component will be installed in the given root directory, otherwise it will be installed in the component_id subdirectory of the root directory.
msgListener - The given custom message listener or null.
cleanInstallDir - If true, the target installation directory will be cleaned before the PEAR file is installed.
Method Detail

addListOfJarFiles

protected static StringBuffer addListOfJarFiles(File libDir,
                                                StringBuffer listBuffer)
                                         throws IOException
Appends a list of JAR files in a given lib directory, separated with the OS dependent separator (';' or ':'), to a given initial StringBuffer object. If null StringBuffer object is specified, creates new StringBuffer object.

Parameters:
libDir - The given lib directory.
listBuffer - The initial StringBuffer object.
Returns:
The list of JAR files in the given lib directory, appended to the given StringBuffer.
Throws:
IOException - If any I/O exception occurred.

addToSystemEnvTable

protected static boolean addToSystemEnvTable(Properties sysEnvTable,
                                             String localKey,
                                             String localValue)
Adds a given local environment variable to appropriate system environment variable (before the system value). The case of the local environment variable key is ignored.

Parameters:
sysEnvTable - The table of system environment variables.
localKey - The given local environment variable key.
localValue - The given local environment variable value.
Returns:
true if the local value was really added, false otherwise.

buildArrayOfNetworkParams

public static String[] buildArrayOfNetworkParams(InstallationDescriptor insdObject)
Creates a string array that contains network parameters (in the JVM '-Dname=value' format) specified in a given installation descriptor object.

Parameters:
insdObject - The given installation descriptor object.
Returns:
The string array of network parameters in the JVM format.

buildComponentClassPath

public static String buildComponentClassPath(String compRootDirPath,
                                             InstallationDescriptor insdObject,
                                             boolean addLibDir)
                                      throws IOException
Creates a string that should be added to the CLASSPATH for a given installed component associated with a given installation descriptor object.

Parameters:
compRootDirPath - The given root directory of the installed component.
insdObject - The given installation descriptor object.
addLibDir - Whether we should add jars from the libdir or not (true at packaging time, false at runtime).
Returns:
The string that should be added to the CLASSPATH for the given component.
Throws:
IOException - If any I/O exception occurred.

buildComponentPath

public static String buildComponentPath(String compRootDirPath,
                                        InstallationDescriptor insdObject)
Creates a string that should be added to the SPATH for a given installed component associated with a given installation descriptor object.

Parameters:
compRootDirPath - The given root directory of the installed component.
insdObject - The given installation descriptor object.
Returns:
The string that should be added to the SPATH for the given component.

buildListOfEnvVars

public static String buildListOfEnvVars(InstallationDescriptor insdObject)
Creates a string that contains the list of environment variables settings (in the JVM '-Dname=value' format) included in a given installation descriptor object.

Parameters:
insdObject - The given installation descriptor object.
Returns:
The string of environment variables settings in the JVM format.

buildListOfNetworkParams

public static String buildListOfNetworkParams(InstallationDescriptor insdObject)
Creates a string that contains network parameters (in the JVM '-Dname=value' format) specified in a given installation descriptor object.

Parameters:
insdObject - The given installation descriptor object.
Returns:
The string of network parameters in the JVM format.

buildTableOfEnvVars

public static Properties buildTableOfEnvVars(InstallationDescriptor insdObject)
Creates a Properties table that contains (name, value) pairs of environment variables settings for a given installation descriptor object.

Parameters:
insdObject - The given installation descriptor object.
Returns:
The Properties table that contains environment variables settings for the given installation descriptor object.

buildUIMAClassPath

public static String buildUIMAClassPath(String uimaHomeEnv)
Creates a string that should be added to the CLASSPATH environment variable for UIMA framework.

Parameters:
uimaHomeEnv - The location of UIMA framework (UIMA_HOME environment variable value).
Returns:
The CLASSPATH string for UIMA framework.

deleteInstalledFiles

public static boolean deleteInstalledFiles(String componentId,
                                           File parentDir,
                                           boolean includeDelegates)
                                    throws IOException
Deletes all installed files for a given component in a given parent directory. If the includeDelegates flag is true, deletes also all files installed in a given parent directory for separate delegate components, specified in the main installation descriptor.

Parameters:
componentId - The given main component ID.
parentDir - The given parent directory of the main component root directory.
includeDelegates - Indicates whether files of the specified separate delegate components should be deleted.
Returns:
true, if the deletion operation completed successfully, false otherwise.
Throws:
IOException - if any I/O exception occurred.

extractFilesFromPEARFile

public static String extractFilesFromPEARFile(String pearFileLocation,
                                              String fileExt,
                                              File targetDir,
                                              boolean cleanTarget)
                                       throws IOException
Extracts files with a given extension from a given PEAR file into a given target directory. If the given filename extension is null, extracts all the files from a given PEAR file. Returns the path to the new component root directory.

Parameters:
pearFileLocation - The given PEAR file location.
fileExt - The given filename extension.
targetDir - The given target directory.
cleanTarget - If true, the target directory is cleaned before the PEAR file is installed to it.
Returns:
The path to the new component root directory.
Throws:
IOException - if any I/O exception occurred.

extractFilesFromPEARFile

protected static String extractFilesFromPEARFile(String pearFileLocation,
                                                 String fileExt,
                                                 File targetDir,
                                                 InstallationController controller,
                                                 boolean cleanTarget)
                                          throws IOException
Internal implementatiton of the extractFilesFromPEARFile method, which allows sending messages to the OUT and ERR queues.

Parameters:
componentId - The given component ID.
pearFileLocation - The given PEAR file location.
fileExt - The given filename extension.
targetDir - The given target directory.
controller - The instance of the InstallationController class that provides OUT and ERR
cleanTarget - If true, the target directory is cleaned before the PEAR file is installed to it. message routing, or null.
Returns:
The path to the new component root directory.
Throws:
IOException - if any I/O exception occurred.

extractPEARFile

public static String extractPEARFile(String pearFileLocation,
                                     File installationDir,
                                     boolean cleanTarget)
                              throws IOException
Extracts all files of a given component from a given PEAR file into a given target directory. Returns the path to the new component root directory.

Parameters:
pearFileLocation - The given PEAR file location.
installationDir - The given target directory.
cleanTarget - If true, the target directory is cleaned before the PEAR file is installed to it.
Returns:
The path to the new component root directory.
Throws:
IOException - if any I/O exception occurred.

extractPEARFile

protected static String extractPEARFile(String pearFileLocation,
                                        File installationDir,
                                        InstallationController controller,
                                        boolean cleanTarget)
                                 throws IOException
Internal implementation of the extractPEARFile method, which allows sending messages to the OUT and ERR queues.

Parameters:
componentId - The given component ID.
pearFileLocation - The given PEAR file location.
installationDir - The given target directory.
controller - The instance of the InstallationController class that provides OUT and ERR message routing, or null.
cleanTarget - If true, the target directory is cleaned before the PEAR file is installed to it.
Returns:
The path to the new component root directory.
Throws:
IOException - if any I/O exception occurred.

getDelegateInstallationDescriptors

protected static Hashtable<String,InstallationDescriptor> getDelegateInstallationDescriptors(Hashtable<String,String> installationTable)
                                                                                      throws IOException
Creates a Hashtable that contains (compId, InsD) pairs for all separate delegate components specified in a given installation table.

Parameters:
installationTable - The given installation table that specifies (compId, rootDirPath) pairs for all separate delegate components.
Returns:
The Hashtable that contains (compId, InsD) pairs for all separate delegate components specified in the given installation table.
Throws:
IOException - If an I/O exception occurred while loading the installation descriptor files.

getHostIpAddress

public static String getHostIpAddress()
Returns:
The local host IP address.

getInstalledComponentRootPath

protected static String getInstalledComponentRootPath(String componentId,
                                                      InstallationController.PackageSelector pkgSelector)
Retrieves the root directory path of a given component, installed in the local file system, by using a given PackageSelector input. If the given PackageSelector is null, the default PackageSelector implementation is used.

Parameters:
componentId - The given installed component ID.
pkgSelector - The instance of the PackageSelector class that allows selecting root directory of the installed component in the local file system.
Returns:
The root directory path of the given component in the local file system, or null, if the component is not installed.

getPEARFileLocation

protected static String getPEARFileLocation(String componentId,
                                            InstallationController.PackageSelector pkgSelector)
Gets the PEAR file location (file path or URL) for a given component by using SITH DB a given PackageSelector input. If the given PackageSelector is null, the default PackageSelector implementation is used.

Parameters:
componentId - The given component ID.
pkgSelector - The instance of the PackageSelector class that allows selecting location of the given component PEAR file in the local file system, or in the network.
Returns:
The location of the PEAR file for the given component, or null, if the PEAR file was not found.

main

public static void main(String[] args)
Starts the application. This application expects the following JVM run-time settings:
  • -DUIMA_HOME=

Parameters:
args - {-local pear_file | main_component_id} [-default] [installation_dir]

setLocalMode

public static void setLocalMode(boolean inLocalMode)
Switches between the 'local' and 'DB' modes, depending on a given boolean flag.

Parameters:
inLocalMode - if true the utility operates in the 'local' mode, otherwise it operates in the 'DB' mode.

verifyComponentInstallation

public static InstallationController.TestStatus verifyComponentInstallation(PackageBrowser pkgBrowser)
Runs the installation test for a given installed pear component, and returns the TestStatus object with the test results.

Parameters:
pkgBrowser - The given package borwser object of the installed pear package.
Returns:
The TestStatus object that contains the return code and possible error message of the test.

addMsgListener

public void addMsgListener(MessageRouter.StdChannelListener listener)
Adds a given object, implementing the MessageRouter.StdChannelListener interface to the list of standard channel listeners.

Parameters:
listener - The given MessageRouter.StdChannelListener object to be added to the list.

buildComponentClassPath

public String buildComponentClassPath()
                               throws IOException
Builds CLASSPATH for the installed component, including CLASSPATH for all separate delegate components that are utilized by the main installed component, if any.

Returns:
The CLASSPATH for the installed component, or null, if the component has not been installed.
Throws:
IOException - If any I/O exception occurred.

buildComponentPath

public String buildComponentPath()
Builds PATH for the installed component, including PATH for all separate delegate components that are utilized by the main installed component, if any.

Returns:
The PATH for the installed component, or null, if the component has not been installed.

buildTableOfEnvVars

public Properties buildTableOfEnvVars()
Builds Properties table of required environment variables for the installed component, including environment variables for all separate delegate components that are utilized by the main installed component, if any.

Returns:
Properties table of required environment variables for the installed component, or null, if the component has not been installed.

finalize

protected void finalize()
Overrides standard finalize method.

Overrides:
finalize in class Object

installComponent

public InstallationDescriptor installComponent()
Performs installation of the specified component in the specified target directory, including all delegate components (if exist). If the installation completed successfully, returns the InstallationDescriptor object for the installed component. If the installation failed, returns null, and sets the installation error message that can be retrieved using the getInstallationMsg() method.

Returns:
The InstallationDescriptor object for the installed component, if the installation succeeded, null otherwise.

installComponentDescriptors

public InstallationDescriptor installComponentDescriptors()
Performs installation of XML descriptors of the specified component in the specified target directory, including XML descriptors of all the delegate components (if exist). If the installation completed successfully, returns the InstallationDescriptor object for the partially installed component. If the installation failed, returns null, and sets the installation error message that can be retrieved using the getInstallationMsg() method.

Returns:
The InstallationDescriptor object for the partially installed component, if the installation succeeded, null otherwise.

installDelegateComponents

protected void installDelegateComponents()
Performs installation of all separate delegate components for the specified main component.


installDelegateComponentsDescriptors

protected void installDelegateComponentsDescriptors()
Performs installation of XML descriptors for all separate delegate components of the specified main component.


generatePearSpecifier

protected static void generatePearSpecifier(String mainComponentRootPath,
                                            String mainComponentId)
                                     throws IOException,
                                            SAXException
generates the pearSpecifier to run the installed pear component. The descriptor that is created has the filename <componentID>_pear.xml and is created in the main component root directory. If the file already exist, it will be overridden.

Parameters:
mainComponentRootPath - main component root path where the pear was installed to
mainComponentId - main component ID of the installed pear file
Throws:
IOException
SAXException

generateSetEnvFile

protected void generateSetEnvFile()
                           throws IOException
Generates the file (batch file for Windows) containing specific environment variables that should be used to run the component.

Throws:
IOException - if any I/O exception occurred.

generatePackageConfigFile

protected void generatePackageConfigFile()
                                  throws IOException
Generates/updates the PEAR configuration file setting the main component root directory, as well as root directories of all related delegate components.

Throws:
IOException - if any I/O exception occurred.

getErrMsgWriter

protected PrintWriter getErrMsgWriter()
Returns:
Error message writer for intraprocess messaging.

getInstallationMsg

public String getInstallationMsg()
Returns:
The installation message (error message).

getOutMsgWriter

protected PrintWriter getOutMsgWriter()
Returns:
Output message writer for intraprocess messaging.

getVerificationMsg

public String getVerificationMsg()
Returns:
The verification message (error message).

removeMsgListener

public void removeMsgListener(MessageRouter.StdChannelListener listener)
Removes a given MessageRouter.StdChannelListener object from the list of standard channel listeners.

Parameters:
listener - The given MessageRouter.StdChannelListener object to be removed from the list.

saveInstallationDescriptorFile

public void saveInstallationDescriptorFile()
                                    throws IOException
Saves modified installation descriptor file.

Throws:
IOException - if any I/O exception occurred.

setInstallationError

protected void setInstallationError(Exception error)
Prints the stack trace of a given Exception object as the installation error message.

Parameters:
error - The given Exception object.

setInstallationMonitor

public void setInstallationMonitor(InstallationController.InstallationMonitor monitor)
Plugs-in a given implementation of the InstallationMonitor interface.

Parameters:
monitor - The given implementation of the InstallationMonitor interface.

setPackageSelector

public void setPackageSelector(InstallationController.PackageSelector selector)
Plugs-in a given implementation of the PackageSelector interface.

Parameters:
selector - The given implementation of the PackageSelector interface.

setVerificationError

protected void setVerificationError(Exception error)
Prints the stack trace of a given Exception object as the verification error message.

Parameters:
error - The given Exception object.

setUimaHomePath

public void setUimaHomePath(String uimaHomePath)
Sets a given UIMA local home directory path.

Parameters:
uimaHomePath - The given UIMA local home directory path.

terminate

public void terminate()
Terminates the MessageRouter thread. This method should be called after all the processing is finished.


verifyComponent

public boolean verifyComponent()
Verifies installations of the main component, and sets appropriate component status in the SITH DB.

Returns:
true if the verification completed successfully, false otherwise.


Copyright © 2010 The Apache Software Foundation. All Rights Reserved.