diff --git a/src/main/java/net/engio/mbassy/common/ReflectionUtils.java b/src/main/java/net/engio/mbassy/common/ReflectionUtils.java index f7a66cc..709c5a2 100644 --- a/src/main/java/net/engio/mbassy/common/ReflectionUtils.java +++ b/src/main/java/net/engio/mbassy/common/ReflectionUtils.java @@ -62,6 +62,8 @@ public class ReflectionUtils { public static Collection getSuperclasses(Class from) { Collection superclasses = new LinkedList(); + // collectInterfaces needs to come first otherwise you call it on class "Object" + collectInterfaces(from, superclasses); while (!from.equals(Object.class) && !from.isInterface()) { superclasses.add(from.getSuperclass()); collectInterfaces(from, superclasses); diff --git a/src/test/java/net/engio/mbassy/InterfaceTest.java b/src/test/java/net/engio/mbassy/InterfaceTest.java new file mode 100644 index 0000000..2e691be --- /dev/null +++ b/src/test/java/net/engio/mbassy/InterfaceTest.java @@ -0,0 +1,36 @@ +package net.engio.mbassy; + +import net.engio.mbassy.bus.BusConfiguration; +import net.engio.mbassy.bus.MBassador; +import net.engio.mbassy.common.DeadMessage; +import net.engio.mbassy.listener.Handler; +import net.engio.mbassy.messages.ITestMessage; +import net.engio.mbassy.messages.TestMessage3; + +import org.junit.Assert; +import org.junit.Test; + +/** + * A test to make sure that Interface subscriptions are working correctly + * + * @author durron597 + */ +public class InterfaceTest { + @Test + public void testMBassador() { + MBassador bus = new MBassador(BusConfiguration.Default()); + bus.subscribe(this); + TestMessage3 myFoo = new TestMessage3(); + bus.publish(myFoo); + } + + @Handler + public void handleFoo(ITestMessage f) { + Assert.assertTrue(f instanceof TestMessage3); + } + + @Handler + public void handleDead(DeadMessage d) { + Assert.fail("This class should handle this message appropriately!"); + } +} diff --git a/src/test/java/net/engio/mbassy/messages/TestMessage3.java b/src/test/java/net/engio/mbassy/messages/TestMessage3.java new file mode 100644 index 0000000..5409beb --- /dev/null +++ b/src/test/java/net/engio/mbassy/messages/TestMessage3.java @@ -0,0 +1,10 @@ +package net.engio.mbassy.messages; + +/** + * A test message that uses an interface + * + * @author durron597 + */ +public class TestMessage3 implements ITestMessage { + +}