KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sf > panoptes > registry > AliasRegistry


1 /*
2  * Created on 25.jul.2003
3  *
4  */

5 package net.sf.panoptes.registry;
6
7 import java.io.IOException JavaDoc;
8 import java.util.Collection JavaDoc;
9 import java.util.HashMap JavaDoc;
10
11 import javax.management.InstanceNotFoundException JavaDoc;
12 import javax.management.IntrospectionException JavaDoc;
13 import javax.management.MalformedObjectNameException JavaDoc;
14 import javax.management.ObjectName JavaDoc;
15 import javax.management.ReflectionException JavaDoc;
16
17 import net.sf.panoptes.component.jmx.model.MBeanWrapper;
18 import net.sf.panoptes.component.jmx.model.MBeanServerNode;
19 import net.sf.panoptes.component.jmx.model.ServerRegistry;
20
21 import org.apache.commons.logging.Log;
22 import org.apache.commons.logging.LogFactory;
23
24 /**
25  *
26  *
27  * @author Dag Liodden
28  * @version 0.1
29  */

30 public class AliasRegistry {
31
32     public HashMap JavaDoc aliases = new HashMap JavaDoc();
33     private Log log = LogFactory.getLog(getClass());
34
35     private static AliasRegistry instance;
36
37     private AliasRegistry() {
38         try {
39             aliases.put("servers", new Alias(new ObjectName JavaDoc("jboss.system:type=Server"), true));
40             aliases.put(
41                 "serverInfo",
42                 new Alias(new ObjectName JavaDoc("jboss.system:type=ServerInfo"), false));
43             aliases.put(
44                 "mainDeployer",
45                 new Alias(new ObjectName JavaDoc("jboss.system:service=MainDeployer"), false));
46         } catch (MalformedObjectNameException JavaDoc e) {
47             // TODO Auto-generated catch block
48
e.printStackTrace();
49         }
50     }
51
52     public static AliasRegistry getInstance() {
53         if (instance == null)
54             instance = new AliasRegistry();
55         return instance;
56     }
57
58     public Object JavaDoc get(String JavaDoc aliasName, MBeanServerNode server)
59         throws InstanceNotFoundException JavaDoc, IntrospectionException JavaDoc, ReflectionException JavaDoc, IOException JavaDoc {
60         if (!aliases.containsKey(aliasName)) {
61             log.warn("Alias '" + aliasName + "' is not bound");
62             return null;
63         } else {
64             Collection JavaDoc s;
65             Alias alias = (Alias) aliases.get(aliasName);
66             if (alias.isGlobal()) {
67                 s = ServerRegistry.getInstance().queryMBeans(alias.getObjectName(), null);
68                 if (s.size() == 1)
69                 // @todo Sørg for at MBeanServerComponent gjør instansieringen
70
return (MBeanWrapper) s.iterator().next();
71                 else
72                     return s.toArray();
73
74             } else {
75                 s = server.getServerConnection().queryNames(alias.getObjectName(), null);
76                 if (s.size() == 1)
77                     // @todo Sørg for at MBeanServerComponent gjør instansieringen
78
return new MBeanWrapper(server, (ObjectName JavaDoc) s.iterator().next());
79                 else
80                     return s.toArray();
81             }
82         }
83     }
84
85     public static class Context {
86         private MBeanWrapper component;
87         public Context(MBeanWrapper component) {
88             this.component = component;
89         }
90
91         public Object JavaDoc get(String JavaDoc alias)
92             throws InstanceNotFoundException JavaDoc, IntrospectionException JavaDoc, ReflectionException JavaDoc, IOException JavaDoc {
93             return getInstance().get(alias, component.getServer());
94         }
95         
96         /**
97          * Allow scripts to override default context
98          * @param alias
99          * @param mbean
100          * @return
101          */

102         public Object JavaDoc get(String JavaDoc alias, MBeanWrapper mbean) throws InstanceNotFoundException JavaDoc, IntrospectionException JavaDoc, ReflectionException JavaDoc, IOException JavaDoc {
103             return getInstance().get(alias, mbean.getServer());
104         }
105     }
106
107 }
108
Popular Tags