Created
August 15, 2015 11:14
-
-
Save mh-github/a953c352f1c089be453f to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package com.mh.project.service; | |
| import java.io.ByteArrayOutputStream; | |
| import java.io.StringReader; | |
| import java.util.logging.Logger; | |
| import javax.annotation.Resource; | |
| import javax.jws.HandlerChain; | |
| import javax.xml.parsers.DocumentBuilder; | |
| import javax.xml.parsers.DocumentBuilderFactory; | |
| import javax.xml.transform.Source; | |
| import javax.xml.transform.Transformer; | |
| import javax.xml.transform.TransformerFactory; | |
| import javax.xml.transform.dom.DOMSource; | |
| import javax.xml.transform.stream.StreamResult; | |
| import javax.xml.transform.stream.StreamSource; | |
| import javax.xml.ws.Provider; | |
| import javax.xml.ws.Service; | |
| import javax.xml.ws.ServiceMode; | |
| import javax.xml.ws.WebServiceContext; | |
| import javax.xml.ws.WebServiceProvider; | |
| import org.apache.cxf.jaxws.context.WrappedMessageContext; | |
| import org.apache.cxf.message.Message; | |
| import org.w3c.dom.Document; | |
| import org.w3c.dom.Text; | |
| import com.mh.project.util.Customer; | |
| import com.mh.project.util.CustomerCalculator; | |
| @ServiceMode(Service.Mode.PAYLOAD) | |
| @HandlerChain(file = "mySoap_handler.xml") | |
| @WebServiceProvider(wsdlLocation = "WEB-INF/wsdl/Customer.wsdl", targetNamespace = "http://www.mh.org/", serviceName = "CustomerService", portName = "CustomerPort") | |
| public class CustomerEndpoint implements Provider<Source> { | |
| @Resource | |
| WebServiceContext webServiceContext; | |
| private static final Logger LOG = Logger | |
| .getLogger(CustomerEndpoint.class.getName()); | |
| public Source invoke(Source request) { | |
| LOG.info("Entered invoke method ... "); | |
| ByteArrayOutputStream baos = null; | |
| try { | |
| // 1. get customer object populated in handler | |
| WrappedMessageContext wmc = (WrappedMessageContext) webServiceContext | |
| .getMessageContext(); | |
| Message msg = wmc.getWrappedMessage(); | |
| Customer customer = (customer) msg.get("customer"); | |
| // 2. business logic: calculate score | |
| double score = new CustomerCalculator().calculate(customer); | |
| LOG.info(Double.valueOf(score).toString()); | |
| // 3. return the score | |
| DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance(); | |
| DocumentBuilder docBuilder = dbfac.newDocumentBuilder(); | |
| Document respDoc = docBuilder.newDocument(); | |
| org.w3c.dom.Element rootElement = respDoc | |
| .createElement("resp"); | |
| org.w3c.dom.Element childElement = respDoc.createElement("score"); | |
| Text textNode = respDoc.createTextNode(Double.valueOf(score) | |
| .toString()); | |
| respDoc.appendChild(rootElement); | |
| rootElement.appendChild(childElement); | |
| childElement.appendChild(textNode); | |
| Transformer xformer = TransformerFactory.newInstance() | |
| .newTransformer(); | |
| baos = new ByteArrayOutputStream(); | |
| xformer.transform(new DOMSource(respDoc), new StreamResult(baos)); | |
| } catch (Exception e) { | |
| e.printStackTrace(); | |
| } | |
| return new StreamSource(new StringReader(baos.toString())); | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment