1 5 package net.sf.panoptes.component.jmx.model; 6 7 import java.io.IOException ; 8 import java.util.Collection ; 9 import java.util.HashMap ; 10 import java.util.HashSet ; 11 import java.util.Iterator ; 12 import java.util.Set ; 13 14 import javax.management.InstanceNotFoundException ; 15 import javax.management.IntrospectionException ; 16 import javax.management.ObjectName ; 17 import javax.management.QueryExp ; 18 import javax.management.ReflectionException ; 19 20 import org.apache.commons.logging.Log; 21 import org.apache.commons.logging.LogFactory; 22 23 import net.sf.panoptes.controller.MainController; 24 import net.sf.panoptes.model.node.Node; 25 import net.sf.panoptes.model.node.NodeDescriptor; 26 27 33 public class ServerRegistry { 34 35 36 private static ServerRegistry singleton = null; 37 private Log log = LogFactory.getLog(getClass()); 38 39 private HashMap servers = new HashMap (); 40 41 44 public NodeDescriptor getConfigDescriptor() { 45 return new NodeDescriptor("MBean Servers", "", Node.ICON_FOLDER); 46 } 47 48 public static ServerRegistry getInstance() { 49 if (singleton == null) 50 singleton = new ServerRegistry(); 51 return singleton; 52 } 53 54 public void addServer(String identity, MBeanServerNode server) { 55 servers.put(identity, server); 56 } 57 58 public MBeanServerNode getServer(String identity) { 59 return (MBeanServerNode) servers.get(identity); 60 } 61 62 public void removeServerComponent(String identity) { 63 servers.remove(identity); 64 } 65 66 public MBeanServerNode[] listServers() { 67 return (MBeanServerNode[]) servers.values().toArray(new MBeanServerNode[servers.size()]); 68 } 69 70 public Iterator getServers() { 71 return servers.values().iterator(); 72 } 73 74 75 80 public Collection queryMBeans(ObjectName name, QueryExp query) throws InstanceNotFoundException , IntrospectionException , ReflectionException , IOException { 81 Set all = new HashSet (); 82 for (Iterator i = servers.values().iterator(); i.hasNext();) { 83 MBeanServerNode sc = (MBeanServerNode) i.next(); 84 all.addAll(sc.queryMBeans(name, query)); 85 } 86 return all; 87 } 88 89 public Collection queryMBeans(ObjectName name, QueryExp query, Node parent, NodeFactory factory) throws InstanceNotFoundException , IntrospectionException , ReflectionException , IOException { 90 Set all = new HashSet (); 91 for (Iterator i = servers.values().iterator(); i.hasNext();) { 92 MBeanServerNode sc = (MBeanServerNode) i.next(); 93 all.addAll(sc.queryMBeans(name, query, parent, factory)); 94 } 95 return all; 96 } 97 98 101 public Collection queryDomains() throws IOException { 102 Set all = new HashSet (); 103 for (Iterator i = servers.values().iterator(); i.hasNext();) { 104 MBeanServerNode sc = (MBeanServerNode) i.next(); 105 106 all.addAll(sc.getDomains()); 107 } 108 return all; 109 110 } 111 } 112 | Popular Tags |