KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > celtix > bus > management > jmx > export > runtime > ModelMBeanInfoSupporter


1 package org.objectweb.celtix.bus.management.jmx.export.runtime;
2
3 import java.lang.reflect.Constructor JavaDoc;
4
5 import java.util.HashMap JavaDoc;
6 import java.util.Map JavaDoc;
7
8
9 import javax.management.Descriptor JavaDoc;
10 import javax.management.MBeanOperationInfo JavaDoc;
11 import javax.management.MBeanParameterInfo JavaDoc;
12 import javax.management.modelmbean.DescriptorSupport JavaDoc;
13 import javax.management.modelmbean.ModelMBeanAttributeInfo JavaDoc;
14 import javax.management.modelmbean.ModelMBeanConstructorInfo JavaDoc;
15 import javax.management.modelmbean.ModelMBeanInfo JavaDoc;
16 import javax.management.modelmbean.ModelMBeanInfoSupport JavaDoc;
17 import javax.management.modelmbean.ModelMBeanNotificationInfo JavaDoc;
18 import javax.management.modelmbean.ModelMBeanOperationInfo JavaDoc;
19
20 import org.objectweb.celtix.bus.management.jmx.export.annotation.ManagedAttribute;
21 import org.objectweb.celtix.bus.management.jmx.export.annotation.ManagedOperation;
22 import org.objectweb.celtix.bus.management.jmx.export.annotation.ManagedResource;
23
24 public class ModelMBeanInfoSupporter {
25     protected Map JavaDoc<String JavaDoc, ModelMBeanAttributeInfo JavaDoc> attributes
26         = new HashMap JavaDoc<String JavaDoc, ModelMBeanAttributeInfo JavaDoc>();
27     protected Map JavaDoc<String JavaDoc, ModelMBeanNotificationInfo JavaDoc> notifications
28         = new HashMap JavaDoc<String JavaDoc, ModelMBeanNotificationInfo JavaDoc>();
29     protected Map JavaDoc<Constructor JavaDoc, ModelMBeanConstructorInfo JavaDoc> constructors
30         = new HashMap JavaDoc<Constructor JavaDoc, ModelMBeanConstructorInfo JavaDoc>();
31     protected Map JavaDoc<String JavaDoc, ModelMBeanOperationInfo JavaDoc> operations
32         = new HashMap JavaDoc<String JavaDoc, ModelMBeanOperationInfo JavaDoc>();
33     
34     public ModelMBeanInfoSupporter() {
35         
36     }
37     
38     public void clear() {
39         attributes.clear();
40         notifications.clear();
41         constructors.clear();
42         operations.clear();
43     }
44     public void addModelMBeanMethod(String JavaDoc name,
45                                     String JavaDoc[] paramTypes,
46                                     String JavaDoc[] paramNames,
47                                     String JavaDoc[] paramDescs,
48                                     String JavaDoc description,
49                                     String JavaDoc rtype,
50                                     Descriptor JavaDoc desc) {
51         MBeanParameterInfo JavaDoc[] params = null;
52         if (paramTypes != null) {
53             params = new MBeanParameterInfo JavaDoc[ paramTypes.length ];
54             for (int i = 0; i < paramTypes.length; i++) {
55                 params[i] = new MBeanParameterInfo JavaDoc(paramNames[i],
56                                                     paramTypes[i], paramDescs[i]);
57             }
58         }
59     
60         operations.put(name,
61                         new ModelMBeanOperationInfo JavaDoc(name,
62                                                     description,
63                                                     params,
64                                                     rtype,
65                                                     MBeanOperationInfo.ACTION,
66                                                     desc));
67     }
68     
69     public void addModelMBeanNotification(String JavaDoc[] type,
70                                           String JavaDoc className,
71                                           String JavaDoc description,
72                                           Descriptor JavaDoc desc) {
73         notifications.put(className,
74                            new ModelMBeanNotificationInfo JavaDoc(type, className, description, desc));
75     }
76     
77     public boolean checkAttribute(String JavaDoc attributeName) {
78         return attributes.containsKey(attributeName);
79     }
80     
81     public void addModelMBeanAttribute(String JavaDoc fname,
82                                        String JavaDoc ftype,
83                                        boolean read,
84                                        boolean write,
85                                        boolean is,
86                                        String JavaDoc description,
87                                        Descriptor JavaDoc desc) {
88         attributes.put(fname, new ModelMBeanAttributeInfo JavaDoc(fname,
89                                                            ftype,
90                                                            description,
91                                                            read,
92                                                            write,
93                                                            is,
94                                                            desc));
95     }
96       
97     
98     public void addModelMBeanConstructor(Constructor JavaDoc c,
99                                           String JavaDoc description,
100                                           Descriptor JavaDoc desc) {
101         this.constructors.put(c,
102                                new ModelMBeanConstructorInfo JavaDoc(description,
103                                                              c,
104                                                              desc));
105     }
106     
107     public ModelMBeanInfo JavaDoc buildModelMBeanInfo(Descriptor JavaDoc desc) {
108         
109         ModelMBeanOperationInfo JavaDoc[] ops =
110             (ModelMBeanOperationInfo JavaDoc[])operations.values().toArray(new ModelMBeanOperationInfo JavaDoc[0]);
111         
112         ModelMBeanAttributeInfo JavaDoc[] atts =
113             (ModelMBeanAttributeInfo JavaDoc[])attributes.values().toArray(new ModelMBeanAttributeInfo JavaDoc[0]);
114         
115         ModelMBeanConstructorInfo JavaDoc[] cons =
116             (ModelMBeanConstructorInfo JavaDoc[])constructors.values().toArray(new ModelMBeanConstructorInfo JavaDoc[0]);
117         
118         ModelMBeanNotificationInfo JavaDoc[] notifs =
119             (ModelMBeanNotificationInfo JavaDoc[])notifications.values().toArray(new ModelMBeanNotificationInfo JavaDoc[0]);
120                 
121         return new ModelMBeanInfoSupport JavaDoc("javax.management.modelmbean.ModelMBeanInfo",
122                                          "description",
123                                          atts,
124                                          cons,
125                                          ops,
126                                          notifs, desc);
127     }
128     
129     
130     public Descriptor JavaDoc buildAttributeDescriptor(
131         ManagedAttribute ma, String JavaDoc attributeName, boolean is, boolean read, boolean write) {
132          
133         Descriptor JavaDoc desc = new DescriptorSupport JavaDoc();
134
135         desc.setField("name", attributeName);
136        
137         desc.setField("descriptorType", "attribute");
138         
139         if (read) {
140             if (is) {
141                 desc.setField("getMethod", "is" + attributeName);
142             } else {
143                 desc.setField("getMethod", "get" + attributeName);
144             }
145         }
146         
147         if (write) {
148             desc.setField("setMethod", "set" + attributeName);
149         }
150        
151        
152         if (ma.currencyTimeLimit() >= -1) {
153             desc.setField("currencyTimeLimit", ma.currencyTimeLimit());
154         }
155            
156         if (ma.persistPolicy().length() > 0) {
157             desc.setField("persistPolicy", ma.persistPolicy());
158         }
159            
160         if (ma.persistPeriod() >= -1) {
161             desc.setField("persistPeriod", ma.persistPeriod());
162         }
163            
164         if (ma.defaultValue() != null) {
165             desc.setField("default", ma.defaultValue());
166         }
167            
168         return desc;
169     }
170     
171     public Descriptor JavaDoc buildOperationDescriptor(ManagedOperation mo, String JavaDoc operationName) {
172         Descriptor JavaDoc desc = new DescriptorSupport JavaDoc();
173         
174         desc.setField("name", operationName);
175         
176         desc.setField("descriptorType", "operation");
177         
178         desc.setField("role", "operation");
179         
180         if (mo.description() != null) {
181             desc.setField("displayName", mo.description());
182         }
183                     
184         if (mo.currencyTimeLimit() >= -1) {
185             desc.setField("currencyTimeLimit", mo.currencyTimeLimit());
186         }
187         
188         return desc;
189     }
190     
191     public Descriptor JavaDoc buildAttributeOperationDescriptor(String JavaDoc operationName) {
192         
193         Descriptor JavaDoc desc = new DescriptorSupport JavaDoc();
194         
195         desc.setField("name", operationName);
196         
197         desc.setField("descriptorType", "operation");
198         
199         if (operationName.indexOf("set") == 0) {
200             desc.setField("role", "setter");
201         } else {
202             desc.setField("role", "getter");
203         }
204         
205         return desc;
206     }
207             
208     
209     public Descriptor JavaDoc buildMBeanDescriptor(ManagedResource mr) {
210         Descriptor JavaDoc desc = new DescriptorSupport JavaDoc();
211         
212         if (mr.componentName() != null) {
213             desc.setField("name", mr.componentName());
214         }
215         
216         desc.setField("descriptorType", "mbean");
217         
218         if (mr.description() != null) {
219             desc.setField("displayName", mr.description());
220         }
221         
222         if (mr.persistLocation() != null) {
223             desc.setField("persistLocation", mr.persistLocation());
224         }
225             
226         if (mr.persistName() != null) {
227             desc.setField("persistName", mr.persistName());
228         }
229         
230         if (mr.log()) {
231             desc.setField("log", "true");
232         } else {
233             desc.setField("log", "false");
234         }
235             
236         if (mr.persistPolicy() != null) {
237             desc.setField("persistPolicy", mr.persistPolicy());
238         }
239         
240         if (mr.persistPeriod() >= -1) {
241             desc.setField("persistPeriod", mr.persistPeriod());
242         }
243         
244         if (mr.logFile() != null) {
245             desc.setField("logFile", mr.logFile());
246         }
247         
248         if (mr.currencyTimeLimit() >= -1) {
249             desc.setField("currencyTimeLimit", mr.currencyTimeLimit());
250         }
251         
252         return desc;
253         
254     }
255                
256      
257 }
258
259
Popular Tags