View Javadoc

1   /*
2    * $Id: MuleObjectCreationTestCase.java 19191 2010-08-25 21:05:23Z tcarlson $
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.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          //AbstractMuleTestCase does not start the muleContext, just initialises it
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              //lets test injection of properties into providers
89              bindConstant().annotatedWith(Names.named("connectorProperty")).to("boundProperty");
90          }
91  
92  
93          //TODO Annotated Service
94  //        @Provides @AnnotatedService
95  //        TestAnnotatedService createSerivce()
96  //        {
97  //            OrangetoAppleTransformer transformer = new OrangetoAppleTransformer();
98  //            transformer.setReturnDataType(new DataTypeFactory().create(RedApple.class));
99  //            return transformer;
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 }