org.apache.geronimo.system.plugin
Class PluginInstallerGBean

java.lang.Object
  extended by org.apache.geronimo.system.plugin.PluginInstallerGBean
All Implemented Interfaces:
PluginInstaller

public class PluginInstallerGBean
extends Object
implements PluginInstaller

A GBean that knows how to download configurations from a Maven repository.


Field Summary
static GBeanInfo GBEAN_INFO
           
 
Constructor Summary
PluginInstallerGBean(ConfigurationManager configManager, WritableListableRepository repository, ConfigurationStore configStore, Collection<? extends ServerInstanceData> serverInstanceDatas, ServerInfo serverInfo, ThreadPool threadPool, ArtifactManager artifactManager, Collection<PersistentConfigurationList> persistentConfigurationLists, ClassLoader classLoader)
          GBean constructor.
PluginInstallerGBean(String targetRepositoryPath, String targetServerPath, Collection<? extends ServerInstanceData> serverInstanceDatas, Kernel kernel, ClassLoader classLoader)
          Constructor for use in assembling a new server.
 
Method Summary
static void addGeronimoDependencies(ConfigurationData data, List<DependencyType> deps, boolean includeVersion)
           
 DownloadResults checkOnInstall(Object key)
          Gets the current progress of a download operation.
 DownloadResults checkOnInstall(Object key, boolean remove)
          Gets the current progress of a download operation.
 Dependency[] checkPrerequisites(PluginType plugin)
          Ensures that a plugin's prerequisites are installed
static PluginType copy(PluginType metadata, PluginArtifactType instance)
           
 PluginListType createPluginListForRepositories(String repo)
           
static GBeanInfo getGBeanInfo()
           
 Map getInstalledPlugins()
          Lists the plugins installed in the local Geronimo server, by name and ID.
 PluginType getPluginMetadata(Artifact moduleId)
          Gets a ConfigurationMetadata for a configuration installed in the local server.
 void install(File carFile, String defaultRepository, boolean restrictToDefaultRepository, String username, String password, DownloadPoller poller)
          Installs from a pre-downloaded CAR file
 void install(PluginListType pluginsToInstall, SourceRepository defaultRepository, boolean restrictToDefaultRepository, String username, String password, DownloadPoller poller)
           
 void install(PluginListType pluginsToInstall, SourceRepository defaultRepository, boolean restrictToDefaultRepository, String username, String password, DownloadPoller poller, boolean validatePlugins)
           
 DownloadResults install(PluginListType pluginsToInstall, String defaultRepository, boolean restrictToDefaultRepository, String username, String password)
          Installs a configuration from a remote repository into the local Geronimo server, including all its dependencies.
 void install(PluginListType pluginsToInstall, String defaultRepository, boolean restrictToDefaultRepository, String username, String password, DownloadPoller poller)
          Installs a configuration from a remote repository into the local Geronimo server, including all its dependencies.
 Artifact installLibrary(File libFile, String groupId)
           
 DownloadResults installPluginList(String targetRepositoryPath, String relativeTargetServerPath, PluginListType pluginList)
          This more or less clones the current PluginInstallerGBean to create one with the same server instances (structure) but using the current server as config store and assembling a server in a provided location.
 PluginListType listPlugins(URL mavenRepository, String username, String password)
          Lists the plugins available for download in a particular Geronimo repository.
 void mergeOverrides(String server, AttributesType overrides)
           
 Object startInstall(File carFile, String defaultRepository, boolean restrictToDefaultRepository, String username, String password)
          Installs a configuration downloaded from a remote repository into the local Geronimo server, including all its dependencies.
 Object startInstall(PluginListType pluginsToInstall, String defaultRepository, boolean restrictToDefaultRepository, String username, String password)
          Installs a configuration from a remote repository into the local Geronimo server, including all its dependencies.
static Artifact toArtifact(ArtifactType moduleId)
           
static ArtifactType toArtifactType(Artifact id)
           
static DependencyType toDependencyType(Dependency dep, boolean includeVersion)
           
static PluginType toKey(PluginType metadata)
           
 void updatePluginMetadata(PluginType metadata)
          Saves a ConfigurationMetadata for a particular plugin, if the server is able to record it.
 void validatePlugin(PluginType plugin)
          Ensures that a plugin is installable.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

GBEAN_INFO

public static final GBeanInfo GBEAN_INFO
Constructor Detail

PluginInstallerGBean

public PluginInstallerGBean(ConfigurationManager configManager,
                            WritableListableRepository repository,
                            ConfigurationStore configStore,
                            Collection<? extends ServerInstanceData> serverInstanceDatas,
                            ServerInfo serverInfo,
                            ThreadPool threadPool,
                            ArtifactManager artifactManager,
                            Collection<PersistentConfigurationList> persistentConfigurationLists,
                            ClassLoader classLoader)
                     throws IOException
GBean constructor. Supply an existing ConfigurationManager. Use for adding to the current server.

Parameters:
configManager - Configuration Manager for this server
repository - repository to install into
configStore - configuration store to install into
serverInstanceDatas - set of server "layouts" to install config info into
serverInfo - location of server
threadPool - thread pool for async operations
artifactManager - artifact manager to resolve existing artifacts
persistentConfigurationLists - used to start new plugins in a running server
classLoader - classLoader @throws IOException exception if server instance cannot be loaded
Throws:
IOException - from bad ServerInstance

PluginInstallerGBean

public PluginInstallerGBean(String targetRepositoryPath,
                            String targetServerPath,
                            Collection<? extends ServerInstanceData> serverInstanceDatas,
                            Kernel kernel,
                            ClassLoader classLoader)
                     throws Exception
Constructor for use in assembling a new server.

Parameters:
serverInstanceDatas - set of server layouts
kernel - kernel for current server
classLoader - classLoader
targetRepositoryPath - location of repo to install into (not in current server)
targetServerPath - location of server to install into (not current server
Throws:
IOException - if layouts can't be loaded
Exception
Method Detail

installPluginList

public DownloadResults installPluginList(String targetRepositoryPath,
                                         String relativeTargetServerPath,
                                         PluginListType pluginList)
                                  throws Exception
This more or less clones the current PluginInstallerGBean to create one with the same server instances (structure) but using the current server as config store and assembling a server in a provided location.

Specified by:
installPluginList in interface PluginInstaller
Parameters:
targetRepositoryPath - location of repository in new server (normally "repository")
relativeTargetServerPath - Location of server to assemble relative to current server
pluginList - list of plugins to install
Throws:
Exception - if something goes wrong

mergeOverrides

public void mergeOverrides(String server,
                           AttributesType overrides)
                    throws InvalidGBeanException,
                           IOException
Specified by:
mergeOverrides in interface PluginInstaller
Throws:
InvalidGBeanException
IOException

getInstalledPlugins

public Map getInstalledPlugins()
Lists the plugins installed in the local Geronimo server, by name and ID.

Specified by:
getInstalledPlugins in interface PluginInstaller
Returns:
A Map with key type String (plugin name) and value type Artifact (config ID of the plugin).

getPluginMetadata

public PluginType getPluginMetadata(Artifact moduleId)
Gets a ConfigurationMetadata for a configuration installed in the local server. Should load a saved one if available, or else create a new default one to the best of its abilities.

Specified by:
getPluginMetadata in interface PluginInstaller
Parameters:
moduleId - Identifies the configuration. This must match a configuration currently installed in the local server. The configId must be fully resolved (isResolved() == true)

updatePluginMetadata

public void updatePluginMetadata(PluginType metadata)
Saves a ConfigurationMetadata for a particular plugin, if the server is able to record it. This can be used if you later re-export the plugin, or just want to review the information for a particular installed plugin.

Specified by:
updatePluginMetadata in interface PluginInstaller
Parameters:
metadata - The data to save. The contained configId (which must be fully resolved) identifies the configuration to save this for.

listPlugins

public PluginListType listPlugins(URL mavenRepository,
                                  String username,
                                  String password)
                           throws IOException,
                                  FailedLoginException
Lists the plugins available for download in a particular Geronimo repository.

Specified by:
listPlugins in interface PluginInstaller
Parameters:
mavenRepository - The base URL to the maven repository. This must contain the file geronimo-plugins.xml
username - Optional username, if the maven repo uses HTTP Basic authentication. Set this to null if no authentication is required.
password - Optional password, if the maven repo uses HTTP Basic authentication. Set this to null if no authentication is required.
Throws:
IOException
FailedLoginException

install

public DownloadResults install(PluginListType pluginsToInstall,
                               String defaultRepository,
                               boolean restrictToDefaultRepository,
                               String username,
                               String password)
Installs a configuration from a remote repository into the local Geronimo server, including all its dependencies. The caller will get the results when the operation completes. Note that this method does not throw exceptions on failure, but instead sets the failure property of the DownloadResults.

Specified by:
install in interface PluginInstaller
Parameters:
pluginsToInstall - The list of configurations to install
defaultRepository - Default repo to look for plugins in
restrictToDefaultRepository - Whether to follow hints to other plugin repos.
username - Optional username, if the maven repo uses HTTP Basic authentication. Set this to null if no authentication is required.
password - Optional password, if the maven repo uses HTTP Basic authentication. Set this to null if no authentication is required.

install

public void install(PluginListType pluginsToInstall,
                    String defaultRepository,
                    boolean restrictToDefaultRepository,
                    String username,
                    String password,
                    DownloadPoller poller)
Installs a configuration from a remote repository into the local Geronimo server, including all its dependencies. The method blocks until the operation completes, but the caller will be notified of progress frequently along the way (using the supplied DownloadPoller). Therefore the caller is meant to create the poller and then call this method in a background thread. Note that this method does not throw exceptions on failure, but instead sets the failure property of the DownloadPoller.

Specified by:
install in interface PluginInstaller
Parameters:
pluginsToInstall - The list of configurations to install
defaultRepository - Default repo to look for plugins in (not required)
restrictToDefaultRepository - Whether to follow hints to other plugin repos.
username - Optional username, if the maven repo uses HTTP Basic authentication. Set this to null if no authentication is required.
password - Optional password, if the maven repo uses HTTP Basic authentication. Set this to null if no authentication is required.
poller - Will be notified with status updates as the download proceeds

install

public void install(PluginListType pluginsToInstall,
                    SourceRepository defaultRepository,
                    boolean restrictToDefaultRepository,
                    String username,
                    String password,
                    DownloadPoller poller)

install

public void install(PluginListType pluginsToInstall,
                    SourceRepository defaultRepository,
                    boolean restrictToDefaultRepository,
                    String username,
                    String password,
                    DownloadPoller poller,
                    boolean validatePlugins)

startInstall

public Object startInstall(PluginListType pluginsToInstall,
                           String defaultRepository,
                           boolean restrictToDefaultRepository,
                           String username,
                           String password)
Installs a configuration from a remote repository into the local Geronimo server, including all its dependencies. The method returns immediately, providing a key that can be used to poll the status of the download operation. Note that the installation does not throw exceptions on failure, but instead sets the failure property of the DownloadResults that the caller can poll for.

Specified by:
startInstall in interface PluginInstaller
Parameters:
pluginsToInstall - The list of configurations to install
defaultRepository - Default repo to look for plugins in
restrictToDefaultRepository - Whether to follow hints to other plugin repos.
username - Optional username, if the maven repo uses HTTP Basic authentication. Set this to null if no authentication is required.
password - Optional password, if the maven repo uses HTTP Basic authentication. Set this to null if no authentication is required. @return A key that can be passed to checkOnInstall
Returns:
A key that can be passed to checkOnInstall

startInstall

public Object startInstall(File carFile,
                           String defaultRepository,
                           boolean restrictToDefaultRepository,
                           String username,
                           String password)
Installs a configuration downloaded from a remote repository into the local Geronimo server, including all its dependencies. The method returns immediately, providing a key that can be used to poll the status of the download operation. Note that the installation does not throw exceptions on failure, but instead sets the failure property of the DownloadResults that the caller can poll for.

Specified by:
startInstall in interface PluginInstaller
Parameters:
carFile - A CAR file downloaded from a remote repository. This is a packaged configuration with included configuration information, but it may still have external dependencies that need to be downloaded separately. The metadata in the CAR file includes a repository URL for these downloads, and the username and password arguments are used in conjunction with that.
defaultRepository - Default repo to look for plugins in
restrictToDefaultRepository - Whether to follow hints to other plugin repos.
username - Optional username, if the maven repo uses HTTP Basic authentication. Set this to null if no authentication is required.
password - Optional password, if the maven repo uses HTTP Basic authentication. Set this to null if no authentication is required. @return A key that can be passed to checkOnInstall
Returns:
A key that can be passed to checkOnInstall

checkOnInstall

public DownloadResults checkOnInstall(Object key)
Gets the current progress of a download operation. Note that once the DownloadResults is returned for this operation shows isFinished = true, the operation will be forgotten, so the caller should be careful not to call this again after the download has finished.

Specified by:
checkOnInstall in interface PluginInstaller
Parameters:
key - Identifies the operation to check on

checkOnInstall

public DownloadResults checkOnInstall(Object key,
                                      boolean remove)
Gets the current progress of a download operation.

Specified by:
checkOnInstall in interface PluginInstaller
Parameters:
key - Identifies the operation to check on
remove - If true and the download operation has finished, the DownloadResults will be forgotten and the next call to this function will return null. Otherwise, the DownloadResults will be retained until this function is called with the remove parameter set to true. This parameter is only used when the download operation has finished (DownloadResults.isFinished() returns true).

install

public void install(File carFile,
                    String defaultRepository,
                    boolean restrictToDefaultRepository,
                    String username,
                    String password,
                    DownloadPoller poller)
Installs from a pre-downloaded CAR file

Parameters:
carFile - care file to install
defaultRepository - Default repo to look for plugins in
restrictToDefaultRepository - Whether to follow hints to other plugin repos.
username - repo username
password - repo password
poller - monitor for reporting progress

validatePlugin

public void validatePlugin(PluginType plugin)
                    throws MissingDependencyException
Ensures that a plugin is installable.

Specified by:
validatePlugin in interface PluginInstaller
Parameters:
plugin - plugin to check
Throws:
MissingDependencyException - if plugin requires a dependency that is not present

checkPrerequisites

public Dependency[] checkPrerequisites(PluginType plugin)
Ensures that a plugin's prerequisites are installed

Specified by:
checkPrerequisites in interface PluginInstaller
Parameters:
plugin - plugin artifact to check
Returns:
array of missing depedencies

installLibrary

public Artifact installLibrary(File libFile,
                               String groupId)
                        throws IOException
Specified by:
installLibrary in interface PluginInstaller
Throws:
IOException

addGeronimoDependencies

public static void addGeronimoDependencies(ConfigurationData data,
                                           List<DependencyType> deps,
                                           boolean includeVersion)

toDependencyType

public static DependencyType toDependencyType(Dependency dep,
                                              boolean includeVersion)

toArtifact

public static Artifact toArtifact(ArtifactType moduleId)

toArtifactType

public static ArtifactType toArtifactType(Artifact id)

copy

public static PluginType copy(PluginType metadata,
                              PluginArtifactType instance)

toKey

public static PluginType toKey(PluginType metadata)

createPluginListForRepositories

public PluginListType createPluginListForRepositories(String repo)
                                               throws NoSuchStoreException
Specified by:
createPluginListForRepositories in interface PluginInstaller
Throws:
NoSuchStoreException

getGBeanInfo

public static GBeanInfo getGBeanInfo()


Copyright © 2003-2008 The Apache Geronimo development community. All Rights Reserved.