Author: julien(a)jboss.com
Date: 2008-03-10 19:52:44 -0400 (Mon, 10 Mar 2008)
New Revision: 10255
Modified:
modules/portlet/trunk/controller/src/test/java/org/jboss/portal/portlet/controller/EventControllerContextFailureTestCase.java
Log:
test the event discarded callback failure impact on the portlet controller sequence flow
Modified:
modules/portlet/trunk/controller/src/test/java/org/jboss/portal/portlet/controller/EventControllerContextFailureTestCase.java
===================================================================
---
modules/portlet/trunk/controller/src/test/java/org/jboss/portal/portlet/controller/EventControllerContextFailureTestCase.java 2008-03-10
23:45:36 UTC (rev 10254)
+++
modules/portlet/trunk/controller/src/test/java/org/jboss/portal/portlet/controller/EventControllerContextFailureTestCase.java 2008-03-10
23:52:44 UTC (rev 10255)
@@ -240,4 +240,55 @@
assertTrue(called);
}
}
+
+ @Test
+ public void testEventControllerContextFailsDuringEventDiscardedCallback() throws
PortletInvokerException
+ {
+ WiringEventControllerContext ecc = new WiringEventControllerContext()
+ {
+ public void eventDiscarded(EventPhaseContext context, Event discardedEvent, int
cause)
+ {
+ assertEquals(EVENT_CONSUMER_INFO_NOT_AVAILABLE, cause);
+ called = true;
+ throw new RuntimeException();
+ }
+ };
+ ecc.createWire(srcName, "foo", dstName, "bar_");
+
+ // We test that a runtime exception thrown does not interrrupt the flow of the
controller
+ context.setEventControllerContext(ecc);
+ fooPortlet.addHandler(new EventProducerActionHandler(srcName));
+ ControllerResponse response = controller.process(context, request);
+ PageUpdateResponse updateResponse = assertInstanceOf(response,
PageUpdateResponse.class);
+ assertEquals(PortletResponse.DISTRIBUTION_DONE,
updateResponse.getEventDistributionStatus());
+ assertTrue(called);
+
+ //
+ called = false;
+ final Error error = new Error();
+ ecc = new WiringEventControllerContext()
+ {
+ public void eventDiscarded(EventPhaseContext context, Event discardedEvent, int
cause)
+ {
+ assertEquals(EVENT_CONSUMER_INFO_NOT_AVAILABLE, cause);
+ called = true;
+ throw error;
+ }
+ };
+ ecc.createWire(srcName, "foo", dstName, "bar_");
+
+ //
+ context.setEventControllerContext(ecc);
+ fooPortlet.addHandler(new EventProducerActionHandler(srcName));
+ try
+ {
+ controller.process(context, request);
+ fail();
+ }
+ catch (Error ignore)
+ {
+ assertSame(error, ignore);
+ assertTrue(called);
+ }
+ }
}
Show replies by date