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