KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sf > panoptes > component > jmx > model > MBeanLinkNode


1 /*
2  * Created on 07.mar.2003
3  *
4  * To change this generated comment go to Window>Preferences>Java>Code
5  * Generation>Code and Comments
6  */

7 package net.sf.panoptes.component.jmx.model;
8
9 import java.io.IOException JavaDoc;
10 import java.util.ArrayList JavaDoc;
11 import java.util.Collections JavaDoc;
12 import java.util.Iterator JavaDoc;
13 import java.util.List JavaDoc;
14 import java.util.Map JavaDoc;
15
16 import javax.management.InstanceNotFoundException JavaDoc;
17 import javax.management.IntrospectionException JavaDoc;
18 import javax.management.MBeanAttributeInfo JavaDoc;
19 import javax.management.MBeanInfo JavaDoc;
20 import javax.management.MBeanNotificationInfo JavaDoc;
21 import javax.management.MBeanOperationInfo JavaDoc;
22 import javax.management.ObjectName JavaDoc;
23 import javax.management.ReflectionException JavaDoc;
24 import javax.management.relation.Relation JavaDoc;
25
26 import net.sf.panoptes.model.node.BrokenLinkNode;
27 import net.sf.panoptes.model.node.GroupNode;
28 import net.sf.panoptes.model.node.Leaf;
29 import net.sf.panoptes.model.node.Node;
30 import net.sf.panoptes.model.node.NodeDescriptor;
31 import net.sf.panoptes.model.node.NodeSupport;
32
33 /**
34  * Instances of this class are placeholders or "shortcuts" for other
35  * components. They are used to enable a single component to be displayed and
36  * manipulated in several places in the hierarchy at the same time.
37  *
38  * @author dag@liodden.no
39  * @see net.sf.panoptes.model.component.IComponent
40  * @see net.sf.panoptes.model.node.NodeSupport
41  * @version 0.1
42  *
43  */

44 public class MBeanLinkNode extends GroupNode {
45
46     private ObjectName JavaDoc objectName;
47     private GroupNode attributesGroup = null;
48     private GroupNode operationsGroup = null;
49     private GroupNode notificationsGroup = null;
50     private GroupNode relationsGroup = null;
51     private MBeanWrapper mbean = null;
52
53     /**
54      * Creates a new instance.
55      *
56      * @param componentRegistry
57      * the registry in which the component this instance is
58      * placeholder for lives
59      * @param componentName
60      * the <code>ComponentName</code> of the component
61      */

62     public MBeanLinkNode(Node parent, ObjectName JavaDoc objectName) {
63         super(parent);
64         setObjectName(objectName);
65         getConfigDescriptor().setIconName(Node.ICON_MBEAN);
66         String JavaDoc name = getObjectName().getCanonicalName();
67         name = name.substring(name.indexOf(':') + 1);
68         getConfigDescriptor().setName(name);
69         getConfigDescriptor().setDescription("MBean " + getObjectName().toString());
70     }
71
72     public void setObjectName(ObjectName JavaDoc objectName) {
73         this.objectName = objectName;
74         super.getConfigDescriptor().setName(objectName.toString());
75         super.getConfigDescriptor().setDescription("Symlink to " + objectName.toString());
76
77     }
78     
79     public MBeanServerNode getServer() {
80         return getWrapper().getServer();
81     }
82
83     public List JavaDoc getChildren() {
84         return Collections.EMPTY_LIST;
85     }
86
87     /**
88      * @return
89      */

90     public ObjectName JavaDoc getObjectName() {
91         return objectName;
92     }
93
94     /**
95      * @return the target component or a new instance of <code>BrokenLinkComponent</code>
96      * if the link is broken
97      */

98     public MBeanWrapper getWrapper() {
99         MBeanWrapper target;
100         MBeanServerNode serverContext =
101             (MBeanServerNode) getContext().get(MBeanServerNode.MBEANSERVERNODE_KEY);
102         try {
103             if (serverContext == null) {
104
105                 target =
106                     (MBeanWrapper) ServerRegistry
107                         .getInstance()
108                         .queryMBeans(objectName, null)
109                         .iterator()
110                         .next();
111         } else {
112             target = serverContext.getMBean(objectName);
113         }
114         return target;
115         } catch (Exception JavaDoc e) {
116             return null;
117         }
118     }
119
120     public Object JavaDoc getBean() {
121         MBeanWrapper target;
122         try {
123             target = getWrapper();
124             if (target instanceof MBeanWrapper) {
125                 return ((MBeanWrapper) target).getProxy();
126             }
127         } catch (Exception JavaDoc e) {
128             log.error("Unable to get bean.", e);
129         }
130         return null;
131     }
132
133     /*
134      * (non-Javadoc)
135      *
136      * @see net.sf.panoptes.model.node.NodeSupport#refresh()
137      */

138     public void refresh() {
139         attributesGroup = null;
140         operationsGroup = null;
141         notificationsGroup = null;
142         relationsGroup = null;
143
144     }
145
146     public String JavaDoc toString() {
147         return "Link to " + objectName.toString();
148     }
149
150 }
151
Popular Tags