Example #1
0
  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);
  }
Example #2
0
  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());
  }
Example #3
0
  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());
  }
Example #4
0
  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());
  }
Example #5
0
  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());
  }