package axisdoc;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import org.apache.axis.utils.Options;
import org.apache.axis.utils.XMLUtils;
import java.lang.*;
import org.apache.axis.message.SOAPBodyElement;

import org.apache.axis.utils.XMLUtils;
import org.w3c.dom.Element;
import org.w3c.dom.CDATASection;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.*;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import java.net.URL;
import java.util.Vector;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.apache.axis.message.SOAPEnvelope;
import javax.xml.namespace.QName;
import org.apache.axis.message.SOAPHeader;
import javax.xml.soap.Name;
import org.apache.axis.message.SOAPEnvelope;
import org.apache.axis.message.SOAPHeaderElement;


public class EnvelopeService{
	public void getDetail(SOAPEnvelope req, SOAPEnvelope resp)
		{
			try{

//resp=req.cloneNode(true);

					System.out.println();
					System.out.println();
					System.out.println("the request SOAPEnvelope");
					System.out.println();



					Document document1 = req.getAsDocument();
					XMLUtils.DocumentToStream(document1,System.out);


					System.out.println();
					System.out.println();
					System.out.println();
					System.out.println();

					SOAPHeader header = (SOAPHeader)req.getHeader();

					Document document4 = header.getAsDocument();
					XMLUtils.DocumentToStream(document4,System.out);

					GetSession g= new GetSession();
					String sessionVal=g.getSessionID(document4);

					System.out.println("The session val is#####"+ sessionVal);
					//Document document3 = ((SOAPBodyElement)req.getBody()).getAsDocument();

					// adding the body to the response envelope object

					SOAPEnvelope responseEnvelope=resp;
					DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
			        Document doc = builder.newDocument();
			        Element root = doc.createElementNS("EnvelopeService","getDetail");
			        doc.appendChild(root);
			        Element ele = doc.createElement("e1");
			        Node text = doc.createTextNode("akash");
			        ele.appendChild(text);
			        root.appendChild(ele);
			        SOAPBodyElement responseBody = new SOAPBodyElement(doc.getDocumentElement());
			        responseEnvelope.addBodyElement(responseBody);

					// SOAP body to the response added.. done !!

					Name name= responseEnvelope.createName("SESSIONID");
					responseEnvelope.getHeader().detachNode();
					SOAPHeader sh= (SOAPHeader)responseEnvelope.addHeader();
					SOAPHeaderElement shElement = (SOAPHeaderElement)sh.addHeaderElement(name);
					shElement.addTextNode(sessionVal);


					//printing the SOAPEnvelope..

					System.out.println();
					System.out.println();
					System.out.println("the reponse SOAPEnvelope");
					System.out.println();
					Document document2 = resp.getAsDocument();
					XMLUtils.DocumentToStream(document2,System.out);



					// cloning the request object
					//Document responseMessage = document1.cloneNode(true);


				}
				catch(Exception ee)
					{
						ee.printStackTrace();
					}
		}



}