public void testRemovingListeners() throws Exception { TestSubscriptionEventBean subscriptionBean = (TestSubscriptionEventBean) context.getBean("testSubscribingEventBean1"); assertNotNull(subscriptionBean); MuleEventMulticaster multicaster = (MuleEventMulticaster) context.getBean(AbstractApplicationContext.APPLICATION_EVENT_MULTICASTER_BEAN_NAME); assertNotNull(multicaster); Latch whenFinished = new Latch(); subscriptionBean.setEventCallback(new CountingEventCallback(eventCounter1, 1, whenFinished)); multicaster.removeApplicationListener(subscriptionBean); MuleClient client = new MuleClient(); client.send("vm://event.multicaster", "Test Spring Event", null); assertEquals(0, eventCounter1.get()); multicaster.addApplicationListener(subscriptionBean); client.send("vm://event.multicaster", "Test Spring Event", null); assertTrue(whenFinished.await(3000, TimeUnit.MILLISECONDS)); assertEquals(1, eventCounter1.get()); eventCounter1.set(0); multicaster.removeAllListeners(); client.send("vm://event.multicaster", "Test Spring Event", null); assertEquals(0, eventCounter1.get()); multicaster.addApplicationListener(subscriptionBean); context.refresh(); subscriptionBean.setEventCallback(null); }
public void testPublishWithEventAwareTransformer() throws Exception { CountDownLatch transformerLatch = new CountDownLatch(1); TestEventAwareTransformer trans = new TestEventAwareTransformer(); trans.setLatch(transformerLatch); managementContext.getRegistry().registerTransformer(trans); MuleApplicationEvent event = new MuleApplicationEvent( "Event from a spring bean", "vm://testBean2?transformers=dummyTransformer"); TestSubscriptionEventBean bean2 = (TestSubscriptionEventBean) context.getBean("testSubscribingEventBean2"); assertNotNull(bean2); Latch whenFinished = new Latch(); bean2.setEventCallback(new CountingEventCallback(eventCounter1, 1, whenFinished)); // publish asynchronously this.doPublish(event, 1); whenFinished.await(3000, TimeUnit.MILLISECONDS); assertTrue(transformerLatch.await(3000, TimeUnit.MILLISECONDS)); assertEquals(1, eventCounter1.get()); }
public void testReceivingASubscriptionEvent() throws Exception { TestSubscriptionEventBean subscriptionBean = (TestSubscriptionEventBean) context.getBean("testSubscribingEventBean1"); assertNotNull(subscriptionBean); Latch whenFinished = new Latch(); subscriptionBean.setEventCallback(new CountingEventCallback(eventCounter1, 1, whenFinished)); MuleClient client = new MuleClient(); client.send("vm://event.multicaster", "Test Spring Event", null); whenFinished.await(3000, TimeUnit.MILLISECONDS); assertEquals(1, eventCounter1.get()); }
public void testPublishOnly() throws Exception { final MuleApplicationEvent event = new MuleApplicationEvent("Event from a spring bean", "vm://testBean2"); TestSubscriptionEventBean bean2 = (TestSubscriptionEventBean) context.getBean("testSubscribingEventBean2"); assertNotNull(bean2); Latch whenFinished = new Latch(); bean2.setEventCallback( new CountingEventCallback(eventCounter1, NUMBER_OF_MESSAGES, whenFinished)); // publish asynchronously this.doPublish(event, NUMBER_OF_MESSAGES); whenFinished.await(3000, TimeUnit.MILLISECONDS); assertEquals(NUMBER_OF_MESSAGES, eventCounter1.get()); }
public void testReceiveAndPublishEvent() throws Exception { TestSubscriptionEventBean bean1 = (TestSubscriptionEventBean) context.getBean("testSubscribingEventBean1"); assertNotNull(bean1); final Latch whenFinished1 = new Latch(); EventCallback callback = new EventCallback() { public void eventReceived(UMOEventContext context, Object o) throws Exception { MuleApplicationEvent returnEvent = new MuleApplicationEvent("Event from a spring bean", "vm://testBean2"); MuleApplicationEvent e = (MuleApplicationEvent) o; e.getApplicationContext().publishEvent(returnEvent); if (eventCounter1.incrementAndGet() == NUMBER_OF_MESSAGES) { whenFinished1.countDown(); } } }; bean1.setEventCallback(callback); TestSubscriptionEventBean bean2 = (TestSubscriptionEventBean) context.getBean("testSubscribingEventBean2"); assertNotNull(bean2); Latch whenFinished2 = new Latch(); bean2.setEventCallback( new CountingEventCallback(eventCounter2, NUMBER_OF_MESSAGES, whenFinished2)); // send asynchronously this.doSend("vm://event.multicaster", "Test Spring Event", NUMBER_OF_MESSAGES); whenFinished1.await(3000, TimeUnit.MILLISECONDS); whenFinished2.await(3000, TimeUnit.MILLISECONDS); assertEquals(NUMBER_OF_MESSAGES, eventCounter1.get()); assertEquals(NUMBER_OF_MESSAGES, eventCounter2.get()); }