Added some codestyle-induced fixes.
This commit is contained in:
parent
fb2bdd4c1a
commit
8349aef7c8
@ -43,15 +43,17 @@ public abstract class AbstractMessageBus<T, P extends IMessageBus.IPostCommand>
|
|||||||
// all subscriptions per message type
|
// all subscriptions per message type
|
||||||
// this is the primary list for dispatching a specific message
|
// this is the primary list for dispatching a specific message
|
||||||
// write access is synchronized and happens very infrequently
|
// write access is synchronized and happens very infrequently
|
||||||
private final Map<Class, Collection<Subscription>> subscriptionsPerMessage = new HashMap(50);
|
private final Map<Class, Collection<Subscription>> subscriptionsPerMessage
|
||||||
|
= new HashMap<Class, Collection<Subscription>>(50);
|
||||||
|
|
||||||
// all subscriptions per messageHandler type
|
// all subscriptions per messageHandler type
|
||||||
// this list provides fast access for subscribing and unsubscribing
|
// this list provides fast access for subscribing and unsubscribing
|
||||||
// write access is synchronized and happens very infrequently
|
// write access is synchronized and happens very infrequently
|
||||||
private final Map<Class, Collection<Subscription>> subscriptionsPerListener = new HashMap(50);
|
private final Map<Class, Collection<Subscription>> subscriptionsPerListener
|
||||||
|
= new HashMap<Class, Collection<Subscription>>(50);
|
||||||
|
|
||||||
// remember already processed classes that do not contain any listeners
|
// remember already processed classes that do not contain any listeners
|
||||||
private final Collection<Class> nonListeners = new HashSet();
|
private final Collection<Class> nonListeners = new HashSet<Class>();
|
||||||
|
|
||||||
// this handler will receive all errors that occur during message dispatch or message handling
|
// this handler will receive all errors that occur during message dispatch or message handling
|
||||||
private final List<IPublicationErrorHandler> errorHandlers = new CopyOnWriteArrayList<IPublicationErrorHandler>();
|
private final List<IPublicationErrorHandler> errorHandlers = new CopyOnWriteArrayList<IPublicationErrorHandler>();
|
||||||
|
@ -103,7 +103,7 @@ public class MessagePublication {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private enum State {
|
private enum State {
|
||||||
Initial, Scheduled, Running, Finished, Error;
|
Initial, Scheduled, Running, Finished, Error
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -22,15 +22,16 @@ import java.util.WeakHashMap;
|
|||||||
*/
|
*/
|
||||||
public class ConcurrentSet<T> implements Iterable<T> {
|
public class ConcurrentSet<T> implements Iterable<T> {
|
||||||
|
|
||||||
|
// Internal state
|
||||||
|
private final Object lock = new Object();
|
||||||
private WeakHashMap<T, Entry<T>> entries = new WeakHashMap<T, Entry<T>>(); // maintain a map of entries for O(log n) lookup
|
private WeakHashMap<T, Entry<T>> entries = new WeakHashMap<T, Entry<T>>(); // maintain a map of entries for O(log n) lookup
|
||||||
|
|
||||||
private Entry<T> head; // reference to the first element
|
private Entry<T> head; // reference to the first element
|
||||||
|
|
||||||
public ConcurrentSet<T> add(T element) {
|
public ConcurrentSet<T> add(T element) {
|
||||||
if (element == null || entries.containsKey(element)) {
|
if (element == null || entries.containsKey(element)) {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
synchronized (this) {
|
synchronized (lock) {
|
||||||
insert(element);
|
insert(element);
|
||||||
}
|
}
|
||||||
return this;
|
return this;
|
||||||
@ -58,7 +59,7 @@ public class ConcurrentSet<T> implements Iterable<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public ConcurrentSet<T> addAll(Iterable<T> elements) {
|
public ConcurrentSet<T> addAll(Iterable<T> elements) {
|
||||||
synchronized (this) {
|
synchronized (lock) {
|
||||||
for (T element : elements) {
|
for (T element : elements) {
|
||||||
if (element == null || entries.containsKey(element)) {
|
if (element == null || entries.containsKey(element)) {
|
||||||
return this;
|
return this;
|
||||||
@ -74,7 +75,7 @@ public class ConcurrentSet<T> implements Iterable<T> {
|
|||||||
if (!entries.containsKey(element)) {
|
if (!entries.containsKey(element)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
synchronized (this) {
|
synchronized (lock) {
|
||||||
Entry<T> listelement = entries.get(element);
|
Entry<T> listelement = entries.get(element);
|
||||||
if (listelement == null) {
|
if (listelement == null) {
|
||||||
return false; //removed by other thread
|
return false; //removed by other thread
|
||||||
|
@ -91,9 +91,6 @@ public class ReflectionUtils {
|
|||||||
Class[] superClassMethodParameters = superclassMethod.getParameterTypes();
|
Class[] superClassMethodParameters = superclassMethod.getParameterTypes();
|
||||||
Class[] subClassMethodParameters = superclassMethod.getParameterTypes();
|
Class[] subClassMethodParameters = superclassMethod.getParameterTypes();
|
||||||
// method must specify the same number of parameters
|
// method must specify the same number of parameters
|
||||||
if (subClassMethodParameters.length != subClassMethodParameters.length) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
//the parameters must occur in the exact same order
|
//the parameters must occur in the exact same order
|
||||||
for (int i = 0; i < subClassMethodParameters.length; i++) {
|
for (int i = 0; i < subClassMethodParameters.length; i++) {
|
||||||
if (!superClassMethodParameters[i].equals(subClassMethodParameters[i])) {
|
if (!superClassMethodParameters[i].equals(subClassMethodParameters[i])) {
|
||||||
|
@ -26,8 +26,8 @@ public class FilteredMessageDispatcher extends DelegatingMessageDispatcher {
|
|||||||
if (filter == null) {
|
if (filter == null) {
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
for (int i = 0; i < filter.length; i++) {
|
for (IMessageFilter aFilter : filter) {
|
||||||
if (!filter[i].accepts(message, getContext().getHandlerMetadata())) {
|
if (!aFilter.accepts(message, getContext().getHandlerMetadata())) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package net.engio.mbassy.listener;
|
package net.engio.mbassy.listener;
|
||||||
|
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -33,8 +34,7 @@ public class MessageHandlerMetadata {
|
|||||||
this.envelope = handler.getAnnotation(Enveloped.class);
|
this.envelope = handler.getAnnotation(Enveloped.class);
|
||||||
this.acceptsSubtypes = !handlerConfig.rejectSubtypes();
|
this.acceptsSubtypes = !handlerConfig.rejectSubtypes();
|
||||||
if (this.envelope != null) {
|
if (this.envelope != null) {
|
||||||
for (Class messageType : envelope.messages())
|
Collections.addAll(handledMessages, envelope.messages());
|
||||||
handledMessages.add(messageType);
|
|
||||||
} else {
|
} else {
|
||||||
handledMessages.add(handler.getParameterTypes()[0]);
|
handledMessages.add(handler.getParameterTypes()[0]);
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,7 @@ import java.util.List;
|
|||||||
public class MessageListenerMetadata<T> {
|
public class MessageListenerMetadata<T> {
|
||||||
|
|
||||||
|
|
||||||
public static final IPredicate<MessageHandlerMetadata> ForMessage(final Class<?> messageType) {
|
public static IPredicate<MessageHandlerMetadata> ForMessage(final Class<?> messageType) {
|
||||||
return new IPredicate<MessageHandlerMetadata>() {
|
return new IPredicate<MessageHandlerMetadata>() {
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(MessageHandlerMetadata target) {
|
public boolean apply(MessageHandlerMetadata target) {
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package net.engio.mbassy.subscription;
|
package net.engio.mbassy.subscription;
|
||||||
|
|
||||||
import java.sql.Timestamp;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A message envelope is used to wrap messages of arbitrary type such that a handler
|
* A message envelope is used to wrap messages of arbitrary type such that a handler
|
||||||
* my receive messages of different types.
|
* my receive messages of different types.
|
||||||
|
@ -32,9 +32,11 @@ public class ConcurrentSetTest extends UnitTest {
|
|||||||
@Ignore("Currently fails when building as a suite with JDK 1.7.0_15 and Maven 3.0.5 on a Mac")
|
@Ignore("Currently fails when building as a suite with JDK 1.7.0_15 and Maven 3.0.5 on a Mac")
|
||||||
@Test
|
@Test
|
||||||
public void testIteratorCleanup() {
|
public void testIteratorCleanup() {
|
||||||
|
|
||||||
|
// Assemble
|
||||||
final HashSet<Object> persistingCandidates = new HashSet<Object>();
|
final HashSet<Object> persistingCandidates = new HashSet<Object>();
|
||||||
final ConcurrentSet<Object> testSet = new ConcurrentSet<Object>();
|
final ConcurrentSet<Object> testSet = new ConcurrentSet<Object>();
|
||||||
Random rand = new Random();
|
final Random rand = new Random();
|
||||||
|
|
||||||
for (int i = 0; i < numberOfElements; i++) {
|
for (int i = 0; i < numberOfElements; i++) {
|
||||||
Object candidate = new Object();
|
Object candidate = new Object();
|
||||||
@ -100,8 +102,6 @@ public class ConcurrentSetTest extends UnitTest {
|
|||||||
for (Object uniqueObject : distinct) {
|
for (Object uniqueObject : distinct) {
|
||||||
assertTrue(testSet.contains(uniqueObject));
|
assertTrue(testSet.contains(uniqueObject));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -1,14 +1,16 @@
|
|||||||
package net.engio.mbassy.bus;
|
package net.engio.mbassy.bus;
|
||||||
|
|
||||||
import net.engio.mbassy.bus.BusConfiguration;
|
|
||||||
import net.engio.mbassy.bus.MBassador;
|
|
||||||
import net.engio.mbassy.common.MessageBusTest;
|
import net.engio.mbassy.common.MessageBusTest;
|
||||||
import net.engio.mbassy.events.SubTestMessage;
|
|
||||||
import org.junit.Test;
|
|
||||||
import net.engio.mbassy.common.TestUtil;
|
import net.engio.mbassy.common.TestUtil;
|
||||||
|
import net.engio.mbassy.events.SubTestMessage;
|
||||||
import net.engio.mbassy.events.TestMessage;
|
import net.engio.mbassy.events.TestMessage;
|
||||||
import net.engio.mbassy.listeners.*;
|
import net.engio.mbassy.listeners.EventingTestBean;
|
||||||
|
import net.engio.mbassy.listeners.EventingTestBean2;
|
||||||
|
import net.engio.mbassy.listeners.EventingTestBean3;
|
||||||
|
import net.engio.mbassy.listeners.ListenerFactory;
|
||||||
|
import net.engio.mbassy.listeners.NonListeningBean;
|
||||||
import net.engio.mbassy.subscription.Subscription;
|
import net.engio.mbassy.subscription.Subscription;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
|
Loading…
Reference in New Issue
Block a user