@Override protected void doRun(Event event) throws Exception { // check the global COORDINATION_MESSAGE (must be ABORT) if (event instanceof CloseFromOtherNeedEvent) { WonMessage wonMessage = ((CloseFromOtherNeedEvent) event).getWonMessage(); NodeIterator ni = RdfUtils.visitFlattenedToNodeIterator( wonMessage.getMessageContent(), new RdfUtils.ModelVisitor<NodeIterator>() { @Override public NodeIterator visit(final Model model) { return model.listObjectsOfProperty( model.createProperty(WON_TX.COORDINATION_MESSAGE.getURI())); } }); if (ni.hasNext()) { String coordinationMessageUri = ni.toList().get(0).asResource().getURI().toString(); if (coordinationMessageUri.equals(WON_TX.COORDINATION_MESSAGE_ABORT.getURI().toString())) logger.debug("Sent COORDINATION_MESSAGE: {}", coordinationMessageUri); else logger.error( "Content of the COORDINATION_MESSAGE must be: {}. Currently it is: {}", WON_TX.COORDINATION_MESSAGE_ABORT.getURI(), coordinationMessageUri); } } List<URI> toDeactivate = getEventListenerContext().getBotContext().listNeedUris(); for (URI uri : toDeactivate) { getEventListenerContext().getOwnerService().deactivate(uri, createWonMessage(uri)); getEventListenerContext().getEventBus().publish(new NeedDeactivatedEvent(uri)); } }
@Override public void process(final Exchange exchange) throws Exception { WonMessage message = (WonMessage) exchange.getIn().getHeader(WonCamelConstants.MESSAGE_HEADER); sendMessageToOwner( message, message.getReceiverNeedURI(), (String) exchange.getIn().getHeader(WonCamelConstants.OWNER_APPLICATION_ID)); }
@Override public boolean matches(final Exchange exchange) { WonMessage wonMessage = (WonMessage) exchange.getIn().getHeader(WonCamelConstants.MESSAGE_HEADER); WonMessageType messageType = wonMessage.getMessageType(); switch (messageType) { case DEACTIVATE: return false; case ACTIVATE: return false; case CREATE_NEED: return false; case SUCCESS_RESPONSE: return false; case FAILURE_RESPONSE: return false; } return true; }