KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > oddjob > jmx > client > TransportableComponentTest


1 /*
2  * (c) Rob Gordon 2005.
3  */

4 package org.oddjob.jmx.client;
5
6 import javax.management.MBeanServer JavaDoc;
7 import javax.management.MBeanServerFactory JavaDoc;
8 import javax.management.ObjectName JavaDoc;
9
10 import junit.framework.TestCase;
11
12 import org.apache.commons.beanutils.PropertyUtils;
13 import org.apache.log4j.Logger;
14 import org.oddjob.arooa.registry.Address;
15 import org.oddjob.arooa.registry.ComponentRegistry;
16 import org.oddjob.arooa.registry.Path;
17 import org.oddjob.arooa.registry.ServerId;
18 import org.oddjob.jmx.server.DynaBeanInfo;
19 import org.oddjob.jmx.server.InterfaceManagerFactory;
20 import org.oddjob.jmx.server.OddjobMBeanFactory;
21 import org.oddjob.jmx.server.ServerContext;
22 import org.oddjob.jmx.server.ServerModel;
23 import org.oddjob.jmx.server.StructuralInfo;
24 import org.oddjob.jobs.structural.FolderJob;
25 import org.oddjob.util.ThreadManager;
26
27 /**
28  *
29  */

30 public class TransportableComponentTest extends TestCase {
31     public static final Logger logger = Logger.getLogger(TransportableComponentTest.class);
32
33     
34     public void setUp() {
35         logger.debug("================== Running " + getName() + "================");
36         System.setProperty("mx4j.log.priority", "trace");
37     }
38             
39     public static class MyComponent {
40         MyComponent another;
41         public void setAnother(MyComponent another) {
42             this.another = another;
43         }
44         public MyComponent getAnother() {
45             return another;
46         }
47         public Object JavaDoc getAnotherReally() {
48             return new ComponentTransportable(new Address(
49                     new ServerId("//whatever"), new Path("two")));
50         }
51     }
52     
53     public void testRoundTrip() throws Exception JavaDoc {
54         ComponentRegistry remoteCr = new ComponentRegistry();
55
56         MyComponent c1 = new MyComponent();
57         MyComponent c2 = new MyComponent();
58         
59         FolderJob forlder = new FolderJob();
60         forlder.addComponent(c1);
61         forlder.addComponent(c2);
62         
63
64         remoteCr.register("one", c1);
65         remoteCr.register("two", c2);
66         
67         InterfaceManagerFactory imf = new InterfaceManagerFactory();
68         imf.addInterfaceInfo(new DynaBeanInfo());
69         imf.addInterfaceInfo(new StructuralInfo());
70         ServerModel sm = new ServerModel("//whatever",
71                 new ThreadManager(),
72                 imf);
73         sm.setComponentRegistry(remoteCr);
74         sm.setRoot(forlder);
75         
76         MBeanServer JavaDoc mbs = MBeanServerFactory.createMBeanServer();
77             
78         OddjobMBeanFactory factory = new OddjobMBeanFactory(mbs);
79         ObjectName JavaDoc on = factory.createMBeanFor(forlder, new ServerContext(sm));
80         
81         // client side.
82

83         ComponentRegistry localCr = new ComponentRegistry();
84         localCr.register("this", this);
85         Object JavaDoc folderProxy = ClientNode.createProxyFor(on, mbs, this, localCr,
86                 new DummyNP());
87         assertNotNull(folderProxy);
88         
89         Object JavaDoc c1Proxy = localCr.objectForPath(new Path("this/one"));
90         assertNotNull(c1Proxy);
91         Object JavaDoc c2Proxy = localCr.objectForPath(new Path("this/two"));
92         assertNotNull(c2Proxy);
93         
94         PropertyUtils.setProperty(c1Proxy, "another", c2Proxy);
95         
96         Object JavaDoc result = PropertyUtils.getProperty(c1Proxy, "anotherReally");
97         
98         assertTrue(c2Proxy == result);
99     }
100     
101 }
102
Popular Tags