package soapExample;

import java.util.*;
import javax.servlet.*;
import javax.xml.soap.*;
import javax.servlet.http.*;
import javax.xml.messaging.*;

public class ch18_02 extends JAXMServlet implements ReqRespListener
{
    static MessageFactory factory = null;
    
    public void init(ServletConfig servletConfig) throws ServletException 
    {
        super.init(servletConfig);
        try {
            factory = MessageFactory.newInstance();
        } catch (Exception ex) {}
    }
    
    public SOAPMessage onMessage(SOAPMessage msg) 
    {
        try {
            SOAPPart soappart = msg.getSOAPPart();
            SOAPEnvelope incomingEnvelope = soappart.getEnvelope();
            SOAPBody body = incomingEnvelope.getBody();

            Iterator it = body.getChildElements(
            incomingEnvelope.createName("NumberInStock", "pens", "http://www.starpowder.com"));
        
            SOAPElement element;
            element = (SOAPElement) it.next();


            SOAPMessage message = factory.createMessage();
            SOAPEnvelope envelope = message.getSOAPPart().getEnvelope();
            
            envelope.getBody().addChildElement(envelope.createName("Response")).addTextNode(
                "Thanks for the SOAP message telling me there are " + element.getValue() + 
                " pens in stock"
            );

            return message;
        } catch(Exception e) {
            return null;
        }
    }
}

