View Javadoc

1   /*
2    * $Id: DefaultJavaComponentTestCase.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  
11  package org.mule.component;
12  
13  import org.mule.api.lifecycle.InitialisationException;
14  import org.mule.api.object.ObjectFactory;
15  import org.mule.api.service.Service;
16  import org.mule.lifecycle.LifecycleTrackerComponent;
17  import org.mule.model.seda.SedaService;
18  import org.mule.object.PrototypeObjectFactory;
19  import org.mule.tck.testmodels.fruit.Orange;
20  
21  public class DefaultJavaComponentTestCase extends AbstractComponentTestCase
22  {
23  
24      protected ObjectFactory createObjectFactory() throws InitialisationException
25      {
26          PrototypeObjectFactory objectFactory = new PrototypeObjectFactory(Orange.class);
27          objectFactory.initialise();
28          return objectFactory;
29      }
30  
31      public void testComponentCreation() throws Exception
32      {
33          ObjectFactory objectFactory = createObjectFactory();
34          DefaultJavaComponent component = new DefaultJavaComponent(objectFactory);
35  
36          assertNotNull(component.getObjectFactory());
37          assertEquals(objectFactory, component.getObjectFactory());
38          assertEquals(Orange.class, component.getObjectFactory().getObjectClass());
39          assertEquals(Orange.class, component.getObjectType());
40      }
41  
42      public void testLifecycle() throws Exception
43      {
44          DefaultJavaComponent component = new DefaultJavaComponent(createObjectFactory());
45          component.setFlowConstruct(getTestService());
46          component.setMuleContext(muleContext);
47          component.initialise();
48          component.start();
49  
50          assertNotSame(component.borrowComponentLifecycleAdaptor(),
51              component.borrowComponentLifecycleAdaptor());
52  
53          Object obj = component.getObjectFactory().getInstance(muleContext);
54          assertNotNull(obj);
55  
56          component.stop();
57          component.start();
58  
59          assertNotSame(
60              ((DefaultComponentLifecycleAdapter) component.borrowComponentLifecycleAdaptor()).componentObject,
61              ((DefaultComponentLifecycleAdapter) component.borrowComponentLifecycleAdaptor()).componentObject);
62  
63      }
64  
65      public void testComponentDisposal() throws Exception
66      {
67          DefaultJavaComponent component = new DefaultJavaComponent(
68              createObjectFactory());
69          
70          component.setFlowConstruct(getTestService());
71          component.setMuleContext(muleContext);
72          component.initialise();
73          component.start();
74  
75          DefaultComponentLifecycleAdapter lifecycleAdapter = (DefaultComponentLifecycleAdapter) 
76              component.borrowComponentLifecycleAdaptor();
77          component.returnComponentLifecycleAdaptor(lifecycleAdapter);
78          component.dispose();
79  
80          assertNull(lifecycleAdapter.componentObject);
81      }
82      
83      public void testServicePropogatedLifecycle() throws InitialisationException
84      {
85          Service service = new SedaService(muleContext);
86          service.setName("service");
87          service.setModel(muleContext.getRegistry().lookupSystemModel());
88          LifecycleTrackerComponent component = new LifecycleTrackerComponent();
89          service.setComponent(component);
90          
91          service.initialise();
92          
93          assertTrue(component.getTracker().contains("initialise"));
94      }
95  
96  }