KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jboss > test > jmx > compliance > server > support > MBeanServerWrapper


1 /*
2 * JBoss, Home of Professional Open Source
3 * Copyright 2005, JBoss Inc., and individual contributors as indicated
4 * by the @authors tag. See the copyright.txt in the distribution for a
5 * full listing of individual contributors.
6 *
7 * This is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU Lesser General Public License as
9 * published by the Free Software Foundation; either version 2.1 of
10 * the License, or (at your option) any later version.
11 *
12 * This software is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this software; if not, write to the Free
19 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
21 */

22 package org.jboss.test.jmx.compliance.server.support;
23
24 import java.lang.reflect.InvocationHandler JavaDoc;
25 import java.lang.reflect.Method JavaDoc;
26 import java.lang.reflect.Proxy JavaDoc;
27
28 import javax.management.MBeanServer JavaDoc;
29
30 /**
31  * A wrapper for an MBeanServer
32  *
33  * @author <a HREF="mailto:Adrian.Brock@HappeningTimes.com">Adrian Brock</a>.
34  * @version $Revision: 37459 $
35  */

36 public class MBeanServerWrapper
37    implements InvocationHandler JavaDoc
38 {
39    public MBeanServer JavaDoc server;
40
41    public boolean invoked = false;
42
43    private static Method JavaDoc EQUALS;
44
45    static
46    {
47       try
48       {
49          EQUALS = Object JavaDoc.class.getClass().getMethod("equals", new Class JavaDoc[] { Object JavaDoc.class });
50       }
51       catch (Exception JavaDoc e)
52       {
53          throw new RuntimeException JavaDoc(e.toString());
54       }
55    }
56
57    public static MBeanServer JavaDoc getWrapper()
58    {
59       return (MBeanServer JavaDoc) Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(),
60                                                   new Class JavaDoc[] { MBeanServer JavaDoc.class },
61                                                   new MBeanServerWrapper());
62    }
63
64    public static MBeanServerWrapper getHandler(MBeanServer JavaDoc proxy)
65    {
66       return (MBeanServerWrapper) Proxy.getInvocationHandler(proxy);
67    }
68
69    public Object JavaDoc invoke(Object JavaDoc proxy, Method JavaDoc method, Object JavaDoc[] args)
70       throws Throwable JavaDoc
71    {
72       invoked = true;
73       if (method.equals(EQUALS))
74          return new Boolean JavaDoc(proxy == args[0]);
75       if (method.getName().equals("queryMBeans"))
76          throw new MBeanServerReplaced();
77       return method.invoke(server, args);
78    }
79 }
80
Popular Tags