KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > continuent > sequoia > controller > jmx > ChainedMBeanServerBuilder


1 /**
2  * Sequoia: Database clustering technology.
3  * Copyright (C) 2002-2004 French National Institute For Research In Computer
4  * Science And Control (INRIA).
5  * Contact: sequoia@continuent.org
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  * Initial developer(s): Marc Wick.
20  * Contributor(s): ______________________.
21  */

22
23 package org.continuent.sequoia.controller.jmx;
24
25 import javax.management.MBeanServer JavaDoc;
26 import javax.management.MBeanServerBuilder JavaDoc;
27 import javax.management.MBeanServerDelegate JavaDoc;
28
29 /**
30  * Base class for chained MBeanServerBuilders. <br>
31  * By default this class delegates all method calls to the nested
32  * MBeanServerBuilder. <br>
33  * See the MX4J documentation on how to use correctly this class. <br>
34  * <br>
35  * Example implementation:
36  *
37  * <pre>
38  *
39  *
40  *
41  * public class LoggingBuilder extends ChainedMBeanServerBuilder
42  * {
43  * public LoggingBuilder()
44  * {
45  * super(new MBeanServerBuilder());
46  * }
47  *
48  * public MBeanServer newMBeanServer(String defaultDomain, MBeanServer outer, MBeanServerDelegate delegate)
49  * {
50  * LoggingMBeanServer external = new LoggingMBeanServer();
51  * MBeanServer nested = getBuilder().newMBeanServer(defaultDomain, outer == null ? external : outer, delegate);
52  * external.setMBeanServer(nested);
53  * return external;
54  * }
55  * }
56  *
57  * public class LoggingMBeanServer extends ChainedMBeanServer
58  * {
59  * protected void setMBeanServer(MBeanServer server)
60  * {
61  * super.setMBeanServer(server);
62  * }
63  *
64  * public Object getAttribute(ObjectName objectName, String attribute)
65  * throws MBeanException, AttributeNotFoundException, InstanceNotFoundException, ReflectionException
66  * {
67  * Object value = super.getAttribute(objectName, attribute);
68  * System.out.println(&quot;Value is: &quot; + value);
69  * return value;
70  * }
71  *
72  * ...
73  * }
74  *
75  *
76  *
77  * </pre>
78  *
79  * @author <a HREF="mailto:marc.wick@monte-bre.ch">Marc Wick </a>
80  * @version 1.0
81  */

82 public class ChainedMBeanServerBuilder extends javax.management.MBeanServerBuilder JavaDoc
83 {
84   private final MBeanServerBuilder builder;
85
86   /**
87    * Creates a new chained MBeanServerBuilder
88    *
89    * @param builder The MBeanServerBuilder this object delegates to.
90    */

91   public ChainedMBeanServerBuilder(MBeanServerBuilder builder)
92   {
93     if (builder == null)
94       throw new IllegalArgumentException JavaDoc();
95     this.builder = builder;
96   }
97
98   /**
99    * Forwards the call to the chained builder.
100    *
101    * @see MBeanServerBuilder#newMBeanServerDelegate
102    */

103   public MBeanServerDelegate JavaDoc newMBeanServerDelegate()
104   {
105     return getMBeanServerBuilder().newMBeanServerDelegate();
106   }
107
108   /**
109    * Forwards the call to the chained builder.
110    *
111    * @see MBeanServerBuilder#newMBeanServer(java.lang.String,
112    * javax.management.MBeanServer, javax.management.MBeanServerDelegate)
113    */

114   public MBeanServer JavaDoc newMBeanServer(String JavaDoc defaultDomain, MBeanServer JavaDoc outer,
115       MBeanServerDelegate JavaDoc delegate)
116   {
117     return getMBeanServerBuilder().newMBeanServer(defaultDomain, outer,
118         delegate);
119   }
120
121   /**
122    * Returns the chained MBeanServerBuilder this object delegates to.
123    */

124   protected MBeanServerBuilder getMBeanServerBuilder()
125   {
126     return builder;
127   }
128
129 }
130
Popular Tags