From 8f30ea6c53f9f9f998860248857705ac567a318f Mon Sep 17 00:00:00 2001 From: durron597 Date: Mon, 20 May 2013 18:08:34 -0500 Subject: [PATCH] 1. Fixed bug #31, added a test case 2. SyncBusTest didn't compile, I fixed the imports so that it did. --- .../engio/mbassy/common/ReflectionUtils.java | 3 +- .../java/net/engio/mbassy/InterfaceTest.java | 36 +++++++++++++++++++ .../java/net/engio/mbassy/SyncBusTest.java | 4 +-- .../engio/mbassy/messages/TestMessage3.java | 10 ++++++ 4 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 src/test/java/net/engio/mbassy/InterfaceTest.java create mode 100644 src/test/java/net/engio/mbassy/messages/TestMessage3.java diff --git a/src/main/java/net/engio/mbassy/common/ReflectionUtils.java b/src/main/java/net/engio/mbassy/common/ReflectionUtils.java index 2c41827..45766c9 100644 --- a/src/main/java/net/engio/mbassy/common/ReflectionUtils.java +++ b/src/main/java/net/engio/mbassy/common/ReflectionUtils.java @@ -62,11 +62,12 @@ 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()); from = from.getSuperclass(); } - collectInterfaces(from, superclasses); return 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/SyncBusTest.java b/src/test/java/net/engio/mbassy/SyncBusTest.java index 0147965..f99056d 100644 --- a/src/test/java/net/engio/mbassy/SyncBusTest.java +++ b/src/test/java/net/engio/mbassy/SyncBusTest.java @@ -4,8 +4,8 @@ import net.engio.mbassy.bus.*; import net.engio.mbassy.common.MessageBusTest; import net.engio.mbassy.common.TestUtil; import net.engio.mbassy.dispatch.HandlerInvocation; -import net.engio.mbassy.events.SubTestMessage; -import net.engio.mbassy.events.TestMessage; +import net.engio.mbassy.messages.SubTestMessage; +import net.engio.mbassy.messages.TestMessage; import net.engio.mbassy.listener.*; import net.engio.mbassy.listeners.*; import net.engio.mbassy.subscription.SubscriptionContext; 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 { + +}