Main Page | Packages | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | Related Pages

ChainedMBeanServerBuilder.java

00001 /**
00002  * C-JDBC: Clustered JDBC.
00003  * Copyright (C) 2002-2004 French National Institute For Research In Computer
00004  * Science And Control (INRIA).
00005  * Contact: c-jdbc@objectweb.org
00006  * 
00007  * This library is free software; you can redistribute it and/or modify it
00008  * under the terms of the GNU Lesser General Public License as published by the
00009  * Free Software Foundation; either version 2.1 of the License, or any later
00010  * version.
00011  * 
00012  * This library is distributed in the hope that it will be useful, but WITHOUT
00013  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
00014  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
00015  * for more details.
00016  * 
00017  * You should have received a copy of the GNU Lesser General Public License
00018  * along with this library; if not, write to the Free Software Foundation,
00019  * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
00020  *
00021  * Initial developer(s): Marc Wick.
00022  * Contributor(s): ______________________.
00023  */
00024 
00025 package org.objectweb.cjdbc.controller.jmx;
00026 
00027 import javax.management.MBeanServer;
00028 import javax.management.MBeanServerBuilder;
00029 import javax.management.MBeanServerDelegate;
00030 
00031 /**
00032  * Base class for chained MBeanServerBuilders. <br>
00033  * By default this class delegates all method calls to the nested
00034  * MBeanServerBuilder. <br>
00035  * See the MX4J documentation on how to use correctly this class. <br>
00036  * <br>
00037  * Example implementation:
00038  * 
00039  * <pre>
00040  * 
00041  *  
00042  *   
00043  *    public class LoggingBuilder extends ChainedMBeanServerBuilder
00044  *    {
00045  *       public LoggingBuilder()
00046  *       {
00047  *          super(new MBeanServerBuilder());
00048  *       }
00049  *   
00050  *       public MBeanServer newMBeanServer(String defaultDomain, MBeanServer outer, MBeanServerDelegate delegate)
00051  *       {
00052  *          LoggingMBeanServer external = new LoggingMBeanServer();
00053  *          MBeanServer nested = getBuilder().newMBeanServer(defaultDomain, outer == null ? external : outer, delegate);
00054  *          external.setMBeanServer(nested);
00055  *          return external;
00056  *       }
00057  *    }
00058  *   
00059  *    public class LoggingMBeanServer extends ChainedMBeanServer
00060  *    {
00061  *       protected void setMBeanServer(MBeanServer server)
00062  *       {
00063  *          super.setMBeanServer(server);
00064  *       }
00065  *   
00066  *       public Object getAttribute(ObjectName objectName, String attribute)
00067  *               throws MBeanException, AttributeNotFoundException, InstanceNotFoundException, ReflectionException
00068  *       {
00069  *          Object value = super.getAttribute(objectName, attribute);
00070  *          System.out.println(&quot;Value is: &quot; + value);
00071  *          return value;
00072  *       }
00073  *   
00074  *       ...
00075  *    }
00076  *    
00077  *   
00078  *  
00079  * </pre>
00080  * 
00081  * @author <a href="mailto:marc.wick@monte-bre.ch">Marc Wick </a>
00082  * @version 1.0
00083  */
00084 public class ChainedMBeanServerBuilder extends javax.management.MBeanServerBuilder
00085 {
00086   private final MBeanServerBuilder builder;
00087 
00088   /**
00089    * Creates a new chained MBeanServerBuilder
00090    * 
00091    * @param builder The MBeanServerBuilder this object delegates to.
00092    */
00093   public ChainedMBeanServerBuilder(MBeanServerBuilder builder)
00094   {
00095     if (builder == null)
00096       throw new IllegalArgumentException();
00097     this.builder = builder;
00098   }
00099 
00100   /**
00101    * Forwards the call to the chained builder.
00102    * 
00103    * @see MBeanServerBuilder#newMBeanServerDelegate
00104    */
00105   public MBeanServerDelegate newMBeanServerDelegate()
00106   {
00107     return getMBeanServerBuilder().newMBeanServerDelegate();
00108   }
00109 
00110   /**
00111    * Forwards the call to the chained builder.
00112    * 
00113    * @see MBeanServerBuilder#newMBeanServer(java.lang.String,
00114    *      javax.management.MBeanServer, javax.management.MBeanServerDelegate)
00115    */
00116   public MBeanServer newMBeanServer(String defaultDomain, MBeanServer outer,
00117       MBeanServerDelegate delegate)
00118   {
00119     return getMBeanServerBuilder().newMBeanServer(defaultDomain, outer,
00120         delegate);
00121   }
00122 
00123   /**
00124    * Returns the chained MBeanServerBuilder this object delegates to.
00125    */
00126   protected MBeanServerBuilder getMBeanServerBuilder()
00127   {
00128     return builder;
00129   }
00130 
00131 }

Generated on Mon Apr 11 22:01:29 2005 for C-JDBC by  doxygen 1.3.9.1