View Javadoc

1   /**
2    *
3    * Copyright 2003-2004 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  
18  package org.apache.geronimo.kernel.config;
19  
20  import java.io.File;
21  import java.io.IOException;
22  import java.io.OutputStream;
23  import java.net.MalformedURLException;
24  import java.util.List;
25  import java.util.Set;
26  
27  import org.apache.geronimo.kernel.repository.Artifact;
28  import org.apache.geronimo.gbean.AbstractName;
29  
30  /**
31   * Interface to a store for Configurations.
32   *
33   * @version $Rev: 395121 $ $Date: 2006-04-18 20:50:05 -0700 (Tue, 18 Apr 2006) $
34   */
35  public interface ConfigurationStore {
36      
37      /**
38       * Determines if the identified configuration is an in-place one. This 
39       * means that the configuration store only stores some meta-data and the 
40       * actual content of the configuration is rooted somewhere else.
41       * 
42       * @param configId the unique ID of the configuration, which must be fully
43       *                 resolved (isResolved() == true)
44       *
45       * @return true if the identified configuration is an in-place one.
46       *
47       * @throws NoSuchConfigException if the configuration is not contained in
48       *                               the store
49       * @throws IOException If the store cannot be read.
50       */
51      boolean isInPlaceConfiguration(Artifact configId) throws NoSuchConfigException, IOException;
52      
53      /**
54       * Move the unpacked configuration directory into this store
55       *
56       * @param configurationData the configuration data
57       * @throws IOException if the direcotyr could not be moved into the store
58       * @throws InvalidConfigException if there is a configuration problem within the source direcotry
59       */
60      void install(ConfigurationData configurationData) throws IOException, InvalidConfigException;
61  
62      /**
63       * Removes a configuration from the store
64       *
65       * @param configId the id of the configuration to remove, which must be
66       *                 fully resolved (isResolved() == true)
67       *
68       * @throws NoSuchConfigException if the configuration is not contained in the store
69       * @throws IOException if a problem occurs during the removal
70       */
71      void uninstall(Artifact configId) throws NoSuchConfigException, IOException;
72  
73      /**
74       * Loads the specified configuration into the kernel
75       *
76       * @param configId the id of the configuration to load, which must be fully
77       *                 resolved (isResolved() == true)
78       *
79       * @return the the configuration object
80       *
81       * @throws NoSuchConfigException if the configuration is not contained in the kernel
82       * @throws IOException if a problem occurs loading the configuration from the store
83       * @throws InvalidConfigException if the configuration is corrupt
84       */
85      ConfigurationData loadConfiguration(Artifact configId) throws NoSuchConfigException, IOException, InvalidConfigException;
86  
87      /**
88       * Determines if the store contains a configuration with the specified ID.
89       * The configuration need not be loaded or running, this just checks
90       * whether the configuration store has the data for it.
91       *
92       * @param configId the unique ID of the configuration, which must be fully
93       *                 resolved (isResolved() == true)
94       *
95       * @return true if the store contains the configuration
96       */
97      boolean containsConfiguration(Artifact configId);
98  
99      /**
100      * Return the object name for the store.
101      *
102      * @return the object name for the store
103      */
104     String getObjectName();
105 
106     /**
107      * Return the object name for the store.
108      *
109      * @return the object name for the store
110      */
111     AbstractName getAbstractName();
112 
113     /**
114      * Return the configurations in the store
115      *
116      * @return a List (with entries of type ConfigurationInfo) of all the
117      *         configurations contained in this configuration store
118      */
119     List listConfigurations();
120 
121     /**
122      * Creates an empty directory for a new configuration with the specified configId
123      *
124      * @param configId the unique ID of the configuration, which must be fully
125      *                 resolved (isResolved() == true)
126      *
127      * @return the location of the new directory
128      * 
129      * @throws ConfigurationAlreadyExistsException if the configuration already exists in this store
130      */
131     File createNewConfigurationDir(Artifact configId) throws ConfigurationAlreadyExistsException;
132 
133     /**
134      * Locate the physical locations which match the supplied path in the given
135      * artifact/module.  The path may be an Ant-style pattern.
136      *
137      * @param configId    the artifact to search, which must be fully resolved
138      *                    (isResolved() == true)
139      * @param moduleName  the module name or null to search in the top-level
140      *                    artifact location
141      * @param path        the pattern to search for within the artifact/module,
142      *                    which may also be null to identify the artifact or
143      *                    module base path
144      *
145      * @return a Set (with entries of type URL) of the matching locations
146      */
147     Set resolve(Artifact configId, String moduleName, String path) throws NoSuchConfigException, MalformedURLException;
148 
149     /**
150      * Exports a configuration as a ZIP file.
151      *
152      * @param configId  The unique ID of the configuration to export, which
153      *                  must be fully resolved (isResolved() == true)
154      * @param output    The stream to write the ZIP content to
155      */
156     void exportConfiguration(Artifact configId, OutputStream output) throws IOException, NoSuchConfigException;
157 }