KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > test > javax > management > loading > ClassLoaderRepositoryTest


1 /*
2  * Copyright (C) The MX4J Contributors.
3  * All rights reserved.
4  *
5  * This software is distributed under the terms of the MX4J License version 1.0.
6  * See the terms of the MX4J License in the documentation provided with this software.
7  */

8
9 package test.javax.management.loading;
10
11 import java.lang.reflect.Method JavaDoc;
12 import javax.management.MBeanServer JavaDoc;
13 import javax.management.MBeanServerFactory JavaDoc;
14 import javax.management.ObjectName JavaDoc;
15 import javax.management.loading.ClassLoaderRepository JavaDoc;
16 import javax.management.loading.MLet JavaDoc;
17
18 import junit.framework.TestCase;
19
20 /**
21  * @version $Revision: 1.9 $
22  */

23 public class ClassLoaderRepositoryTest extends TestCase
24 {
25    public ClassLoaderRepositoryTest(String JavaDoc s)
26    {
27       super(s);
28    }
29
30    public void testSingleMBeanServer() throws Exception JavaDoc
31    {
32       MBeanServer JavaDoc server = MBeanServerFactory.newMBeanServer();
33       ClassLoaderRepository JavaDoc clr = server.getClassLoaderRepository();
34       Method JavaDoc method = clr.getClass().getDeclaredMethod("getSize", new Class JavaDoc[0]);
35       method.setAccessible(true);
36       Integer JavaDoc size = (Integer JavaDoc)method.invoke(clr, new Object JavaDoc[0]);
37       int initial = size.intValue();
38
39       ObjectName JavaDoc name1 = new ObjectName JavaDoc(":name=mlet1");
40       ObjectName JavaDoc name2 = new ObjectName JavaDoc(":name=mlet2");
41
42       MLet JavaDoc mlet1 = new MLet JavaDoc();
43       server.registerMBean(mlet1, name1);
44
45       // Check that the mlet was registered as classloader
46
size = (Integer JavaDoc)method.invoke(clr, new Object JavaDoc[0]);
47       if (size.intValue() != initial + 1) fail("ClassLoader not registered in ClassLoaderRepository");
48
49       // Add another classloader
50
MLet JavaDoc mlet2 = new MLet JavaDoc();
51       server.registerMBean(mlet2, name2);
52
53       size = (Integer JavaDoc)method.invoke(clr, new Object JavaDoc[0]);
54       if (size.intValue() != initial + 2) fail("ClassLoader not registered in ClassLoaderRepository");
55    }
56
57    public void testMultipleMBeanServer() throws Exception JavaDoc
58    {
59       MBeanServer JavaDoc server1 = MBeanServerFactory.newMBeanServer("domain1");
60       MBeanServer JavaDoc server2 = MBeanServerFactory.newMBeanServer("domain2");
61       ClassLoaderRepository JavaDoc clr1 = server1.getClassLoaderRepository();
62       ClassLoaderRepository JavaDoc clr2 = server2.getClassLoaderRepository();
63       Method JavaDoc method = clr1.getClass().getDeclaredMethod("getSize", new Class JavaDoc[0]);
64       method.setAccessible(true);
65       Integer JavaDoc size1 = (Integer JavaDoc)method.invoke(clr1, new Object JavaDoc[0]);
66       int initial1 = size1.intValue();
67       Integer JavaDoc size2 = (Integer JavaDoc)method.invoke(clr2, new Object JavaDoc[0]);
68       int initial2 = size2.intValue();
69
70       ObjectName JavaDoc name1 = new ObjectName JavaDoc(":name=mlet1");
71       ObjectName JavaDoc name2 = new ObjectName JavaDoc(":name=mlet2");
72
73       MLet JavaDoc mlet1 = new MLet JavaDoc();
74       server1.registerMBean(mlet1, name1);
75
76       MLet JavaDoc mlet2 = new MLet JavaDoc();
77       server2.registerMBean(mlet2, name2);
78
79       // Check that the mlet was registered as classloader
80
size1 = (Integer JavaDoc)method.invoke(clr1, new Object JavaDoc[0]);
81       if (size1.intValue() != initial1 + 1) fail("ClassLoader not registered in ClassLoaderRepository");
82
83       size2 = (Integer JavaDoc)method.invoke(clr2, new Object JavaDoc[0]);
84       if (size2.intValue() != initial2 + 1) fail("ClassLoader not registered in ClassLoaderRepository");
85    }
86
87    public void testMultipleRegistrationOfSameClassLoader() throws Exception JavaDoc
88    {
89       MBeanServer JavaDoc server = MBeanServerFactory.newMBeanServer();
90       ClassLoaderRepository JavaDoc clr = server.getClassLoaderRepository();
91       Method JavaDoc method = clr.getClass().getDeclaredMethod("getSize", new Class JavaDoc[0]);
92       method.setAccessible(true);
93       Integer JavaDoc size = (Integer JavaDoc)method.invoke(clr, new Object JavaDoc[0]);
94       int initial = size.intValue();
95
96       ObjectName JavaDoc name1 = new ObjectName JavaDoc(":name=mlet1");
97       ObjectName JavaDoc name2 = new ObjectName JavaDoc(":name=mlet2");
98
99       MLet JavaDoc mlet1 = new MLet JavaDoc();
100       server.registerMBean(mlet1, name1);
101       server.registerMBean(mlet1, name2);
102
103       // Check that the mlet was registered only once
104
size = (Integer JavaDoc)method.invoke(clr, new Object JavaDoc[0]);
105       if (size.intValue() != initial + 1) fail("Same ClassLoader was registered more than once");
106    }
107 }
108
Popular Tags