/** * Return a deep clone of the given message * * @param message * @return */ protected Message cloneMessage(Message message) { Message clone = createMessage(message.getType()); clone.setMessage((Element) message.getMessage().cloneNode(true)); Map<String, Node> headerParts = message.getHeaderParts(); for (String partName : headerParts.keySet()) { clone.setHeaderPart(partName, (Element) headerParts.get(partName).cloneNode(true)); } Map<String, Node> parts = message.getHeaderParts(); for (String partName : parts.keySet()) { clone.setHeaderPart(partName, (Element) parts.get(partName).cloneNode(true)); } return clone; }
private void invokeProbeService(PartnerRoleMessageExchange prmx) { Message msg = prmx.getRequest(); Element elm1 = prmx.getRequest().getPart("probeName"); Element elm2 = prmx.getRequest().getPart("probeData"); if ( elm1 != null && elm2 != null ) { String cat = elm2.getTextContent()+" -> "+elm1.getTextContent(); elm2.setTextContent(cat); msg.setPart("probeData", elm2); final Message response = prmx.createMessage(prmx.getOperation().getOutput().getMessage().getQName()); response.setMessage(msg.getMessage()); prmx.reply(response); } }
/** * Get payload from a given ODEMessage * @param odeMessage - the ODE message * @return the payload of the Message, as a DOM Element */ private Element getPayload(Message odeMessage) { Element payload = null; // Get the message parts - these correspond to the message parts for the invocation // as defined in the WSDL for the service operation being invoked List<String> parts = odeMessage.getParts(); if( parts.size() == 0 ) return null; // For the present, just deal with the ** FIRST ** part // TODO Deal with operations that have messages with multiple parts // - that will require returning an array of Elements, one for each part Element part = odeMessage.getPart(parts.get(0)); // Get the payload which is the First child if (part != null && part.hasChildNodes()) { payload = (Element)part.getFirstChild(); } return payload; } // end getPayload
response.setMessage(odeMsgEl); SOAPUtils.parseResponseFromRESTService(partnerInvocationContext, odeMex); if (log.isDebugEnabled()) { log.debug("Response:\n" + (response.getMessage() != null ? DOMUtils.domToString(response.getMessage()) : "empty"));
static void setFaulted(MessageExchangeImpl mex, QName faultType, Element faultmsg) { mex.setStatus(Status.FAULT); Message flt = mex.createMessage(faultType); flt.setMessage(faultmsg); mex.setFault(faultType, flt); }
private Future invokeBPELProcessThroughODEMessageExchange( final MyRoleMessageExchange odeMessageExchange, final BPELMessageContext bpelMessageContext) throws AxisFault { Message request = createInputMessageToODE(bpelMessageContext, odeMessageExchange); if (log.isDebugEnabled()) { log.debug("Invoking ODE using MEX " + odeMessageExchange); log.debug("Message content: " + DOMUtils.domToString(request.getMessage())); } return odeMessageExchange.invoke(request, bpelMessageContext.getAttachmentIDList()); }
Message responseMsg = prmx.createMessage(responseMsgType); String ind1 = prmx.getRequest().getPart("faultIndicator1").getTextContent(); String ind2 = prmx.getRequest().getPart("faultIndicator2").getTextContent(); String inputData = prmx.getRequest().getPart("faultData").getTextContent(); faultMsg.setMessage(faultResponse); responseMsg.setMessage(response);
__log.trace("toNMS(odeMsg=" + odeMsg + ")"); Element srcMsgEl = odeMsg.getMessage(); Document doc = newDocument(); Element dstMsgEl = doc.createElementNS(URI_WSDL11_WRAPPER, "message"); dstMsgEl.setAttributeNS(DOMUtils.NS_URI_XMLNS, "xmlns:msgns", odeMsg.getType().getNamespaceURI()); dstMsgEl.setAttribute("version", "1.0"); dstMsgEl.setAttribute("type", "msgns:" + odeMsg.getType().getLocalPart());
Document doc = newDocument(); Element message = doc.createElement("message"); odeMsg.setMessage(message); if (__log.isDebugEnabled()) { __log.debug("toODE() normalized message:\n" + prettyPrint(message)); message.appendChild(p); p.appendChild(doc.importNode(nms, true)); odeMsg.setMessage(message); } else { __log.debug("toODE() rpc-like message "); __log.debug("toODE() ode message:\n" + prettyPrint(nms)); odeMsg.setMessage(nms); odeMsg.setHeaderPart(header.getLocalPart(), DOMUtils.stringToDOM(DOMUtils.domToString(headers.get(header)))); } catch (Exception e) { __log.error("Can't copy input header " + header);
throw new NullPointerException("msdef must not be null."); Map<String, Node> headers = odeMsg.getHeaderParts(); if (headers != null) { for (String header : headers.keySet()) { Element ode = odeMsg == null ? null : odeMsg.getMessage(); Element part = ode == null ? null : DOMUtils.getFirstChildElement(ode); Element firstPartEl = part == null ? null : DOMUtils.getFirstChildElement(part);
final javax.wsdl.extensions.soap.SOAPHeader soapHeaderElementDefinition) throws BPELFault { Map<String, Node> headerParts = messageFromOde.getHeaderParts(); if (messageFromOde.getPart(soapHeaderElementDefinition.getPart()) != null) { partElement = messageFromOde.getPart( soapHeaderElementDefinition.getPart()); } else { if (partElement == null && messageFromOde.getParts().size() > 0 && !isHeaderElementAPartOfPayload) { try { partElement = (Element) messageFromOde.getPart(soapHeaderElementDefinition.getPart()); } catch (ClassCastException e) { throw new BPELFault("Soap header must be an element" + messageFromOde.getPart (soapHeaderElementDefinition.getPart()));
/** * Fill the ODE's message object with the WSDL message parts processed at the message receiver. * * @param odeRequest Request message pass in to BPEL engine * @param inComingMessage incoming request from message receiver */ private void fillODEMessage(final Message odeRequest, final WSDLAwareMessage inComingMessage) { Map<String, OMElement> bodyParts = inComingMessage.getBodyParts(); Map<String, OMElement> headerParts = inComingMessage.getHeaderParts(); for (Map.Entry<String, OMElement> bodyPart : bodyParts.entrySet()) { if (inComingMessage.isRPC()) { /* In RPC Style messages parent element's name is equal to the part name.*/ odeRequest.setPart(bodyPart.getKey(), OMUtils.toDOM(bodyPart.getValue())); } else { /* in document style there isn't any relationship between part name and element * names. therefore we wrap document style message parts with a element which * has part name as it's local name. */ Document doc = DOMUtils.newDocument(); Element destPart = doc.createElementNS(null, bodyPart.getKey()); destPart.appendChild(doc.importNode(OMUtils.toDOM(bodyPart.getValue()), true)); odeRequest.setPart(bodyPart.getKey(), destPart); } } for (Map.Entry<String, OMElement> headerPart : headerParts.entrySet()) { odeRequest.setHeaderPart(headerPart.getKey(), OMUtils.toDOM(headerPart.getValue())); } }
private static void extractSoapHeaderParts(org.apache.ode.bpel.iapi.Message message, Definition wsdl, org.apache.axiom.soap.SOAPHeader soapHeader, List<javax.wsdl.extensions.soap.SOAPHeader> headerDefs, Message msg) throws BPELFault { // Checking that the definitions we have are at least there for (javax.wsdl.extensions.soap.SOAPHeader headerDef : headerDefs) { handleSoapHeaderPartDef(message, wsdl, soapHeader, headerDef, msg); } // Extracting whatever header elements we find in the message, binding and abstract parts // aren't reliable enough given what people do out there. Iterator headersIter = soapHeader.getChildElements(); while (headersIter.hasNext()) { OMElement header = (OMElement) headersIter.next(); String partName = findHeaderPartName(headerDefs, wsdl, header.getQName()); message.setHeaderPart(partName, OMUtils.toDOM(header)); } }
private static void populateSOAPHeaders( org.apache.ode.bpel.iapi.Message messageFromOde, SOAPEnvelope soapEnvelope, SOAPFactory soapFactory, List<javax.wsdl.extensions.soap.SOAPHeader> soapHaderDefinitions, Operation operation ) throws BPELFault { if (messageFromOde.getHeaderParts().size() > 0 || soapHaderDefinitions.size() > 0) { for (javax.wsdl.extensions.soap.SOAPHeader soapHeaderDefinition : soapHaderDefinitions) { handleSOAPHeaderElementsInBindingOperation( soapEnvelope, soapFactory, messageFromOde, operation, soapHeaderDefinition); } org.apache.axiom.soap.SOAPHeader soapHeader = soapEnvelope.getHeader(); if (soapHeader == null) { soapHeader = soapFactory.createSOAPHeader(soapEnvelope); } for (Node headerNode : messageFromOde.getHeaderParts().values()) { if (headerNode.getNodeType() == Node.ELEMENT_NODE) { addSOAPHeaderBock(soapHeader, headerNode, soapFactory); } else { throw new BPELFault("SOAP Header Must be an Element"); } } } }
fault.getName()); Message response = odeMex.createMessage(faultType); response.setMessage(odeMsgEl); log.warn("Fault response: " + DOMUtils.domToString(odeMsgEl)); response.setMessage(odeMsgEl); odeMex.replyWithFault(faultType, response); SOAPUtils.parseSOAPResponseFromPartner(partnerInvocationContext, odeMex); if (log.isDebugEnabled()) { log.debug("Response:\n" + (response.getMessage() != null ? DOMUtils.domToString(response.getMessage()) : "empty"));
request.setMessage(dom.getDocumentElement());
case RESPONSE: response = processResponse(mex.getResponse().getMessage()); if (__log.isDebugEnabled()) __log.debug("Response message " + response);
assert partdef.getElementName() != null : "non-element part!"; if (odeMsg.getMessage() == null) { String errmsg = "Unknown fault: " + odeMsg.getType(); __log.debug(errmsg); throw new MessageTranslationException(errmsg); Element part = DOMUtils.findChildByName(odeMsg.getMessage(),new QName(null, partdef.getName())); if (part == null) { String errmsg = "ODE message did not contain expected part: " + partdef.getName();
odeMessage.setHeaderPart(p.getName(), OMUtils.toDOM(headerEl));