Added tests for service-locator pattern
Fix NPE when requested service is unknown
This commit is contained in:
parent
fcfdbe71f5
commit
a375b2d28b
@ -32,7 +32,9 @@ public class ServiceLocator {
|
|||||||
*/
|
*/
|
||||||
InitContext ctx = new InitContext();
|
InitContext ctx = new InitContext();
|
||||||
serviceObj = (Service) ctx.lookup(serviceJndiName);
|
serviceObj = (Service) ctx.lookup(serviceJndiName);
|
||||||
|
if (serviceObj != null) { // Only cache a service if it actually exists
|
||||||
serviceCache.addService(serviceObj);
|
serviceCache.addService(serviceObj);
|
||||||
|
}
|
||||||
return serviceObj;
|
return serviceObj;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,42 @@
|
|||||||
|
package com.iluwatar.servicelocator;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Date: 12/29/15 - 19:07 PM
|
||||||
|
*
|
||||||
|
* @author Jeroen Meulemeester
|
||||||
|
*/
|
||||||
|
public class ServiceLocatorTest {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Verify if we just receive 'null' when requesting a non-existing service
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testGetNonExistentService() {
|
||||||
|
assertNull(ServiceLocator.getService("fantastic/unicorn/service"));
|
||||||
|
assertNull(ServiceLocator.getService("another/fantastic/unicorn/service"));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Verify if we get the same cached instance when requesting the same service twice
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testServiceCache() {
|
||||||
|
final String[] serviceNames = new String[]{
|
||||||
|
"jndi/serviceA", "jndi/serviceB"
|
||||||
|
};
|
||||||
|
|
||||||
|
for (final String serviceName : serviceNames) {
|
||||||
|
final Service service = ServiceLocator.getService(serviceName);
|
||||||
|
assertNotNull(service);
|
||||||
|
assertEquals(serviceName, service.getName());
|
||||||
|
assertTrue(service.getId() > 0); // The id is generated randomly, but the minimum value is '1'
|
||||||
|
assertSame(service, ServiceLocator.getService(serviceName));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user