1
2
3
4
5
6
7
8
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 }