OutboundEndpoint endpoint2 = getTestOutboundEndpoint("Test2Provider");
assertNotNull(endpoint2);
OutboundEndpoint mockendpoint2 = RouterTestUtils.createMockEndpoint(endpoint2);
FilteringOutboundRouter router1 = new FilteringOutboundRouter();
PayloadTypeFilter filter = new PayloadTypeFilter(String.class);
router1.setFilter(filter);
List<MessageProcessor> endpoints = new ArrayList<MessageProcessor>();
endpoints.add(mockendpoint1);
router1.setRoutes(endpoints);
FilteringOutboundRouter router2 = new FilteringOutboundRouter();
PayloadTypeFilter filter2 = new PayloadTypeFilter();
filter2.setExpectedType(Exception.class);
router2.setFilter(filter2);
endpoints = new ArrayList<MessageProcessor>();
endpoints.add(mockendpoint2);
router2.setRoutes(endpoints);
messageRouter.addRoute(router1);
assertEquals(1, messageRouter.getRoutes().size());
messageRouter.removeRoute(router1);
assertEquals(0, messageRouter.getRoutes().size());
List<MatchableMessageProcessor> list = new ArrayList<MatchableMessageProcessor>();
list.add(router1);
list.add(router2);
messageRouter.setMessageProcessors(list);
MuleSession session = mock(MuleSession.class);
MuleEvent event = getTestEvent("test event", session);
when(mockendpoint1.process(any(MuleEvent.class))).thenAnswer(new MuleEventCheckAnswer());
messageRouter.process(event);
event = getTestEvent(new IllegalArgumentException(), session);
when(mockendpoint2.process(any(MuleEvent.class))).thenAnswer(new MuleEventCheckAnswer());
messageRouter.process(event);
FilteringOutboundRouter router3 = new FilteringOutboundRouter();
router3.setFilter(new PayloadTypeFilter(Object.class));
endpoints = new ArrayList<MessageProcessor>();
endpoints.add(mockendpoint2);
router3.setRoutes(endpoints);
messageRouter.addRoute(router3);