/** * Add a core ControlerListener to the Controler instance * */ @SuppressWarnings("unchecked") protected void addCoreControlerListener(final ControlerListener l) { for (Class type : ClassUtils.getAllTypes(l.getClass())) { if (type.isInterface() && ControlerListener.class.isAssignableFrom(type)) { this.coreListenerList.add(type, l); } } }
@SuppressWarnings("unchecked") public void removeQueueSimulationListener(final MobsimListener l) { for (Class interfaceClass : ClassUtils.getAllTypes(l.getClass())) { if (MobsimListener.class.isAssignableFrom(interfaceClass)) { this.listenerList.remove(interfaceClass, l); } } }
/** * Add a ControlerListener to the Controler instance * */ @SuppressWarnings("unchecked") public void addControlerListener(final ControlerListener l) { for (Class type : ClassUtils.getAllTypes(l.getClass())) { if (ControlerListener.class.isAssignableFrom(type)) { this.listenerList.add(type, l); } } }
@SuppressWarnings("unchecked") public void addQueueSimulationListener(final MobsimListener l) { log.info("calling addQueueSimulationListener"); for (Class interfaceClass : ClassUtils.getAllTypes(l.getClass())) { if (MobsimListener.class.isAssignableFrom(interfaceClass)) { this.listenerList.add(interfaceClass, l); log.info(" assigned class " + MobsimListener.class.getName() + " to interface " + interfaceClass.getName()); } } }
@Test public void testInterfaceNoInheritance() { Set<Class<?>> set = ClassUtils.getAllTypes(A.class); Assert.assertEquals(1, set.size()); Assert.assertTrue(set.contains(A.class)); }
@Test public void testInterfaceMultipleInheritance_MultipleLevel() { Set<Class<?>> set = ClassUtils.getAllTypes(C.class); Assert.assertEquals(3, set.size()); Assert.assertTrue(set.contains(A.class)); Assert.assertTrue(set.contains(B.class)); Assert.assertTrue(set.contains(C.class)); }
@Test public void testClassSingleInheritance() { Set<Class<?>> set = ClassUtils.getAllTypes(Y.class); Assert.assertEquals(3, set.size()); Assert.assertTrue(set.contains(Z.class)); Assert.assertTrue(set.contains(Y.class)); Assert.assertTrue(set.contains(Object.class)); }
@Test public void testInterfaceMultipleInheritance_SingleLevel() { Set<Class<?>> set = ClassUtils.getAllTypes(AB.class); Assert.assertEquals(3, set.size()); Assert.assertTrue(set.contains(A.class)); Assert.assertTrue(set.contains(B.class)); Assert.assertTrue(set.contains(AB.class)); }
@Test public void testClassNoInheritance() { Set<Class<?>> set = ClassUtils.getAllTypes(Z.class); Assert.assertEquals(2, set.size()); Assert.assertTrue(set.contains(Z.class)); Assert.assertTrue(set.contains(Object.class)); }
@Test public void testInterfaceSingleInheritance() { Set<Class<?>> set = ClassUtils.getAllTypes(B.class); Assert.assertEquals(2, set.size()); Assert.assertTrue(set.contains(A.class)); Assert.assertTrue(set.contains(B.class)); }
@Test public void testClassMultipleInheritance_MultipleLevel() { Set<Class<?>> set = ClassUtils.getAllTypes(X.class); Assert.assertEquals(4, set.size()); Assert.assertTrue(set.contains(Z.class)); Assert.assertTrue(set.contains(Y.class)); Assert.assertTrue(set.contains(X.class)); Assert.assertTrue(set.contains(Object.class)); }
@Test public void testSingleInterfaceImplementation() { Set<Class<?>> set = ClassUtils.getAllTypes(Aimpl.class); Assert.assertEquals(3, set.size()); Assert.assertTrue(set.contains(Aimpl.class)); Assert.assertTrue(set.contains(A.class)); Assert.assertTrue(set.contains(Object.class)); }
@Test public void testMultipleInterfaceImplementation() { Set<Class<?>> set = ClassUtils.getAllTypes(ABimpl.class); Assert.assertEquals(4, set.size()); Assert.assertTrue(set.contains(ABimpl.class)); Assert.assertTrue(set.contains(B.class)); Assert.assertTrue(set.contains(A.class)); Assert.assertTrue(set.contains(Object.class)); }
@Test public void testSingleInterfaceImplementation_MultipleLevel() { Set<Class<?>> set = ClassUtils.getAllTypes(Bimpl.class); Assert.assertEquals(4, set.size()); Assert.assertTrue(set.contains(Bimpl.class)); Assert.assertTrue(set.contains(B.class)); Assert.assertTrue(set.contains(A.class)); Assert.assertTrue(set.contains(Object.class)); }
@Test public void testComplexClass() { Set<Class<?>> set = ClassUtils.getAllTypes(Dimpl.class); Assert.assertEquals(5, set.size()); Assert.assertTrue(set.contains(Dimpl.class)); Assert.assertTrue(set.contains(Bimpl.class)); Assert.assertTrue(set.contains(B.class)); Assert.assertTrue(set.contains(A.class)); Assert.assertTrue(set.contains(Object.class)); set = ClassUtils.getAllTypes(BCDimpl.class); Assert.assertEquals(6, set.size()); Assert.assertTrue(set.contains(BCDimpl.class)); Assert.assertTrue(set.contains(Bimpl.class)); Assert.assertTrue(set.contains(C.class)); Assert.assertTrue(set.contains(B.class)); Assert.assertTrue(set.contains(A.class)); Assert.assertTrue(set.contains(Object.class)); }