1 17 package org.apache.geronimo.kernel.config; 18 19 import java.util.Iterator ; 20 import java.util.LinkedHashSet ; 21 import java.util.Map ; 22 import java.util.Set ; 23 import java.util.TreeMap ; 24 import java.util.List ; 25 import java.util.ArrayList ; 26 27 import org.apache.geronimo.kernel.repository.Artifact; 28 29 32 public class ConfigurationModel { 33 private final Map configurations = new TreeMap (); 34 35 public void addConfiguation(Artifact configurationId, Set loadParentIds, Set startParentIds) throws NoSuchConfigException { 36 Set startParents = getStatuses(startParentIds); 37 38 Set loadParents = new LinkedHashSet (startParents); 40 loadParents.addAll(getStatuses(loadParentIds)); 41 42 ConfigurationStatus configurationStatus = new ConfigurationStatus(configurationId, loadParents, startParents); 43 configurations.put(configurationId, configurationStatus); 44 } 45 46 private Set getStatuses(Set configurationIds) throws NoSuchConfigException { 47 LinkedHashSet statuses = new LinkedHashSet (configurationIds.size()); 48 for (Iterator iterator = configurationIds.iterator(); iterator.hasNext();) { 49 Artifact configurationId = (Artifact) iterator.next(); 50 ConfigurationStatus configurationStatus = (ConfigurationStatus) configurations.get(configurationId); 51 if (configurationStatus == null) { 52 throw new NoSuchConfigException(configurationId); 53 } 54 55 statuses.add(configurationStatus); 56 } 57 return statuses; 58 } 59 60 public void removeConfiguration(Artifact configurationId) throws NoSuchConfigException { 61 ConfigurationStatus configurationStatus = (ConfigurationStatus) configurations.get(configurationId); 62 if (configurationStatus == null) { 63 throw new NoSuchConfigException(configurationId); 64 } 65 configurationStatus.destroy(); 66 configurations.remove(configurationId); 67 } 68 69 public boolean containsConfiguration(Artifact configurationId) { 70 return configurations.containsKey(configurationId); 71 } 72 73 public void upgradeConfiguration(Artifact existingId, Artifact newId, Set newLoadParentIds, Set newStartParentIds) throws NoSuchConfigException { 74 Set newStartParents = getStatuses(newStartParentIds); 75 76 Set newLoadParents = new LinkedHashSet (newStartParents); 78 newLoadParents.addAll(getStatuses(newLoadParentIds)); 79 80 ConfigurationStatus configurationStatus = (ConfigurationStatus) configurations.remove(existingId); 81 if (configurationStatus == null) { 82 throw new NoSuchConfigException(existingId); 83 } 84 configurations.put(newId, configurationStatus); 85 configurationStatus.upgrade(newId, newLoadParents, newStartParents); 86 } 87 88 public boolean isLoaded(Artifact configurationId) { 89 ConfigurationStatus configurationStatus = (ConfigurationStatus) configurations.get(configurationId); 90 if (configurationStatus != null) { 91 return configurationStatus.isLoaded(); 92 } 93 return false; 94 } 95 96 public Artifact[] getLoaded(Artifact query) { 97 List results = new ArrayList (); 98 for (Iterator it = configurations.entrySet().iterator(); it.hasNext();) { 99 Map.Entry entry = (Map.Entry ) it.next(); 100 Artifact test = (Artifact) entry.getKey(); 101 ConfigurationStatus status = (ConfigurationStatus) entry.getValue(); 102 if(query.matches(test) && status.isLoaded()) { 103 results.add(test); 104 } 105 } 106 return (Artifact[]) results.toArray(new Artifact[results.size()]); 107 } 108 109 public boolean isStarted(Artifact configurationId) { 110 ConfigurationStatus configurationStatus = (ConfigurationStatus) configurations.get(configurationId); 111 if (configurationStatus != null) { 112 return configurationStatus.isStarted(); 113 } 114 return false; 115 } 116 117 public Artifact[] getStarted(Artifact query) { 118 List results = new ArrayList (); 119 for (Iterator it = configurations.entrySet().iterator(); it.hasNext();) { 120 Map.Entry entry = (Map.Entry ) it.next(); 121 Artifact test = (Artifact) entry.getKey(); 122 ConfigurationStatus status = (ConfigurationStatus) entry.getValue(); 123 if(query.matches(test) && status.isStarted()) { 124 results.add(test); 125 } 126 } 127 return (Artifact[]) results.toArray(new Artifact[results.size()]); 128 } 129 130 public LinkedHashSet load(Artifact configurationId) throws NoSuchConfigException { 131 ConfigurationStatus configurationStatus = (ConfigurationStatus) configurations.get(configurationId); 132 if (configurationStatus == null) { 133 throw new NoSuchConfigException(configurationId); 134 } 135 return configurationStatus.load(); 136 } 137 138 public LinkedHashSet start(Artifact configurationId) throws NoSuchConfigException { 139 ConfigurationStatus configurationStatus = (ConfigurationStatus) configurations.get(configurationId); 140 if (configurationStatus == null) { 141 throw new NoSuchConfigException(configurationId); 142 } 143 return configurationStatus.start(); 144 } 145 146 public LinkedHashSet stop(Artifact configurationId) throws NoSuchConfigException { 147 return stop(configurationId, true); 148 } 149 150 public LinkedHashSet stop(Artifact configurationId, boolean gc) throws NoSuchConfigException { 151 ConfigurationStatus configurationStatus = (ConfigurationStatus) configurations.get(configurationId); 152 if (configurationStatus == null) { 153 throw new NoSuchConfigException(configurationId); 154 } 155 return configurationStatus.stop(gc); 156 } 157 158 public LinkedHashSet restart(Artifact configurationId) throws NoSuchConfigException { 159 ConfigurationStatus configurationStatus = (ConfigurationStatus) configurations.get(configurationId); 160 if (configurationStatus == null) { 161 throw new NoSuchConfigException(configurationId); 162 } 163 return configurationStatus.restart(); 164 } 165 166 public LinkedHashSet unload(Artifact configurationId) throws NoSuchConfigException { 167 return unload(configurationId, true); 168 } 169 170 public LinkedHashSet unload(Artifact configurationId, boolean gc) throws NoSuchConfigException { 171 ConfigurationStatus configurationStatus = (ConfigurationStatus) configurations.get(configurationId); 172 if (configurationStatus == null) { 173 throw new NoSuchConfigException(configurationId); 174 } 175 return configurationStatus.unload(gc); 176 } 177 178 public LinkedHashSet reload(Artifact existingConfigurationId) throws NoSuchConfigException { 179 ConfigurationStatus configurationStatus = (ConfigurationStatus) configurations.get(existingConfigurationId); 180 if (configurationStatus == null) { 181 return new LinkedHashSet (); 182 } 183 return configurationStatus.reload(); 184 } 185 186 public Set getLoaded() { 187 Set result = new LinkedHashSet (); 188 for (Iterator iterator = configurations.values().iterator(); iterator.hasNext();) { 189 ConfigurationStatus status = (ConfigurationStatus) iterator.next(); 190 if (status.isLoaded()) { 191 result.add(status.getConfigurationId()); 192 } 193 } 194 return result; 195 } 196 197 public Set getStarted() { 198 Set result = new LinkedHashSet (); 199 for (Iterator iterator = configurations.values().iterator(); iterator.hasNext();) { 200 ConfigurationStatus status = (ConfigurationStatus) iterator.next(); 201 if (status.isStarted()) { 202 result.add(status.getConfigurationId()); 203 } 204 } 205 return result; 206 } 207 208 public Set getUserLoaded() { 209 Set result = new LinkedHashSet (); 210 for (Iterator iterator = configurations.values().iterator(); iterator.hasNext();) { 211 ConfigurationStatus status = (ConfigurationStatus) iterator.next(); 212 if (status.isUserLoaded()) { 213 result.add(status.getConfigurationId()); 214 } 215 } 216 return result; 217 } 218 219 public Set getUserStarted() { 220 Set result = new LinkedHashSet (); 221 for (Iterator iterator = configurations.values().iterator(); iterator.hasNext();) { 222 ConfigurationStatus status = (ConfigurationStatus) iterator.next(); 223 if (status.isUserStarted()) { 224 result.add(status.getConfigurationId()); 225 } 226 } 227 return result; 228 } 229 } 230 | Popular Tags |