1
2
3
4
5
6
7
8
9
10 package org.mule.module.guice;
11
12 import org.mule.api.transformer.Transformer;
13 import org.mule.api.transport.Connector;
14 import org.mule.tck.AbstractMuleTestCase;
15 import org.mule.tck.testmodels.fruit.RedApple;
16 import org.mule.tck.testmodels.mule.TestConnector;
17 import org.mule.transformer.types.DataTypeFactory;
18
19 import com.google.inject.AbstractModule;
20 import com.google.inject.Provides;
21 import com.google.inject.Singleton;
22 import com.google.inject.name.Named;
23 import com.google.inject.name.Names;
24
25 public class MuleObjectCreationTestCase extends AbstractMuleTestCase
26 {
27 @Override
28 protected void doSetUp() throws Exception
29 {
30 GuiceConfigurationBuilder cb = new GuiceConfigurationBuilder(new MuleObjectsModule());
31 cb.configure(muleContext);
32 }
33
34 public void testObjectCreation() throws Exception
35 {
36 TestConnector c = (TestConnector) muleContext.getRegistry().lookupConnector("testConnector");
37 assertNotNull(c);
38 assertEquals("testConnector", c.getName());
39 assertEquals("foo", c.getSomeProperty());
40
41 c = (TestConnector) muleContext.getRegistry().lookupConnector("testConnector2");
42 assertNotNull(c);
43 assertEquals("testConnector2", c.getName());
44 assertEquals("boundProperty", c.getSomeProperty());
45
46 OrangetoAppleTransformer t = (OrangetoAppleTransformer)muleContext.getRegistry().lookupTransformer("testTransformer");
47 assertNotNull(t);
48 assertEquals(DataTypeFactory.create(RedApple.class), t.getReturnDataType());
49
50 assertEquals(2, muleContext.getRegistry().getConnectors().size());
51 }
52
53 public void testObjectLifecycle() throws Exception
54 {
55 TestConnector c = (TestConnector) muleContext.getRegistry().lookupConnector("testConnector");
56 assertNotNull(c);
57 assertTrue(c.isInitialised());
58
59 TestConnector c2 = (TestConnector) muleContext.getRegistry().lookupConnector("testConnector2");
60 assertNotNull(c2);
61
62 assertTrue(c2.isInitialised());
63
64 assertFalse(c.isStarted());
65 assertFalse(c2.isStarted());
66
67 muleContext.start();
68
69 assertTrue(c.isStarted());
70 assertTrue(c2.isStarted());
71
72 muleContext.stop();
73
74 assertTrue(c.isStopped());
75 assertTrue(c2.isStopped());
76
77 muleContext.dispose();
78
79 assertTrue(c.isDisposed());
80 assertTrue(c2.isDisposed());
81 }
82
83 public class MuleObjectsModule extends AbstractModule
84 {
85 @Override
86 protected void configure()
87 {
88
89 bindConstant().annotatedWith(Names.named("connectorProperty")).to("boundProperty");
90 }
91
92
93
94
95
96
97
98
99
100
101
102 @Provides
103 @Named("testTransformer")
104 Transformer createNamedTransformer()
105 {
106 OrangetoAppleTransformer transformer = new OrangetoAppleTransformer();
107 transformer.setReturnDataType(DataTypeFactory.create(RedApple.class));
108 transformer.setMuleContext(muleContext);
109 return transformer;
110 }
111
112 @Provides
113 @Named("testConnector")
114 @Singleton
115 Connector createNamedConnector()
116 {
117 TestConnector connector = new TestConnector(muleContext);
118 connector.setSomeProperty("foo");
119 return connector;
120 }
121
122 @Provides
123 @Named("testConnector2")
124 @Singleton
125 Connector createNamedConnector2(@Named("connectorProperty") String property)
126 {
127 TestConnector connector = new TestConnector(muleContext);
128 connector.setSomeProperty(property);
129 return connector;
130 }
131 }
132 }