1 package org.objectweb.celtix.systest.provider; 2 import java.io.InputStream ; 3 4 import javax.xml.namespace.QName ; 5 import javax.xml.soap.MessageFactory ; 6 import javax.xml.soap.SOAPBody ; 7 import javax.xml.soap.SOAPMessage ; 8 import javax.xml.transform.dom.DOMSource ; 9 import javax.xml.ws.Provider; 10 import javax.xml.ws.Service; 11 import javax.xml.ws.ServiceMode; 12 import javax.xml.ws.WebServiceProvider; 13 14 import org.w3c.dom.Node ; 15 16 @WebServiceProvider(portName = "SoapPortRPCLit1", serviceName = "SOAPServiceRPCLit1", 19 targetNamespace = "http://objectweb.org/hello_world_rpclit", 20 wsdlLocation = "/wsdl/hello_world_rpc_lit.wsdl") 21 @ServiceMode(value = Service.Mode.MESSAGE) 22 public class HWDOMSourceMessageProvider implements Provider<DOMSource > { 23 24 private static QName sayHi = new QName ("http://objectweb.org/hello_world_rpclit", "sayHi"); 25 private static QName greetMe = new QName ("http://objectweb.org/hello_world_rpclit", "greetMe"); 26 private SOAPMessage sayHiResponse; 27 private SOAPMessage greetMeResponse; 28 private MessageFactory factory; 29 30 public HWDOMSourceMessageProvider() { 31 32 try { 33 factory = MessageFactory.newInstance(); 34 InputStream is = getClass().getResourceAsStream("resources/sayHiRpcLiteralResp.xml"); 35 sayHiResponse = factory.createMessage(null, is); 36 is.close(); 37 is = getClass().getResourceAsStream("resources/GreetMeRpcLiteralResp.xml"); 38 greetMeResponse = factory.createMessage(null, is); 39 is.close(); 40 } catch (Exception ex) { 41 ex.printStackTrace(); 42 } 43 } 44 45 public DOMSource invoke(DOMSource request) { 46 DOMSource response = new DOMSource (); 47 try { 48 SOAPMessage msg = factory.createMessage(); 49 msg.getSOAPPart().setContent(request); 50 SOAPBody body = msg.getSOAPBody(); 51 Node n = body.getFirstChild(); 52 53 while (n.getNodeType() != Node.ELEMENT_NODE) { 54 n = n.getNextSibling(); 55 } 56 if (n.getLocalName().equals(sayHi.getLocalPart())) { 57 response.setNode(sayHiResponse.getSOAPPart()); 58 } else if (n.getLocalName().equals(greetMe.getLocalPart())) { 59 response.setNode(greetMeResponse.getSOAPPart()); 60 } 61 } catch (Exception ex) { 62 ex.printStackTrace(); 63 } 64 return response; 65 } 66 } 67 | Popular Tags |