View Javadoc

1   /*
2    * $Id: MuleObjectCreationTestCase.java 22377 2011-07-11 12:41:42Z dirk.olmes $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
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          //AbstractMuleTestCase does not start the muleContext, just initialises it
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              //lets test injection of properties into providers
98              bindConstant().annotatedWith(Names.named("connectorProperty")).to("boundProperty");
99          }
100 
101 
102         //TODO Annotated Service
103 //        @Provides @AnnotatedService
104 //        TestAnnotatedService createSerivce()
105 //        {
106 //            OrangetoAppleTransformer transformer = new OrangetoAppleTransformer();
107 //            transformer.setReturnDataType(new DataTypeFactory().create(RedApple.class));
108 //            return transformer;
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 }