1 17 package org.apache.geronimo.system.configuration; 18 19 import java.io.PrintWriter ; 20 import java.util.ArrayList ; 21 import java.util.Iterator ; 22 import java.util.LinkedHashMap ; 23 import java.util.List ; 24 import java.util.Map ; 25 26 import org.apache.geronimo.kernel.InvalidGBeanException; 27 import org.apache.geronimo.kernel.repository.Artifact; 28 import org.w3c.dom.Element ; 29 import org.w3c.dom.NodeList ; 30 import org.w3c.dom.Document ; 31 32 35 class ServerOverride { 36 private final Map configurations = new LinkedHashMap (); 37 38 public ServerOverride() { 39 } 40 41 public ServerOverride(Element element) throws InvalidGBeanException { 42 NodeList configs = element.getElementsByTagName("module"); 43 for (int i = 0; i < configs.getLength(); i++) { 44 Element configurationElement = (Element ) configs.item(i); 45 ConfigurationOverride configuration = new ConfigurationOverride(configurationElement); 46 addConfiguration(configuration); 47 } 48 49 configs = element.getElementsByTagName("configuration"); 51 for (int i = 0; i < configs.getLength(); i++) { 52 Element configurationElement = (Element ) configs.item(i); 53 ConfigurationOverride configuration = new ConfigurationOverride(configurationElement); 54 addConfiguration(configuration); 55 } 56 } 57 58 public ConfigurationOverride getConfiguration(Artifact configurationName) { 59 return getConfiguration(configurationName, false); 60 } 61 62 public ConfigurationOverride getConfiguration(Artifact configurationName, boolean create) { 63 ConfigurationOverride configuration = (ConfigurationOverride) configurations.get(configurationName); 64 if (create && configuration == null) { 65 configuration = new ConfigurationOverride(configurationName, true); 66 configurations.put(configurationName, configuration); 67 } 68 return configuration; 69 } 70 71 public void addConfiguration(ConfigurationOverride configuration) { 72 configurations.put(configuration.getName(), configuration); 73 } 74 75 public void removeConfiguration(Artifact configurationName) { 76 configurations.remove(configurationName); 77 } 78 79 public Map getConfigurations() { 80 return configurations; 81 } 82 83 public Artifact[] queryConfigurations(Artifact query) { 84 List list = new ArrayList (); 85 for (Iterator it = configurations.keySet().iterator(); it.hasNext();) { 86 Artifact test = (Artifact) it.next(); 87 if(query.matches(test)) { 88 list.add(test); 89 } 90 } 91 return (Artifact[]) list.toArray(new Artifact[list.size()]); 92 } 93 94 public Element writeXml(Document doc) { 95 Element root = doc.createElement("attributes"); 96 root.setAttribute("xmlns", "http://geronimo.apache.org/xml/ns/attributes-1.1"); 97 doc.appendChild(doc.createComment(" ======================================================== ")); 98 doc.appendChild(doc.createComment(" Warning - This XML file is re-generated by Geronimo when ")); 99 doc.appendChild(doc.createComment(" changes are made to Geronimo's configuration, therefore ")); 100 doc.appendChild(doc.createComment(" any comments added to this file will be lost. ")); 101 doc.appendChild(doc.createComment(" Do not edit this file while Geronimo is running. ")); 102 doc.appendChild(doc.createComment(" ======================================================== ")); 103 doc.appendChild(root); 104 for (Iterator it = configurations.entrySet().iterator(); it.hasNext();) { 105 Map.Entry entry = (Map.Entry ) it.next(); 106 ConfigurationOverride configurationOverride = (ConfigurationOverride) entry.getValue(); 107 configurationOverride.writeXml(doc, root); 108 } 109 return root; 110 } 111 } 112 | Popular Tags |