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