KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jboss > portal > test > portal > kernel > RegistrationTestCase


1 /*****************************************
2  * *
3  * JBoss Portal: The OpenSource Portal *
4  * *
5  * Distributable under LGPL license. *
6  * See terms of license at gnu.org. *
7  * *
8  *****************************************/

9 package org.jboss.portal.test.portal.kernel;
10
11 import org.jboss.portal.server.kernel.BaseService;
12 import org.jboss.portal.server.kernel.Context;
13 import org.jboss.portal.server.kernel.KernelException;
14 import org.jboss.portal.server.kernel.ServiceAlreadyRegisteredException;
15 import org.jboss.portal.server.kernel.ServiceID;
16 import org.jboss.portal.server.kernel.ServiceImplementation;
17 import org.jboss.portal.server.kernel.ServiceRegistrationException;
18 import org.jboss.portal.server.kernel.ServiceUnregistrationException;
19 import org.jboss.portal.server.kernel.UnknownServiceException;
20 import org.jboss.portal.server.kernel.state.State;
21
22 /**
23  * @author <a HREF="mailto:julien@jboss.org">Julien Viet</a>
24  * @version $Revision: 1.2 $
25  */

26 public class RegistrationTestCase extends KernelTestCase
27 {
28    public RegistrationTestCase(String JavaDoc s)
29    {
30       super(s);
31    }
32
33    public void testRegistration() throws KernelException
34    {
35       final boolean[] registerCalled = new boolean[]{false};
36       BaseService service = new BaseService()
37       {
38          public void registered(Context ctx)
39          {
40             registerCalled[0] = true;
41          }
42       };
43       kernel.register(FOO_ID, service);
44       assertTrue(registerCalled[0]);
45       assertEquals(kernel.getState(FOO_ID), State.REGISTERED);
46    }
47
48    public void testDuplicateRegistration() throws KernelException
49    {
50       kernel.register(FOO_ID, new BaseService());
51       try
52       {
53          kernel.register(FOO_ID, new BaseService());
54          fail("A service has been addIDependOn twice");
55       }
56       catch (ServiceAlreadyRegisteredException expecteed)
57       {
58       }
59    }
60
61    public void testRegistrationThrowingExceptionFails() throws KernelException
62    {
63       BaseService service = new BaseService()
64       {
65          public void registered(Context ctx)
66          {
67             throw new RuntimeException JavaDoc();
68          }
69       };
70       try
71       {
72          kernel.register(FOO_ID, service);
73          fail("Expected a registration exception");
74       }
75       catch (ServiceRegistrationException expected)
76       {
77          assertNull(kernel.getState(FOO_ID));
78       }
79    }
80
81    public void testRegistrationCreateMissingReferences() throws KernelException
82    {
83       kernel.register(BAR_ID, new BaseService(), new ServiceID[]{FOO_ID});
84       assertEquals(kernel.getState(FOO_ID), State.UNREGISTERED);
85    }
86
87    public void testUnregistration() throws KernelException
88    {
89       final boolean[] unregisterCalled = new boolean[]{false};
90       BaseService service = new BaseService()
91       {
92          public void unregister()
93          {
94             unregisterCalled[0] = true;
95          }
96       };
97       kernel.register(FOO_ID, service);
98       kernel.unregister(FOO_ID);
99       assertTrue(unregisterCalled[0]);
100    }
101
102    public void testUnregistrationKeepReference() throws KernelException
103    {
104       kernel.register(FOO_ID, new BaseService());
105       kernel.register(BAR_ID, new BaseService(), new ServiceID[]{FOO_ID,new ServiceIDImpl("foo2")});
106       kernel.unregister(FOO_ID);
107       assertEquals(kernel.getState(FOO_ID), State.UNREGISTERED);
108    }
109
110    public void testUnregistrationRemoveReference() throws KernelException
111    {
112       kernel.register(FOO_ID, new BaseService());
113       kernel.unregister(FOO_ID);
114       assertNull(kernel.getState(FOO_ID));
115    }
116
117    public void testUnregisterThrowingAnException() throws KernelException
118    {
119       BaseService service = new BaseService()
120       {
121          public void unregister()
122          {
123             throw new RuntimeException JavaDoc();
124          }
125       };
126       kernel.register(FOO_ID, service);
127       try
128       {
129          kernel.unregister(FOO_ID);
130          fail("Unregistration exception was expected");
131       }
132       catch (ServiceUnregistrationException expected)
133       {
134          assertNull(kernel.getState(FOO_ID));
135       }
136    }
137
138    public void testUnregisterOnUnknownService() throws KernelException
139    {
140       try
141       {
142          kernel.unregister(FOO_ID);
143          fail("Unknown service exception was expected");
144       }
145       catch (UnknownServiceException expected)
146       {
147       }
148    }
149
150    /**
151     * Test that FOO in UNREGISTERED state is removed when BAR which depends on it is removed
152     */

153    public void testClearUnusedReferences1() throws KernelException
154    {
155       kernel.register(FOO_ID, new BaseService());
156       kernel.register(BAR_ID, new BaseService(), new ServiceID[]{FOO_ID});
157       kernel.unregister(FOO_ID);
158       kernel.unregister(BAR_ID);
159       assertNull(kernel.getState(FOO_ID));
160    }
161
162    /**
163     * Test that FOO not in UNREGISTERED state is not removed when BAR which depends on it is removed
164     */

165    public void testClearUnusedReferences2() throws KernelException
166    {
167       kernel.register(FOO_ID, new BaseService());
168       kernel.register(BAR_ID, new BaseService(), new ServiceID[]{FOO_ID});
169       kernel.destroy(FOO_ID);
170       kernel.unregister(BAR_ID);
171       assertNotNull(kernel.getState(FOO_ID));
172    }
173
174
175    public void testRegisteringFailsDoesNotCreateDependency() throws KernelException
176    {
177       final boolean[] addDependsOnMeCalled = new boolean[]{false};
178       BaseService service = new BaseService()
179       {
180          public void addDependsOnMe(ServiceImplementation implementation)
181          {
182             addDependsOnMeCalled[0] = true;
183          }
184       };
185       kernel.register(FOO_ID, service);
186       BaseService service2 = new BaseService()
187       {
188          public void registered(Context ctx)
189          {
190             throw new RuntimeException JavaDoc();
191          }
192       };
193       try
194       {
195          kernel.register(BAR_ID, service2, new ServiceID[]{FOO_ID});
196       }
197       catch (ServiceRegistrationException expected)
198       {
199       }
200       assertFalse(addDependsOnMeCalled[0]);
201    }
202 }
203
Popular Tags