001 /** 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 018 package org.apache.geronimo.kernel.config; 019 020 import java.io.File; 021 import java.io.IOException; 022 import java.io.OutputStream; 023 import java.net.MalformedURLException; 024 import java.util.List; 025 import java.util.Set; 026 027 import org.apache.geronimo.kernel.repository.Artifact; 028 import org.apache.geronimo.gbean.AbstractName; 029 030 /** 031 * Interface to a store for Configurations. 032 * 033 * @version $Rev: 476049 $ $Date: 2006-11-16 23:35:17 -0500 (Thu, 16 Nov 2006) $ 034 */ 035 public interface ConfigurationStore { 036 037 /** 038 * Determines if the identified configuration is an in-place one. This 039 * means that the configuration store only stores some meta-data and the 040 * actual content of the configuration is rooted somewhere else. 041 * 042 * @param configId the unique ID of the configuration, which must be fully 043 * resolved (isResolved() == true) 044 * 045 * @return true if the identified configuration is an in-place one. 046 * 047 * @throws NoSuchConfigException if the configuration is not contained in 048 * the store 049 * @throws IOException If the store cannot be read. 050 */ 051 boolean isInPlaceConfiguration(Artifact configId) throws NoSuchConfigException, IOException; 052 053 /** 054 * Move the unpacked configuration directory into this store 055 * 056 * @param configurationData the configuration data 057 * @throws IOException if the direcotyr could not be moved into the store 058 * @throws InvalidConfigException if there is a configuration problem within the source direcotry 059 */ 060 void install(ConfigurationData configurationData) throws IOException, InvalidConfigException; 061 062 /** 063 * Removes a configuration from the store 064 * 065 * @param configId the id of the configuration to remove, which must be 066 * fully resolved (isResolved() == true) 067 * 068 * @throws NoSuchConfigException if the configuration is not contained in the store 069 * @throws IOException if a problem occurs during the removal 070 */ 071 void uninstall(Artifact configId) throws NoSuchConfigException, IOException; 072 073 /** 074 * Loads the specified configuration into the kernel 075 * 076 * @param configId the id of the configuration to load, which must be fully 077 * resolved (isResolved() == true) 078 * 079 * @return the the configuration object 080 * 081 * @throws NoSuchConfigException if the configuration is not contained in the kernel 082 * @throws IOException if a problem occurs loading the configuration from the store 083 * @throws InvalidConfigException if the configuration is corrupt 084 */ 085 ConfigurationData loadConfiguration(Artifact configId) throws NoSuchConfigException, IOException, InvalidConfigException; 086 087 /** 088 * Determines if the store contains a configuration with the specified ID. 089 * The configuration need not be loaded or running, this just checks 090 * whether the configuration store has the data for it. 091 * 092 * @param configId the unique ID of the configuration, which must be fully 093 * resolved (isResolved() == true) 094 * 095 * @return true if the store contains the configuration 096 */ 097 boolean containsConfiguration(Artifact configId); 098 099 /** 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 }