diff --git a/ipaacalib/java/src/ipaaca/util/ComponentNotifier.java b/ipaacalib/java/src/ipaaca/util/ComponentNotifier.java index d08f96a19572e48d42f24c9d8c2ea2557edde67b..6fbebdc8529e903dcffa4eb69d4381c7e71a5b1e 100644 --- a/ipaacalib/java/src/ipaaca/util/ComponentNotifier.java +++ b/ipaacalib/java/src/ipaaca/util/ComponentNotifier.java @@ -161,7 +161,7 @@ public class ComponentNotifier { if(!isInitialized) { - inBuffer.registerHandler(new IUEventHandler(new ComponentNotifyHandler(), EnumSet.of(IUEventType.ADDED), ImmutableSet + inBuffer.registerHandler(new IUEventHandler(new ComponentNotifyHandler(), EnumSet.of(IUEventType.ADDED, IUEventType.MESSAGE), ImmutableSet .of(NOTIFY_CATEGORY))); submitNotify(true); isInitialized = true; diff --git a/ipaacalib/java/test/src/ipaaca/ComponentMessageCommunicationIntegrationTest.java b/ipaacalib/java/test/src/ipaaca/ComponentMessageCommunicationIntegrationTest.java index f678a1245019332a3594e503ff1c346e27c3ff8b..e4934ae041cb58dc5518e7588ff3d446b86dd589 100644 --- a/ipaacalib/java/test/src/ipaaca/ComponentMessageCommunicationIntegrationTest.java +++ b/ipaacalib/java/test/src/ipaaca/ComponentMessageCommunicationIntegrationTest.java @@ -46,7 +46,7 @@ public class ComponentMessageCommunicationIntegrationTest Set<String> categories = new ImmutableSet.Builder<String>().add(CATEGORY).build(); inBuffer = new InputBuffer("component2", categories); - EnumSet<IUEventType> types = EnumSet.of(IUEventType.ADDED, IUEventType.COMMITTED, IUEventType.UPDATED); + EnumSet<IUEventType> types = EnumSet.of(IUEventType.ADDED, IUEventType.COMMITTED, IUEventType.UPDATED, IUEventType.MESSAGE); component2EventHandler = new CountingEventHandler(); component1EventHandler = new CountingEventHandler(); inBuffer.registerHandler(new IUEventHandler(component2EventHandler, types, categories)); @@ -75,11 +75,11 @@ public class ComponentMessageCommunicationIntegrationTest AbstractIU iuIn = inBuffer.getIU(localIU.getUid()); assertNull(iuIn); assertThat(localIU.getLinks("INIT"), containsInAnyOrder("init1", "init2")); - assertEquals(1, component2EventHandler.getNumberOfAddEvents(localIU.getUid())); - assertEquals(0, component1EventHandler.getNumberOfAddEvents(localIU.getUid())); - assertEquals(1, component2EventHandler.getNumberOfAddEvents(localIU.getUid())); - assertEquals(0, component1EventHandler.getNumberOfAddEvents(localIU.getUid())); - assertEquals(localIU.getUid(), component2StoreHandler.getAddedIUs().get(0).getUid()); + assertEquals(1, component2EventHandler.getNumberOfMessageEvents(localIU.getUid())); + assertEquals(0, component1EventHandler.getNumberOfMessageEvents(localIU.getUid())); + assertEquals(1, component2EventHandler.getNumberOfMessageEvents(localIU.getUid())); + assertEquals(0, component1EventHandler.getNumberOfMessageEvents(localIU.getUid())); + assertEquals(localIU.getUid(), component2StoreHandler.getMessageIUs().get(0).getUid()); } @Test @@ -90,7 +90,7 @@ public class ComponentMessageCommunicationIntegrationTest Thread.sleep(200); assertEquals(0, component1EventHandler.getNumberOfCommitEvents(localIU.getUid())); assertEquals(0, component2EventHandler.getNumberOfCommitEvents(localIU.getUid())); - assertFalse(component2StoreHandler.getAddedIUs().get(0).isCommitted()); + assertFalse(component2StoreHandler.getMessageIUs().get(0).isCommitted()); } @Test @@ -101,7 +101,7 @@ public class ComponentMessageCommunicationIntegrationTest Thread.sleep(200); assertEquals(0, component1EventHandler.getNumberOfCommitEvents(localIU.getUid())); assertEquals(0, component2EventHandler.getNumberOfCommitEvents(localIU.getUid())); - assertTrue(component2StoreHandler.getAddedIUs().get(0).isCommitted()); + assertTrue(component2StoreHandler.getMessageIUs().get(0).isCommitted()); } @Test @@ -109,7 +109,7 @@ public class ComponentMessageCommunicationIntegrationTest { outBuffer.add(localIU); Thread.sleep(200); - AbstractIU iuIn = component2StoreHandler.getAddedIUs().get(0); + AbstractIU iuIn = component2StoreHandler.getMessageIUs().get(0); iuIn.commit(); Thread.sleep(200); @@ -123,7 +123,7 @@ public class ComponentMessageCommunicationIntegrationTest { outBuffer.add(localIU); Thread.sleep(200); - AbstractIU iuIn = component2StoreHandler.getAddedIUs().get(0); + AbstractIU iuIn = component2StoreHandler.getMessageIUs().get(0); assertNull(iuIn.getPayload().get("key2")); localIU.getPayload().put("key2", "value2"); @@ -140,7 +140,7 @@ public class ComponentMessageCommunicationIntegrationTest outBuffer.add(localIU); Thread.sleep(200); - AbstractIU iuIn = component2StoreHandler.getAddedIUs().get(0); + AbstractIU iuIn = component2StoreHandler.getMessageIUs().get(0); assertEquals("value2", iuIn.getPayload().get("key2")); } diff --git a/ipaacalib/java/test/src/ipaaca/CountingEventHandler.java b/ipaacalib/java/test/src/ipaaca/CountingEventHandler.java index f6610400e68176db9e7276c128fe45f87f285c22..08a06f6f390539545d12badce90fcfac5f94e179 100644 --- a/ipaacalib/java/test/src/ipaaca/CountingEventHandler.java +++ b/ipaacalib/java/test/src/ipaaca/CountingEventHandler.java @@ -10,6 +10,7 @@ import java.util.Map; */ final class CountingEventHandler implements HandlerFunctor { + private Map<String,Integer> messageEvents = new HashMap<String,Integer>(); private Map<String,Integer> commitEvents = new HashMap<String,Integer>(); private Map<String,Integer> addEvents = new HashMap<String,Integer>(); private Map<String,Integer> updateEvents = new HashMap<String,Integer>(); @@ -33,6 +34,7 @@ final class CountingEventHandler implements HandlerFunctor case ADDED: updateEventMap(iu.getUid(),addEvents); break; case COMMITTED: updateEventMap(iu.getUid(),commitEvents); break; case UPDATED: updateEventMap(iu.getUid(),updateEvents); break; + case MESSAGE: updateEventMap(iu.getUid(),messageEvents);break; case DELETED: break; case LINKSUPDATED: @@ -70,4 +72,13 @@ final class CountingEventHandler implements HandlerFunctor } return updateEvents.get(iu); } + + public int getNumberOfMessageEvents(String iu) + { + if(!messageEvents.containsKey(iu)) + { + return 0; + } + return messageEvents.get(iu); + } } \ No newline at end of file diff --git a/ipaacalib/java/test/src/ipaaca/JavaPythonTest.java b/ipaacalib/java/test/src/ipaaca/JavaPythonTest.java index 95bb779a2c45dfad831897aa65187ca2e7a53397..92f0b67f58c865514147f6cf537d1d9222dfda7a 100644 --- a/ipaacalib/java/test/src/ipaaca/JavaPythonTest.java +++ b/ipaacalib/java/test/src/ipaaca/JavaPythonTest.java @@ -201,7 +201,7 @@ public class JavaPythonTest @Test public void testMessageFromPython()throws IOException, InterruptedException { - inBuffer.registerHandler(new IUEventHandler(storeHandler,EnumSet.of(IUEventType.ADDED),ImmutableSet.of("JavaPythonTest"))); + inBuffer.registerHandler(new IUEventHandler(storeHandler,EnumSet.of(IUEventType.ADDED, IUEventType.MESSAGE),ImmutableSet.of("JavaPythonTest"))); String pypr = PYTHON_PREAMBLE +"ob = ipaaca.OutputBuffer('pythonside')\n" +"iu = ipaaca.Message('JavaPythonTest')\n" @@ -210,7 +210,7 @@ public class JavaPythonTest +"ob.add(iu)\n"; runPythonProgram(pypr); Thread.sleep(200); - assertEquals(1,storeHandler.getAddedIUs().size()); - assertEquals("Hello from Python!", storeHandler.getAddedIUs().get(0).getPayload().get("data")); + assertEquals(1,storeHandler.getMessageIUs().size()); + assertEquals("Hello from Python!", storeHandler.getMessageIUs().get(0).getPayload().get("data")); } } diff --git a/ipaacalib/java/test/src/ipaaca/StoringEventHandler.java b/ipaacalib/java/test/src/ipaaca/StoringEventHandler.java index 7ba5f5b61bba109590a191561f3d263443c2dfff..b95c4f5658e73704dacd376b5f7afab12682987b 100644 --- a/ipaacalib/java/test/src/ipaaca/StoringEventHandler.java +++ b/ipaacalib/java/test/src/ipaaca/StoringEventHandler.java @@ -11,11 +11,17 @@ import java.util.List; public class StoringEventHandler implements HandlerFunctor { private List<AbstractIU> addedIUs = new ArrayList<AbstractIU>(); + private List<AbstractIU> messageIUs = new ArrayList<AbstractIU>(); public List<AbstractIU> getAddedIUs() { return addedIUs; } + + public List<AbstractIU> getMessageIUs() + { + return messageIUs; + } @Override public void handle(AbstractIU iu, IUEventType type, boolean local) @@ -25,6 +31,9 @@ public class StoringEventHandler implements HandlerFunctor case ADDED: addedIUs.add(iu); break; + case MESSAGE: + messageIUs.add(iu); + break; case COMMITTED: break; case UPDATED: