1 package org.objectweb.celtix.systest.provider; 2 3 import java.io.InputStream ; 4 5 import javax.xml.namespace.QName ; 6 import javax.xml.soap.MessageFactory ; 7 import javax.xml.soap.SOAPBody ; 8 import javax.xml.soap.SOAPMessage ; 9 import javax.xml.transform.stream.StreamSource ; 10 import javax.xml.ws.Provider; 11 import javax.xml.ws.Service; 12 import javax.xml.ws.ServiceMode; 13 import javax.xml.ws.WebServiceProvider; 14 15 import org.w3c.dom.Node ; 16 17 18 19 @WebServiceProvider(portName = "SoapPortRPCLit4", serviceName = "SOAPServiceRPCLit4", 22 targetNamespace = "http://objectweb.org/hello_world_rpclit", 23 wsdlLocation = "/wsdl/hello_world_rpc_lit.wsdl") 24 @ServiceMode(value = Service.Mode.MESSAGE) 25 public class HWStreamSourceMessageProvider implements Provider<StreamSource > { 26 27 private static QName sayHi = new QName ("http://objectweb.org/hello_world_rpclit", "sayHi"); 28 private static QName greetMe = new QName ("http://objectweb.org/hello_world_rpclit", "greetMe"); 29 private InputStream sayHiInputStream; 30 private InputStream greetMeInputStream; 31 private MessageFactory factory; 32 33 public HWStreamSourceMessageProvider() { 34 35 try { 36 factory = MessageFactory.newInstance(); 37 sayHiInputStream = getClass().getResourceAsStream("resources/sayHiRpcLiteralResp.xml"); 38 greetMeInputStream = getClass().getResourceAsStream("resources/GreetMeRpcLiteralResp.xml"); 39 40 } catch (Exception ex) { 41 ex.printStackTrace(); 42 } 43 } 44 45 public StreamSource invoke(StreamSource request) { 46 StreamSource response = new StreamSource (); 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.setInputStream(sayHiInputStream); 58 } else if (n.getLocalName().equals(greetMe.getLocalPart())) { 59 response.setInputStream(greetMeInputStream); 60 } 61 } catch (Exception ex) { 62 ex.printStackTrace(); 63 } 64 return response; 65 } 66 67 } 68 | Popular Tags |