View Javadoc

1   /**
2    *
3    * Copyright 2005 The Apache Software Foundation
4    *
5    *  Licensed under the Apache License, Version 2.0 (the "License");
6    *  you may not use this file except in compliance with the License.
7    *  You may obtain a copy of the License at
8    *
9    *     http://www.apache.org/licenses/LICENSE-2.0
10   *
11   *  Unless required by applicable law or agreed to in writing, software
12   *  distributed under the License is distributed on an "AS IS" BASIS,
13   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   *  See the License for the specific language governing permissions and
15   *  limitations under the License.
16   */
17  package org.apache.geronimo.system.plugin;
18  
19  import java.io.IOException;
20  import java.io.File;
21  import java.net.URL;
22  import java.util.Map;
23  import javax.security.auth.login.FailedLoginException;
24  import org.apache.geronimo.kernel.repository.Artifact;
25  
26  /**
27   * Knows how to import and export configurations
28   *
29   * @version $Rev: 410741 $ $Date: 2006-05-31 21:35:48 -0700 (Wed, 31 May 2006) $
30   */
31  public interface PluginInstaller {
32      /**
33       * Lists the plugins available for download in a particular Geronimo repository.
34       *
35       * @param mavenRepository The base URL to the maven repository.  This must
36       *                        contain the file geronimo-plugins.xml
37       * @param username Optional username, if the maven repo uses HTTP Basic authentication.
38       *                 Set this to null if no authentication is required.
39       * @param password Optional password, if the maven repo uses HTTP Basic authentication.
40       *                 Set this to null if no authentication is required.
41       */
42      public PluginList listPlugins(URL mavenRepository, String username, String password) throws IOException, FailedLoginException;
43  
44      /**
45       * Lists the plugins installed in the local Geronimo server, by name and
46       * ID.
47       *
48       * @return A Map with key type String (plugin name) and value type Artifact
49       *         (config ID of the plugin).
50       */
51      public Map getInstalledPlugins();
52  
53      /**
54       * Gets a CofigurationMetadata for a configuration installed in the local
55       * server.  Should load a saved one if available, or else create a new
56       * default one to the best of its abilities.
57       *
58       * @param moduleId Identifies the configuration.  This must match a
59       *                 configuration currently installed in the local server.
60       *                 The configId must be fully resolved (isResolved() == true)
61       */
62      public PluginMetadata getPluginMetadata(Artifact moduleId);
63  
64      /**
65       * Saves a ConfigurationMetadata for a particular plugin, if the server is
66       * able to record it.  This can be used if you later re-export the plugin,
67       * or just want to review the information for a particular installed
68       * plugin.
69       *
70       * @param metadata The data to save.  The contained configId (which must
71       *                 be fully resolved) identifies the configuration to save
72       *                 this for.
73       */
74      public void updatePluginMetadata(PluginMetadata metadata);
75  
76      /**
77       * Installs a configuration from a remote repository into the local Geronimo server,
78       * including all its dependencies.  The caller will get the results when the
79       * operation completes.  Note that this method does not throw exceptions on failure,
80       * but instead sets the failure property of the DownloadResults.
81       *
82       * @param username         Optional username, if the maven repo uses HTTP Basic authentication.
83       *                         Set this to null if no authentication is required.
84       * @param password         Optional password, if the maven repo uses HTTP Basic authentication.
85       *                         Set this to null if no authentication is required.
86       * @param pluginsToInstall The list of configurations to install
87       */
88      public DownloadResults install(PluginList pluginsToInstall, String username, String password);
89  
90      /**
91       * Installs a configuration from a remote repository into the local Geronimo server,
92       * including all its dependencies.  The method blocks until the operation completes,
93       * but the caller will be notified of progress frequently along the way (using the
94       * supplied DownloadPoller).  Therefore the caller is meant to create the poller and
95       * then call this method in a background thread.  Note that this method does not
96       * throw exceptions on failure, but instead sets the failure property of the
97       * DownloadPoller.
98       *
99       * @param pluginsToInstall The list of configurations to install
100      * @param username         Optional username, if the maven repo uses HTTP Basic authentication.
101      *                         Set this to null if no authentication is required.
102      * @param password         Optional password, if the maven repo uses HTTP Basic authentication.
103      *                         Set this to null if no authentication is required.
104      * @param poller           Will be notified with status updates as the download proceeds
105      */
106     public void install(PluginList pluginsToInstall, String username, String password, DownloadPoller poller);
107 
108     /**
109      * Installs a configuration from a remote repository into the local Geronimo server,
110      * including all its dependencies.  The method returns immediately, providing a key
111      * that can be used to poll the status of the download operation.  Note that the
112      * installation does not throw exceptions on failure, but instead sets the failure
113      * property of the DownloadResults that the caller can poll for.
114      *
115      * @param pluginsToInstall The list of configurations to install
116      * @param username         Optional username, if the maven repo uses HTTP Basic authentication.
117      *                         Set this to null if no authentication is required.
118      * @param password         Optional password, if the maven repo uses HTTP Basic authentication.
119      *                         Set this to null if no authentication is required.
120      *
121      * @return A key that can be passed to checkOnInstall
122      */
123     public Object startInstall(PluginList pluginsToInstall, String username, String password);
124 
125     /**
126      * Installs a configuration downloaded from a remote repository into the local Geronimo
127      * server, including all its dependencies.  The method returns immediately, providing a
128      * key that can be used to poll the status of the download operation.  Note that the
129      * installation does not throw exceptions on failure, but instead sets the failure
130      * property of the DownloadResults that the caller can poll for.
131      *
132      * @param carFile   A CAR file downloaded from a remote repository.  This is a packaged
133      *                  configuration with included configuration information, but it may
134      *                  still have external dependencies that need to be downloaded
135      *                  separately.  The metadata in the CAR file includes a repository URL
136      *                  for these downloads, and the username and password arguments are
137      *                  used in conjunction with that.
138      * @param username  Optional username, if the maven repo uses HTTP Basic authentication.
139      *                  Set this to null if no authentication is required.
140      * @param password  Optional password, if the maven repo uses HTTP Basic authentication.
141      *                  Set this to null if no authentication is required.
142      *
143      * @return A key that can be passed to checkOnInstall
144      */
145     public Object startInstall(File carFile, String username, String password);
146 
147     /**
148      * Gets the current progress of a download operation.  Note that once the
149      * DownloadResults is returned for this operation shows isFinished = true,
150      * the operation will be forgotten, so the caller should be careful not to
151      * call this again after the download has finished.
152      *
153      * @param key Identifies the operation to check on
154      */
155     public DownloadResults checkOnInstall(Object key);
156 }