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