KickJava   Java API By Example, From Geeks To Geeks.

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


1 package net.sf.panoptes.component.jmx.model;
2
3 import java.io.IOException JavaDoc;
4 import java.lang.reflect.UndeclaredThrowableException JavaDoc;
5 import java.rmi.ConnectException JavaDoc;
6 import java.rmi.UnmarshalException JavaDoc;
7 import java.util.ArrayList JavaDoc;
8 import java.util.Iterator JavaDoc;
9 import java.util.List JavaDoc;
10 import java.util.Map JavaDoc;
11
12 import javax.management.AttributeNotFoundException JavaDoc;
13 import javax.management.InstanceNotFoundException JavaDoc;
14 import javax.management.IntrospectionException JavaDoc;
15 import javax.management.InvalidAttributeValueException JavaDoc;
16 import javax.management.MBeanAttributeInfo JavaDoc;
17 import javax.management.MBeanException JavaDoc;
18 import javax.management.MBeanInfo JavaDoc;
19 import javax.management.MBeanNotificationInfo JavaDoc;
20 import javax.management.MBeanOperationInfo JavaDoc;
21 import javax.management.ObjectName JavaDoc;
22 import javax.management.ReflectionException JavaDoc;
23 import javax.management.relation.Relation JavaDoc;
24
25 import org.apache.commons.logging.Log;
26 import org.apache.commons.logging.LogFactory;
27
28 import net.sf.panoptes.model.node.GroupNode;
29 import net.sf.panoptes.model.node.Leaf;
30 import net.sf.panoptes.model.node.Node;
31 import net.sf.panoptes.model.node.NodeDescriptor;
32 import net.sf.panoptes.model.node.NodeSupport;
33
34 /**
35
36  * MBeanComponent.java
37  *
38  * Wraps an MBean and implements helper methods. Original code by Stefan Groschupf(sg@media-style.com).
39  *
40  * @author Dag Liodden
41  * @version 0.1
42  *
43  */

44
45 public class MBeanWrapper {
46     private static Log log = LogFactory.getLog(MBeanWrapper.class);
47     private MBeanServerNode server;
48     private DomainNode domain;
49
50     private ObjectName JavaDoc objectName;
51     private MBeanInfo JavaDoc mBeanInfo;
52     private Object JavaDoc proxy = null;
53
54
55
56     /**
57      * Constructor for MBeanComponent.
58      */

59     public MBeanWrapper(MBeanServerNode server, ObjectName JavaDoc objectName)
60         throws InstanceNotFoundException JavaDoc, IntrospectionException JavaDoc, ReflectionException JavaDoc, IOException JavaDoc {
61         this.objectName = objectName;
62         this.server = server;
63
64         mBeanInfo = server.getServerConnection().getMBeanInfo(objectName);
65         String JavaDoc name = getObjectName().getCanonicalName();
66         name = name.substring(name.indexOf(':') + 1);
67     }
68
69     /**
70      * Sets the <code>ObjectName</code> of the MBean this component wraps..
71      * @param name
72      */

73     protected void setObjectName(ObjectName JavaDoc name) {
74         this.objectName = name;
75     }
76
77     public void setMBeanServerComponent(MBeanServerNode server) {
78         this.server = server;
79     }
80
81     /**
82      * Method getAttributes.
83      * @return Attribute[]
84      */

85     public MBeanAttributeInfo JavaDoc[] getAttributes() {
86         return mBeanInfo.getAttributes();
87     }
88
89     public MBeanNotificationInfo JavaDoc[] getNotifications() {
90         return mBeanInfo.getNotifications();
91     }
92
93     /**
94      * Method getOperations.
95      */

96     public MBeanOperationInfo JavaDoc[] getOperations() {
97         return mBeanInfo.getOperations();
98     }
99     
100     /**
101      * Method setMBeanInfo.
102      * @param info
103      */

104     public void setMBeanInfo(MBeanInfo JavaDoc info) {
105         this.mBeanInfo = info;
106     }
107
108     public MBeanInfo JavaDoc getMBeanInfo() {
109         return this.mBeanInfo;
110     }
111
112     public MBeanServerNode getServer() {
113         return server;
114     }
115
116     public Object JavaDoc getProxy() throws Exception JavaDoc {
117         if (proxy == null)
118             proxy =
119                 MBeanProxyFactory.getInstance().createProxy(
120                     this.getObjectName(),
121                     this.getServer().getServerConnection());
122         return proxy;
123     }
124
125     /**
126      * Method refresh.
127      */

128     public void refresh() {
129         //refreshOperations();
130
//refreshAttributes();
131
}
132
133     public ObjectName JavaDoc getObjectName() {
134         return this.objectName;
135
136     }
137     public String JavaDoc toString() {
138         return this.objectName.toString();
139     }
140
141     // property stuff.
142

143     /**
144      * Method getAttrbute.
145      * @param string
146      * @return String
147      */

148     public Object JavaDoc getAttributeValue(String JavaDoc attributeName) {
149         Object JavaDoc value = "unable to get attribute '" + attributeName + "'";
150         try {
151             ObjectName JavaDoc objectName = getObjectName();
152             value = server.getServerConnection().getAttribute(objectName, attributeName);
153         } catch (UndeclaredThrowableException JavaDoc e) {
154             // Proxied MBeanServerConnections (like MX4J) will throw this kind of exception
155
if (e.getCause().getCause() instanceof UnmarshalException JavaDoc)
156                 value = "unknown attribute class";
157         } catch (MBeanException JavaDoc e) {
158             // Non-proxied MBeanServerConnections (like JBoss) will throw a direct UnmarshalException
159
if (e.getCause() instanceof UnmarshalException JavaDoc)
160                 value = "unknown or not serializable attribute class";
161         } catch (AttributeNotFoundException JavaDoc e) {
162             value = "attribute does not exist";
163         } catch (NoClassDefFoundError JavaDoc e) {
164             value = "unknown attribute class";
165         } catch (ConnectException JavaDoc ce) {
166             log.warn("Server disconnected");
167             try {
168                 server.disconnect();
169             } catch (Exception JavaDoc e1) {
170             }
171         } catch (Exception JavaDoc e) {
172             log.warn("Unable to get attribute '" + attributeName + "'", e);
173         }
174         return value;
175     }
176
177     public void setAttrbuteValue(String JavaDoc attributeName, Object JavaDoc value) {
178         javax.management.Attribute JavaDoc attribute = new javax.management.Attribute JavaDoc(attributeName, value);
179         try {
180             server.getServerConnection().setAttribute(getObjectName(), attribute);
181         } catch (InstanceNotFoundException JavaDoc e) {
182             System.err.println("InstanceNotFoundException " + e);
183         } catch (AttributeNotFoundException JavaDoc e) {
184             System.err.println("AttributeNotFoundException " + e);
185         } catch (InvalidAttributeValueException JavaDoc e) {
186             System.err.println("InvalidAttributeValueException " + e);
187         } catch (MBeanException JavaDoc e) {
188             System.err.println("MBeanException" + e);
189         } catch (Exception JavaDoc e) {
190             log.error("Unable to set attribute " + attributeName + "'", e);
191         }
192
193     }
194
195
196 }
197
Popular Tags