test for handlers of interfaces
This commit is contained in:
parent
16f92eee06
commit
1e445adb04
@ -28,18 +28,18 @@ public class MessageListenerMetadata<T> {
|
||||
|
||||
private List<MessageHandlerMetadata> handlers = new ArrayList<MessageHandlerMetadata>();
|
||||
|
||||
private Class<T> listenerDefinition;
|
||||
private Class<T> listenerClass;
|
||||
|
||||
private Listener listenerAnnotation;
|
||||
|
||||
public MessageListenerMetadata(Class<T> listenerDefinition) {
|
||||
this.listenerDefinition = listenerDefinition;
|
||||
Listener listenerAnnotation = listenerDefinition.getAnnotation(Listener.class);
|
||||
public MessageListenerMetadata(Class<T> listenerClass) {
|
||||
this.listenerClass = listenerClass;
|
||||
this.listenerAnnotation = listenerClass.getAnnotation(Listener.class);
|
||||
}
|
||||
|
||||
|
||||
public boolean isFromListener(Object listener){
|
||||
return listenerDefinition.equals(listener.getClass());
|
||||
return listenerClass.equals(listener.getClass());
|
||||
}
|
||||
|
||||
public boolean useStrongReferences(){
|
||||
@ -74,6 +74,6 @@ public class MessageListenerMetadata<T> {
|
||||
}
|
||||
|
||||
public Class<T> getListerDefinition() {
|
||||
return listenerDefinition;
|
||||
return listenerClass;
|
||||
}
|
||||
}
|
||||
|
@ -1,36 +0,0 @@
|
||||
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<ITestMessage> bus = new MBassador<ITestMessage>(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!");
|
||||
}
|
||||
}
|
@ -6,6 +6,7 @@ import net.engio.mbassy.listener.Handler;
|
||||
import net.engio.mbassy.listener.MetadataReader;
|
||||
import net.engio.mbassy.messages.ITestMessage;
|
||||
import net.engio.mbassy.messages.TestMessage;
|
||||
import net.engio.mbassy.messages.TestMessage3;
|
||||
import net.engio.mbassy.subscription.Subscription;
|
||||
import net.engio.mbassy.subscription.SubscriptionFactory;
|
||||
import net.engio.mbassy.subscription.SubscriptionManager;
|
||||
@ -15,7 +16,6 @@ import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
/**
|
||||
* Todo: Add javadoc
|
||||
@ -54,9 +54,8 @@ public class SubscriptionManagerTest extends UnitTest{
|
||||
assertEquals(2, subscriptions.size());
|
||||
|
||||
for(Subscription sub : subscriptions){
|
||||
assertEquals(numberOfListeners, sub.size());
|
||||
assertEquals(numberOfListeners / 2, sub.size());
|
||||
for(Object listener : listeners){
|
||||
|
||||
if(sub.isFromListener(listener))assertTrue(sub.contains(listener));
|
||||
}
|
||||
}
|
||||
@ -64,7 +63,16 @@ public class SubscriptionManagerTest extends UnitTest{
|
||||
subscriptions = subMan.getSubscriptionsByMessageType(ITestMessage.class);
|
||||
assertEquals(2 , subscriptions.size());
|
||||
for(Subscription sub : subscriptions){
|
||||
assertEquals(numberOfListeners, sub.size());
|
||||
assertEquals(numberOfListeners / 2, sub.size());
|
||||
for(Object listener : listeners){
|
||||
if(sub.isFromListener(listener))assertTrue(sub.contains(listener));
|
||||
}
|
||||
}
|
||||
|
||||
subscriptions = subMan.getSubscriptionsByMessageType(TestMessage3.class);
|
||||
assertEquals(4 , subscriptions.size());
|
||||
for(Subscription sub : subscriptions){
|
||||
assertEquals(numberOfListeners / 2, sub.size());
|
||||
for(Object listener : listeners){
|
||||
if(sub.isFromListener(listener))assertTrue(sub.contains(listener));
|
||||
}
|
||||
@ -72,6 +80,9 @@ public class SubscriptionManagerTest extends UnitTest{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
static class SimpleSynchronousMessageHandler{
|
||||
|
||||
@Handler
|
||||
@ -81,6 +92,10 @@ public class SubscriptionManagerTest extends UnitTest{
|
||||
@Handler
|
||||
public void handle(ITestMessage message) {
|
||||
}
|
||||
|
||||
@Handler
|
||||
public void handle(TestMessage3 message) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -93,5 +108,9 @@ public class SubscriptionManagerTest extends UnitTest{
|
||||
@Handler
|
||||
public void handle(ITestMessage message) {
|
||||
}
|
||||
|
||||
@Handler
|
||||
public void handle(TestMessage3 message) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,14 +1,18 @@
|
||||
package net.engio.mbassy;
|
||||
|
||||
import net.engio.mbassy.bus.*;
|
||||
import net.engio.mbassy.common.DeadMessage;
|
||||
import net.engio.mbassy.common.MessageBusTest;
|
||||
import net.engio.mbassy.common.TestUtil;
|
||||
import net.engio.mbassy.dispatch.HandlerInvocation;
|
||||
import net.engio.mbassy.messages.ITestMessage;
|
||||
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.messages.TestMessage3;
|
||||
import net.engio.mbassy.subscription.SubscriptionContext;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.List;
|
||||
@ -61,7 +65,6 @@ public abstract class SyncBusTest extends MessageBusTest {
|
||||
|
||||
ISyncMessageBus bus = getSyncMessageBus();
|
||||
|
||||
|
||||
for(int i = 0; i< 10000; i++){
|
||||
bus.subscribe(new MessageListener2());
|
||||
}
|
||||
@ -84,6 +87,30 @@ public abstract class SyncBusTest extends MessageBusTest {
|
||||
protected abstract ISyncMessageBus getSyncMessageBus();
|
||||
|
||||
|
||||
|
||||
@Test
|
||||
public void testHandlerUsingInterface() {
|
||||
MBassador<ITestMessage> bus = new MBassador<ITestMessage>(BusConfiguration.Default());
|
||||
bus.subscribe(new InterfaceMessageListener());
|
||||
bus.publish(new TestMessage3());
|
||||
}
|
||||
|
||||
@Listener(references = References.Strong)
|
||||
static class InterfaceMessageListener{
|
||||
|
||||
@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!");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
public static class MessageListener1 {
|
||||
|
||||
// every event of type TestEvent or any subtype will be delivered
|
||||
|
Loading…
Reference in New Issue
Block a user