diff --git a/src/main/java/net/engio/mbassy/common/AbstractConcurrentSet.java b/src/main/java/net/engio/mbassy/common/AbstractConcurrentSet.java index b916a82..003f5da 100644 --- a/src/main/java/net/engio/mbassy/common/AbstractConcurrentSet.java +++ b/src/main/java/net/engio/mbassy/common/AbstractConcurrentSet.java @@ -28,18 +28,16 @@ public abstract class AbstractConcurrentSet implements IConcurrentSet { protected abstract Entry createEntry(T value, Entry next); @Override - public IConcurrentSet add(T element) { - if (element == null) return this; + public void add(T element) { + if (element == null) return; Lock writeLock = lock.writeLock(); writeLock.lock(); if (element == null || entries.containsKey(element)) { writeLock.unlock(); - return this; } else { insert(element); writeLock.unlock(); } - return this; } @Override @@ -69,7 +67,7 @@ public abstract class AbstractConcurrentSet implements IConcurrentSet { } @Override - public IConcurrentSet addAll(Iterable elements) { + public void addAll(Iterable elements) { Lock writeLock = lock.writeLock(); try { writeLock.lock(); @@ -81,7 +79,6 @@ public abstract class AbstractConcurrentSet implements IConcurrentSet { } finally { writeLock.unlock(); } - return this; } @Override diff --git a/src/main/java/net/engio/mbassy/common/IConcurrentSet.java b/src/main/java/net/engio/mbassy/common/IConcurrentSet.java index 432e4ed..8afd72a 100644 --- a/src/main/java/net/engio/mbassy/common/IConcurrentSet.java +++ b/src/main/java/net/engio/mbassy/common/IConcurrentSet.java @@ -8,13 +8,13 @@ package net.engio.mbassy.common; */ public interface IConcurrentSet extends Iterable { - IConcurrentSet add(T element); + void add(T element); boolean contains(T element); int size(); - IConcurrentSet addAll(Iterable elements); + void addAll(Iterable elements); boolean remove(T element); } diff --git a/src/main/java/net/engio/mbassy/listener/MessageHandler.java b/src/main/java/net/engio/mbassy/listener/MessageHandler.java index 2549e31..c0a9f7b 100644 --- a/src/main/java/net/engio/mbassy/listener/MessageHandler.java +++ b/src/main/java/net/engio/mbassy/listener/MessageHandler.java @@ -56,7 +56,7 @@ public class MessageHandler { Map properties = new HashMap(); properties.put(HandlerMethod, handler); // add EL filter if a condition is present - if(handlerConfig.condition() != null){ + if(handlerConfig.condition().length() > 0){ if (!ElFilter.isELAvailable()) { throw new IllegalStateException("A handler uses an EL filter but no EL implementation is available."); } diff --git a/src/test/java/net/engio/mbassy/AllTests.java b/src/test/java/net/engio/mbassy/AllTests.java index 0ab8b16..9df884a 100644 --- a/src/test/java/net/engio/mbassy/AllTests.java +++ b/src/test/java/net/engio/mbassy/AllTests.java @@ -22,7 +22,8 @@ import org.junit.runners.Suite; DeadMessageTest.class, SynchronizedHandlerTest.class, SubscriptionManagerTest.class, - AsyncFIFOBusTest.class + AsyncFIFOBusTest.class, + ConditionalHandlers.class }) public class AllTests { } diff --git a/src/test/java/net/engio/mbassy/ConditionTest.java b/src/test/java/net/engio/mbassy/ConditionalHandlers.java similarity index 95% rename from src/test/java/net/engio/mbassy/ConditionTest.java rename to src/test/java/net/engio/mbassy/ConditionalHandlers.java index 07993c8..9f32445 100644 --- a/src/test/java/net/engio/mbassy/ConditionTest.java +++ b/src/test/java/net/engio/mbassy/ConditionalHandlers.java @@ -1,168 +1,168 @@ -package net.engio.mbassy; - -import net.engio.mbassy.bus.MBassador; -import net.engio.mbassy.bus.config.BusConfiguration; -import net.engio.mbassy.common.MessageBusTest; -import net.engio.mbassy.listener.Enveloped; -import net.engio.mbassy.listener.Handler; -import net.engio.mbassy.listener.Listener; -import net.engio.mbassy.listener.References; -import net.engio.mbassy.subscription.MessageEnvelope; -import org.junit.Test; - -import java.util.HashSet; -import java.util.Set; - -/***************************************************************************** - * Some unit tests for the "condition" filter. - ****************************************************************************/ - -public class ConditionTest extends MessageBusTest { - - public static class TestEvent { - - private Set handledBy = new HashSet(); - private String type; - private int size; - - public TestEvent(String type, int size) { - super(); - this.type = type; - this.size = size; - } - - public String getType() { - return type; - } - - public int getSize() { - return size; - } - - public boolean wasHandledBy(String ...handlers){ - for(String handler : handlers){ - if (!handledBy.contains(handler)) return false; - } - return true; - } - - public void handledBy(String handler){ - handledBy.add(handler); - } - - } - - @Listener(references = References.Strong) - public static class ConditionalMessageListener { - - @Handler(condition = "msg.type == 'TEST'") - public void handleTypeMessage(TestEvent message) { - message.handledBy("handleTypeMessage"); - } - - @Handler(condition = "msg.size > 4") - public void handleSizeMessage(TestEvent message) { - message.handledBy("handleSizeMessage"); - } - - @Handler(condition = "msg.foo > 4") - public void handleInvalidEL(TestEvent message) { - message.handledBy("handleInvalidEL"); - } - - @Handler(condition = "msg.size > 2 && msg.size < 4") - public void handleCombinedEL(TestEvent message) { - message.handledBy( "handleCombinedEL"); - } - - @Handler(condition = "msg.getType().equals('XYZ') && msg.getSize() == 1") - public void handleMethodAccessEL(TestEvent message) { - message.handledBy("handleMethodAccessEL"); - } - - @Handler(condition = "msg.type == 'TEST'") - @Enveloped(messages = {TestEvent.class, Object.class}) - public void handleEnvelopedMessage(MessageEnvelope envelope) { - envelope.getMessage().handledBy("handleEnvelopedMessage"); - } - - } - - - /************************************************************************* - * @throws Exception - ************************************************************************/ - @Test - public void testSimpleStringCondition() throws Exception { - MBassador bus = getBus(BusConfiguration.Default()); - bus.subscribe(new ConditionalMessageListener()); - - TestEvent message = new TestEvent("TEST", 0); - bus.publish(message); - - assertTrue(message.wasHandledBy("handleTypeMessage", "handleEnvelopedMessage")); - assertFalse(message.wasHandledBy("handleInvalidEL")); - } - - - /************************************************************************* - * @throws Exception - ************************************************************************/ - @Test - public void testSimpleNumberCondition() throws Exception { - MBassador bus = getBus(BusConfiguration.Default()); - bus.subscribe(new ConditionalMessageListener()); - - TestEvent message = new TestEvent("", 5); - bus.publish(message); - - assertTrue(message.wasHandledBy("handleSizeMessage")); - assertFalse(message.wasHandledBy("handleInvalidEL")); - } - - /************************************************************************* - * @throws Exception - ************************************************************************/ - @Test - public void testHandleCombinedEL() throws Exception { - MBassador bus = getBus(BusConfiguration.Default()); - bus.subscribe(new ConditionalMessageListener()); - - TestEvent message = new TestEvent("", 3); - bus.publish(message); - - assertTrue(message.wasHandledBy("handleCombinedEL")); - assertFalse(message.wasHandledBy("handleInvalidEL")); - } - - /************************************************************************* - * @throws Exception - ************************************************************************/ - @Test - public void testNotMatchingAnyCondition() throws Exception { - MBassador bus = getBus(BusConfiguration.Default()); - bus.subscribe(new ConditionalMessageListener()); - - TestEvent message = new TestEvent("", 0); - bus.publish(message); - - assertTrue(message.handledBy.isEmpty()); - } - - /************************************************************************* - * @throws Exception - ************************************************************************/ - @Test - public void testHandleMethodAccessEL() throws Exception { - MBassador bus = getBus(BusConfiguration.Default()); - bus.subscribe(new ConditionalMessageListener()); - - TestEvent message = new TestEvent("XYZ", 1); - bus.publish(message); - - assertTrue(message.wasHandledBy("handleMethodAccessEL")); - assertFalse(message.wasHandledBy("handleInvalidEL")); - - } - -} +package net.engio.mbassy; + +import net.engio.mbassy.bus.MBassador; +import net.engio.mbassy.bus.config.BusConfiguration; +import net.engio.mbassy.common.MessageBusTest; +import net.engio.mbassy.listener.Enveloped; +import net.engio.mbassy.listener.Handler; +import net.engio.mbassy.listener.Listener; +import net.engio.mbassy.listener.References; +import net.engio.mbassy.subscription.MessageEnvelope; +import org.junit.Test; + +import java.util.HashSet; +import java.util.Set; + +/***************************************************************************** + * Some unit tests for the "condition" filter. + ****************************************************************************/ + +public class ConditionalHandlers extends MessageBusTest { + + public static class TestEvent { + + private Set handledBy = new HashSet(); + private String type; + private int size; + + public TestEvent(String type, int size) { + super(); + this.type = type; + this.size = size; + } + + public String getType() { + return type; + } + + public int getSize() { + return size; + } + + public boolean wasHandledBy(String ...handlers){ + for(String handler : handlers){ + if (!handledBy.contains(handler)) return false; + } + return true; + } + + public void handledBy(String handler){ + handledBy.add(handler); + } + + } + + @Listener(references = References.Strong) + public static class ConditionalMessageListener { + + @Handler(condition = "msg.type == 'TEST'") + public void handleTypeMessage(TestEvent message) { + message.handledBy("handleTypeMessage"); + } + + @Handler(condition = "msg.size > 4") + public void handleSizeMessage(TestEvent message) { + message.handledBy("handleSizeMessage"); + } + + @Handler(condition = "msg.foo > 4") + public void handleInvalidEL(TestEvent message) { + message.handledBy("handleInvalidEL"); + } + + @Handler(condition = "msg.size > 2 && msg.size < 4") + public void handleCombinedEL(TestEvent message) { + message.handledBy( "handleCombinedEL"); + } + + @Handler(condition = "msg.getType().equals('XYZ') && msg.getSize() == 1") + public void handleMethodAccessEL(TestEvent message) { + message.handledBy("handleMethodAccessEL"); + } + + @Handler(condition = "msg.type == 'TEST'") + @Enveloped(messages = {TestEvent.class, Object.class}) + public void handleEnvelopedMessage(MessageEnvelope envelope) { + envelope.getMessage().handledBy("handleEnvelopedMessage"); + } + + } + + + /************************************************************************* + * @throws Exception + ************************************************************************/ + @Test + public void testSimpleStringCondition() throws Exception { + MBassador bus = getBus(BusConfiguration.Default()); + bus.subscribe(new ConditionalMessageListener()); + + TestEvent message = new TestEvent("TEST", 0); + bus.publish(message); + + assertTrue(message.wasHandledBy("handleTypeMessage", "handleEnvelopedMessage")); + assertFalse(message.wasHandledBy("handleInvalidEL")); + } + + + /************************************************************************* + * @throws Exception + ************************************************************************/ + @Test + public void testSimpleNumberCondition() throws Exception { + MBassador bus = getBus(BusConfiguration.Default()); + bus.subscribe(new ConditionalMessageListener()); + + TestEvent message = new TestEvent("", 5); + bus.publish(message); + + assertTrue(message.wasHandledBy("handleSizeMessage")); + assertFalse(message.wasHandledBy("handleInvalidEL")); + } + + /************************************************************************* + * @throws Exception + ************************************************************************/ + @Test + public void testHandleCombinedEL() throws Exception { + MBassador bus = getBus(BusConfiguration.Default()); + bus.subscribe(new ConditionalMessageListener()); + + TestEvent message = new TestEvent("", 3); + bus.publish(message); + + assertTrue(message.wasHandledBy("handleCombinedEL")); + assertFalse(message.wasHandledBy("handleInvalidEL")); + } + + /************************************************************************* + * @throws Exception + ************************************************************************/ + @Test + public void testNotMatchingAnyCondition() throws Exception { + MBassador bus = getBus(BusConfiguration.Default()); + bus.subscribe(new ConditionalMessageListener()); + + TestEvent message = new TestEvent("", 0); + bus.publish(message); + + assertTrue(message.handledBy.isEmpty()); + } + + /************************************************************************* + * @throws Exception + ************************************************************************/ + @Test + public void testHandleMethodAccessEL() throws Exception { + MBassador bus = getBus(BusConfiguration.Default()); + bus.subscribe(new ConditionalMessageListener()); + + TestEvent message = new TestEvent("XYZ", 1); + bus.publish(message); + + assertTrue(message.wasHandledBy("handleMethodAccessEL")); + assertFalse(message.wasHandledBy("handleInvalidEL")); + + } + +} diff --git a/src/test/java/net/engio/mbassy/common/ListenerFactory.java b/src/test/java/net/engio/mbassy/common/ListenerFactory.java index 7624c7a..d188f6c 100644 --- a/src/test/java/net/engio/mbassy/common/ListenerFactory.java +++ b/src/test/java/net/engio/mbassy/common/ListenerFactory.java @@ -30,7 +30,7 @@ public class ListenerFactory { return this; } - public ListenerFactory create(int numberOfInstances, Class[] classes){ + public ListenerFactory create(int numberOfInstances, Class ...classes){ for(Class clazz : classes) create(numberOfInstances,clazz); return this;