1
2
3
4
5
6
7
8
9
10
11 package org.mule.object;
12
13 import org.mule.api.lifecycle.InitialisationException;
14 import org.mule.tck.AbstractMuleTestCase;
15
16 public abstract class AbstractObjectFactoryTestCase extends AbstractMuleTestCase
17 {
18
19 public void testInitialisationFailureWithoutObjectClass() throws Exception
20 {
21 AbstractObjectFactory factory = getUninitialisedObjectFactory();
22
23 try
24 {
25 factory.initialise();
26 fail("expected InitialisationException");
27 }
28 catch (InitialisationException iex)
29 {
30
31 }
32 }
33
34 public void testInstanceFailureGetInstanceWithoutObjectClass() throws Exception
35 {
36 AbstractObjectFactory factory = getUninitialisedObjectFactory();
37
38 try
39 {
40 factory.getInstance(muleContext);
41 fail("expected InitialisationException");
42 }
43 catch (InitialisationException iex)
44 {
45
46 }
47 }
48
49 public void testCreateWithClassButDoNotInitialise() throws Exception
50 {
51 AbstractObjectFactory factory = new DummyObjectFactory(Object.class);
52 assertObjectClassAndName(factory);
53 }
54
55 public void testCreateWithClassNameButDoNotInitialise() throws Exception
56 {
57 AbstractObjectFactory factory = new DummyObjectFactory(Object.class.getName());
58 assertObjectClassAndName(factory);
59 }
60
61 public void testSetObjectClassNameButDoNotInitialise() throws Exception
62 {
63 AbstractObjectFactory factory = getUninitialisedObjectFactory();
64 factory.setObjectClassName(Object.class.getName());
65
66 assertObjectClassAndName(factory);
67 }
68
69 public void testSetObjectClassButDoNotInitialise() throws Exception
70 {
71 AbstractObjectFactory factory = getUninitialisedObjectFactory();
72 factory.setObjectClass(Object.class);
73
74 assertObjectClassAndName(factory);
75 }
76
77 private void assertObjectClassAndName(AbstractObjectFactory factory)
78 {
79 assertEquals(Object.class, factory.getObjectClass());
80 assertEquals(Object.class.getName(), factory.getObjectClassName());
81 }
82
83 public void testInitialiseWithClass() throws Exception
84 {
85 AbstractObjectFactory factory = getUninitialisedObjectFactory();
86 factory.setObjectClass(Object.class);
87
88 muleContext.getRegistry().applyProcessorsAndLifecycle(factory);
89
90 assertNotNull(factory.getInstance(muleContext));
91 }
92
93 public void testInitialiseWithClassName() throws Exception
94 {
95 AbstractObjectFactory factory = getUninitialisedObjectFactory();
96 factory.setObjectClassName(Object.class.getName());
97
98 muleContext.getRegistry().applyProcessorsAndLifecycle(factory);
99
100 assertNotNull(factory.getInstance(muleContext));
101 }
102
103 public void testDispose() throws Exception
104 {
105 AbstractObjectFactory factory = getUninitialisedObjectFactory();
106 factory.setObjectClass(Object.class);
107
108 muleContext.getRegistry().applyProcessorsAndLifecycle(factory);
109
110 factory.dispose();
111
112 try
113 {
114 factory.getInstance(muleContext);
115 fail("expected InitialisationException");
116 }
117 catch (InitialisationException iex)
118 {
119
120 }
121 }
122
123 public abstract AbstractObjectFactory getUninitialisedObjectFactory();
124
125 public abstract void testGetObjectClass() throws Exception;
126
127 public abstract void testGet() throws Exception;
128
129 private static class DummyObjectFactory extends AbstractObjectFactory
130 {
131 public DummyObjectFactory(String className)
132 {
133 super(className);
134 }
135
136 public DummyObjectFactory(Class<?> klass)
137 {
138 super(klass);
139 }
140
141 }
142 }