package org.dcache.gplazma.loader;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.net.URL;
import java.util.Enumeration;
import static org.junit.Assert.*;
public class ResourceBlockingClassLoaderTests {
public static final String RESOURCE_PATH = "META-INF/somedata.xml";
Utf8DataClassLoader _resourceLoader;
ResourceBlockingClassLoader _blockingLoader;
@Before
public void setUp() {
_resourceLoader = new Utf8DataClassLoader(RESOURCE_PATH);
_resourceLoader.addResource( "<?xml version='1.0'?><data/>");
_blockingLoader = new ResourceBlockingClassLoader(_resourceLoader);
}
@Test
public void testDefaultNonBlocking() {
assertFalse(_blockingLoader.getIsBlocking());
assertCanGetData();
}
@Test
public void testSetBlocking() {
_blockingLoader.setIsBlocking( true);
assertTrue(_blockingLoader.getIsBlocking());
assertCannotGetData();
}
@Test
public void testSetBlockingThenNonblocking() {
_blockingLoader.setIsBlocking( true);
_blockingLoader.setIsBlocking( false);
assertFalse(_blockingLoader.getIsBlocking());
assertCanGetData();
}
/*
* SUPPORT METHODS
*/
private void assertCanGetData() {
URL url = _blockingLoader.getResource(RESOURCE_PATH);
assertNotNull("checking getResource on resource-path", url);
Enumeration<URL> e;
try {
e = _blockingLoader.getResources(RESOURCE_PATH);
} catch (IOException e1) {
fail("received IOException: " + e1.getMessage());
return;
}
assertTrue("checking getResources on resource-path", e.hasMoreElements());
}
private void assertCannotGetData() {
URL url = _blockingLoader.getResource(RESOURCE_PATH);
assertNull("checking getResource on resource-path", url);
Enumeration<URL> e;
try {
e = _blockingLoader.getResources(RESOURCE_PATH);
} catch (IOException e1) {
fail("received IOException: " + e1.getMessage());
return;
}
assertFalse("checking getResources on resource-path", e.hasMoreElements());
}
}