private JAXBMessage adaptMessage(Message msg) { JAXBMessage jaxbMsg = new JAXBMessage(); jaxbMsg.setName(msg.getName()); jaxbMsg.setFromRef(getParticipant(msg.getFromRef())); jaxbMsg.setToRef(getParticipant(msg.getToRef())); for (Property prop : msg.getProperties()) { JAXBProperty jaxbProp = getJaxbProperty(prop); jaxbMsg.getProperties().add(jaxbProp); } return jaxbMsg; }
public synchronized void catchMessage(Message message) String msgName = message.getName(); if (messageRef.getName().equals(msgName)) for (Property prop : messageRef.getProperties()) if (message.getProperty(name) == null) throw new IllegalArgumentException("Received message does not contain expected property: " + name);
MessageBuilder msgBuilder = factory.newMessageBuilder(); Participant toRef = messageRef.getToRef(); if (toRef == null || toRef.getEntityRef() == null) throw new IllegalStateException("Cannot obtain target participant"); msgBuilder.newMessage(messageRef.getName()); msgBuilder.addToRef(targetID); for (Property auxProp : messageRef.getProperties())
private JAXBMessageRef adaptMessageRef(JAXBProcess jaxbProc, Message msgRef) { String msgName = msgRef.getName(); JAXBMessage jaxbMsg = jaxbProc.getMessageByName(msgName); JAXBMessageRef jaxbMsgRef = new JAXBMessageRef(); jaxbMsgRef.setNameRef(msgName); String fromStr = getParticipant(msgRef.getFromRef()); if (fromStr != null && fromStr.equals(jaxbMsg.getFromRef()) == false) jaxbMsgRef.setFromRef(fromStr); String toStr = getParticipant(msgRef.getToRef()); if (toStr != null && toStr.equals(jaxbMsg.getToRef()) == false) jaxbMsgRef.setToRef(toStr); return jaxbMsgRef; }
@Override protected void create(Process proc) { super.create(proc); if (messageRef == null) throw new InvalidProcessException("A Message for the MessageRef attribute MUST be entered"); ProcessImpl procImpl = (ProcessImpl)proc; procImpl.initializeMessageRef(messageRef); if (messageRef.getToRef() == null) throw new IllegalArgumentException("Message targetID cannot be null for: " + this); } }
@Override public synchronized void defaultExecution(Token token) { if (receivedMessages.size() > 0) { // Copy the expected properties from the // received message to the execution context Message msg = receivedMessages.get(0); ExecutionContext exContext = token.getExecutionContext(); for (Property prop : messageRef.getProperties()) { String key = prop.getName(); Object value = msg.getPropertyValue(key); exContext.addAttachment(key, value); } // Call default execute super.defaultExecution(token); } }
public Message getMessage(String msgName) { for (Message msg : messages) { if (msg.getName().equals(msgName)) return msg; } return null; }
/** * Send a message to a given {@link MessageListener} */ public void sendMessage(Message msg) { Participant toRef = msg.getToRef().getEntityRef(); if (toRef == null) throw new IllegalArgumentException("Target entity cannot be null"); MessageListener msgListener = getMessageListener(toRef.getName()); if (msgListener == null) throw new IllegalStateException("No message listener registered for: " + toRef); log.debug("sendMessage to '" + toRef + "' => " + msg); msgListener.catchMessage(msg); } }
public void addMessage(Message msg) { if (getMessage(msg.getName()) != null) throw new InvalidProcessException("Duplicate message: " + msg); messages.add(msg); }
protected void initializeMessageRef(Message msgRef) { String msgName = msgRef.getName(); MessageImpl procMsg = (MessageImpl)getMessage(msgName); if (procMsg == null) throw new IllegalStateException("Cannot obtain process message: " + msgName); MessageImpl msgImpl = (MessageImpl)msgRef; if (msgImpl.getFromRef() == null && procMsg.getFromRef() != null) msgImpl.setFromRef(procMsg.getFromRef()); if (msgImpl.getToRef() == null && procMsg.getToRef() != null) msgImpl.setToRef(procMsg.getToRef()); for (Property prop : procMsg.getProperties()) ((MessageImpl)msgRef).addProperty(prop); }