1 4 package org.oddjob.jmx.client; 5 6 import javax.management.MBeanServer ; 7 import javax.management.MBeanServerFactory ; 8 import javax.management.ObjectName ; 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 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 getAnotherReally() { 48 return new ComponentTransportable(new Address( 49 new ServerId("//whatever"), new Path("two"))); 50 } 51 } 52 53 public void testRoundTrip() throws Exception { 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 mbs = MBeanServerFactory.createMBeanServer(); 77 78 OddjobMBeanFactory factory = new OddjobMBeanFactory(mbs); 79 ObjectName on = factory.createMBeanFor(forlder, new ServerContext(sm)); 80 81 83 ComponentRegistry localCr = new ComponentRegistry(); 84 localCr.register("this", this); 85 Object folderProxy = ClientNode.createProxyFor(on, mbs, this, localCr, 86 new DummyNP()); 87 assertNotNull(folderProxy); 88 89 Object c1Proxy = localCr.objectForPath(new Path("this/one")); 90 assertNotNull(c1Proxy); 91 Object c2Proxy = localCr.objectForPath(new Path("this/two")); 92 assertNotNull(c2Proxy); 93 94 PropertyUtils.setProperty(c1Proxy, "another", c2Proxy); 95 96 Object result = PropertyUtils.getProperty(c1Proxy, "anotherReally"); 97 98 assertTrue(c2Proxy == result); 99 } 100 101 } 102 | Popular Tags |