public void testDispatchAsyncComplex() throws Throwable { UMOConnector c = ConnectorFactory.getConnectorByProtocol(getProtocol()); assertNotNull(c); UMOMessageDispatcher dispatcher = c.getDispatcher("ANY"); UMOEndpoint endpoint = new MuleEndpoint( "test", new MuleEndpointURI(getDispatchAsyncComplexEndpoint1()), c, null, UMOEndpoint.ENDPOINT_TYPE_SENDER, 0, null); UMOEvent event = getTestEvent(new Person("Joe", "Blow"), endpoint); dispatcher.dispatch(event); Thread.sleep(2000); // lets get our newly added person UMOMessage result = dispatcher.receive(new MuleEndpointURI(getDispatchAsyncComplexEndpoint2()), 0); assertNotNull(result); assertTrue(result.getPayload() instanceof Person); assertEquals("Joe", ((Person) result.getPayload()).getFirstName()); assertEquals("Blow", ((Person) result.getPayload()).getLastName()); }
public void onMessage(MessageExchange messageExchange) throws MessagingException { try { UMOMessageDispatcher dispatcher = endpoint.getConnector().getDispatcher(endpoint.getEndpointURI().getAddress()); NormalizedMessage out = getOutMessage(messageExchange); UMOMessage message = JbiUtils.createMessage(out); UMOEvent event = new MuleEvent(message, endpoint, new MuleSession(), endpoint.isSynchronous()); if (endpoint.isSynchronous()) { UMOMessage result = dispatcher.send(event); // todo send result back } else { dispatcher.dispatch(event); } } catch (Exception e) { error(messageExchange, e); } }