diff --git a/ipaacalib/java/src/ipaaca/IUStore.java b/ipaacalib/java/src/ipaaca/IUStore.java index 0edc34782123f388d725bd9b304ac324546f65db..a81b9b11530b137bd362c37bb6ae5fe12fa28044 100644 --- a/ipaacalib/java/src/ipaaca/IUStore.java +++ b/ipaacalib/java/src/ipaaca/IUStore.java @@ -32,7 +32,7 @@ package ipaaca; -import java.util.HashMap; +import java.util.concurrent.ConcurrentHashMap; /** * An IUStore maps an IUid to an IU @@ -40,7 +40,7 @@ import java.util.HashMap; * * @param <X> type of AbstractIU stored in the store */ -public class IUStore<X extends AbstractIU> extends HashMap<String, X> +public class IUStore<X extends AbstractIU> extends ConcurrentHashMap<String, X> { private static final long serialVersionUID = 1L; } diff --git a/ipaacalib/java/src/ipaaca/InputBuffer.java b/ipaacalib/java/src/ipaaca/InputBuffer.java index de2be7281d55a79225b83d513c3e7a46d9ef66a9..1a3bdb4fc76045b3858d5d9b49c6c888fd0d314a 100644 --- a/ipaacalib/java/src/ipaaca/InputBuffer.java +++ b/ipaacalib/java/src/ipaaca/InputBuffer.java @@ -269,8 +269,16 @@ public class InputBuffer extends Buffer if (event.getData() instanceof RemoteMessageIU) { RemoteMessageIU rm = (RemoteMessageIU) event.getData(); + if (messageStore.containsKey(rm.getUid())) { + logger.warn("Spurious RemoteMessage event: already got this UID: "+rm.getUid()); + return; + } + + //logger.info("Adding Message "+rm.getUid()); messageStore.put(rm.getUid(), rm); + //logger.info("Calling handlers for Message "+rm.getUid()); callIuEventHandlers(rm.getUid(),false, IUEventType.MESSAGE, rm.getCategory()); + //logger.info("Removing Message "+rm.getUid()); messageStore.remove(rm.getUid()); } else if (event.getData() instanceof RemotePushIU) diff --git a/ipaacalib/python/ivy.xml b/ipaacalib/python/ivy.xml index 6746fd8837a3f96365383a4562a31e1d67238962..e559706ba1ca9a0010dc3d0d75e8218907fe1278 100644 --- a/ipaacalib/python/ivy.xml +++ b/ipaacalib/python/ivy.xml @@ -6,6 +6,8 @@ <dependencies> <dependency org="google" name="protobuf-python" rev="latest.release"/> <dependency org="rsb" name="rsb-python" rev="latest.release"/> + <dependency org="spread" name="spread" rev="latest.release"/> </dependencies> </ivy-module> + diff --git a/ipaacalib/python/test/ivy.xml b/ipaacalib/python/test/ivy.xml index 1e4d577a068bb000bea110e43879e11f2dc57063..03db403ef45bbe4494c7fa1838a7d91ba1fc3f5f 100644 --- a/ipaacalib/python/test/ivy.xml +++ b/ipaacalib/python/test/ivy.xml @@ -3,5 +3,7 @@ <dependencies> <dependency org="hamcrest" name="hamcrest-python" rev="latest.release"/> <dependency org="mockito" name="mockito-python" rev="latest.release" /> + <dependency org="nose" name="nose" rev="latest.release" /> </dependencies> </ivy-module> +