blob: ce4de0238a5cb11779b4a76ff800a92ae085e69d [file] [log] [blame]
package de.ids_mannheim.korap.config;
import de.ids_mannheim.korap.exceptions.KustvaktException;
import de.ids_mannheim.korap.web.service.BootableBeanInterface;
import de.ids_mannheim.korap.web.service.CollectionLoader;
import de.ids_mannheim.korap.web.service.PolicyLoader;
import de.ids_mannheim.korap.web.service.UserLoader;
import org.junit.Ignore;
import org.junit.Test;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
/**
* @author hanl
* @date 12/02/2016
*/
public class LoaderTest extends BeanConfigTest {
@Test
@Ignore
public void testConfigOrder () {
System.out.println("done ...");
List s = new ArrayList<>();
s.add("new");
s.add("new2");
}
@Override
public void initMethod () throws KustvaktException {}
@Test
public void runBootInterfaces () {
Set<Class<? extends BootableBeanInterface>> set = new HashSet<>();
set.add(CollectionLoader.class);
set.add(PolicyLoader.class);
set.add(UserLoader.class);
List<BootableBeanInterface> list = new ArrayList<>(set.size());
for (Class cl : set) {
BootableBeanInterface iface;
try {
iface = (BootableBeanInterface) cl.newInstance();
list.add(iface);
}
catch (InstantiationException | IllegalAccessException e) {
// do nothing
}
}
assertEquals(set.size(), list.size());
List tracer = new ArrayList();
System.out.println("Found boot loading interfaces: " + list);
while (!set.isEmpty()) {
out_loop: for (BootableBeanInterface iface : new ArrayList<>(list)) {
try {
System.out.println("Running boot instructions from class "
+ iface.getClass().getSimpleName());
for (Class cl : iface.getDependencies()) {
if (set.contains(cl))
continue out_loop;
}
set.remove(iface.getClass());
list.remove(iface);
iface.load(helper().getContext());
tracer.add(iface.getClass());
}
catch (KustvaktException e) {
// don't do anything!
System.out.println("An error occurred in class "
+ iface.getClass().getSimpleName() + "!\n" + e);
throw new RuntimeException(
"Boot loading interface failed ...");
}
}
}
assertEquals(0, tracer.indexOf(UserLoader.class));
assertNotEquals(0, tracer.indexOf(CollectionLoader.class));
assertNotEquals(0, tracer.indexOf(PolicyLoader.class));
}
}