package IA_PACKAGE; import java.util.HashMap; import java.util.List; import java.util.Map.Entry; import javax.annotation.Resource; import javax.xml.ws.WebServiceContext; import org.apache.cxf.headers.Header; import org.apache.cxf.helpers.CastUtils; import org.apache.cxf.jaxws.context.WrappedMessageContext; import org.apache.cxf.message.Message; import org.w3c.dom.Node; import org.eclipse.winery.highlevelrestapi.HighLevelRestApi; public abstract class AbstractIAService { @Resource private WebServiceContext context; protected void sendResponse (HashMap returnParameters) { // Extract message WrappedMessageContext wrappedContext = (WrappedMessageContext) context.getMessageContext(); Message message = wrappedContext.getWrappedMessage(); // Extract headers from message List
headers = CastUtils.cast((List) message.get(Header.HEADER_LIST)); // Find ReplyTo and MessageID SOAP Header String replyTo = null; String messageID = null; for (Header iter : headers) { Object headerObject = iter.getObject(); // Unmarshall to org.w3c.dom.Node if (headerObject instanceof Node) { Node node = (Node) headerObject; String localPart = iter.getName().getLocalPart(); String content = node.getTextContent(); // Extract ReplyTo Header value if ("ReplyTo".equals(localPart)) { replyTo = content; } // Extract MessageID Header value if ("MessageID".equals(localPart)) { messageID = content; } } } // Create asynchronous SOAP Response Message StringBuilder builder = new StringBuilder(); builder.append(""); builder.append(" "); builder.append(" "); builder.append(" "); builder.append(" " + messageID + ""); // Insert return parameters into asynchronous SOAP Response Message for (Entry paramIter : returnParameters.entrySet()) { String key = paramIter.getKey(); String value = paramIter.getValue(); builder.append(" <" + key + ">" + value + ""); } builder.append(" "); builder.append(" "); builder.append(""); // Send SOAP Response Message back to requester if(replyTo == null) { System.err.println("No 'ReplyTo' header found!\nTherefore, reply message is printed here:\n" + builder.toString()); } else { HighLevelRestApi.Post(replyTo, builder.toString(), ""); } } }