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.ws.Provider; 9 import javax.xml.ws.Service; 10 import javax.xml.ws.ServiceMode; 11 import javax.xml.ws.WebServiceProvider; 12 13 import org.w3c.dom.Node ; 14 15 @WebServiceProvider(portName = "SoapPortRPCLit", serviceName = "SOAPServiceRPCLit", 18 targetNamespace = "http://objectweb.org/hello_world_rpclit", 19 wsdlLocation = "/wsdl/hello_world_rpc_lit.wsdl") 20 @ServiceMode(value = Service.Mode.MESSAGE) 21 public class HWSoapMessageProvider implements Provider<SOAPMessage > { 22 23 private static QName sayHi = new QName ("http://objectweb.org/hello_world_rpclit", "sayHi"); 24 private static QName greetMe = new QName ("http://objectweb.org/hello_world_rpclit", "greetMe"); 25 private SOAPMessage sayHiResponse; 26 private SOAPMessage greetMeResponse; 27 28 public HWSoapMessageProvider() { 29 30 try { 31 MessageFactory factory = MessageFactory.newInstance(); 32 InputStream is = getClass().getResourceAsStream("resources/sayHiRpcLiteralResp.xml"); 33 sayHiResponse = factory.createMessage(null, is); 34 is.close(); 35 is = getClass().getResourceAsStream("resources/GreetMeRpcLiteralResp.xml"); 36 greetMeResponse = factory.createMessage(null, is); 37 is.close(); 38 } catch (Exception ex) { 39 ex.printStackTrace(); 40 } 41 } 42 43 public SOAPMessage invoke(SOAPMessage request) { 44 SOAPMessage response = null; 45 try { 46 SOAPBody body = request.getSOAPBody(); 47 Node n = body.getFirstChild(); 48 49 while (n.getNodeType() != Node.ELEMENT_NODE) { 50 n = n.getNextSibling(); 51 } 52 if (n.getLocalName().equals(sayHi.getLocalPart())) { 53 response = sayHiResponse; 54 } else if (n.getLocalName().equals(greetMe.getLocalPart())) { 55 response = greetMeResponse; 56 } 57 } catch (Exception ex) { 58 ex.printStackTrace(); 59 } 60 return response; 61 } 62 } 63 | Popular Tags |