KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > ofbiz > shipment > thirdparty > usps > UspsMockApiServlet


1 package org.ofbiz.shipment.thirdparty.usps;
2
3 import java.io.ByteArrayOutputStream JavaDoc;
4 import java.io.IOException JavaDoc;
5 import java.io.OutputStream JavaDoc;
6 import java.util.Iterator JavaDoc;
7 import java.util.List JavaDoc;
8
9 import javax.servlet.ServletConfig JavaDoc;
10 import javax.servlet.ServletException JavaDoc;
11 import javax.servlet.ServletOutputStream JavaDoc;
12 import javax.servlet.http.HttpServlet JavaDoc;
13 import javax.servlet.http.HttpServletRequest JavaDoc;
14 import javax.servlet.http.HttpServletResponse JavaDoc;
15 import javax.xml.parsers.ParserConfigurationException JavaDoc;
16
17 import org.ofbiz.base.util.UtilValidate;
18 import org.ofbiz.base.util.UtilXml;
19 import org.ofbiz.base.util.Debug;
20
21 import org.apache.xml.serialize.OutputFormat;
22 import org.apache.xml.serialize.XMLSerializer;
23 import org.w3c.dom.Document JavaDoc;
24 import org.w3c.dom.Element JavaDoc;
25 import org.xml.sax.SAXException JavaDoc;
26
27 /**
28  * USPS Webtools API Mock API Servlet
29  *
30  * @author <a HREF="mailto:eckardjf@pobox.com">J. Eckard</a>
31  * @version $Rev: 5462 $
32  * @since 3.2
33  */

34 public class UspsMockApiServlet extends HttpServlet JavaDoc {
35
36     public static final String JavaDoc module = UspsMockApiServlet.class.getName();
37
38
39     public UspsMockApiServlet() {
40         super();
41     }
42
43     public void init(ServletConfig JavaDoc config) throws ServletException JavaDoc {
44         super.init(config);
45     }
46
47     public void doPost(HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response) throws ServletException JavaDoc, IOException JavaDoc {
48         doGet(request, response);
49     }
50
51     public void doGet(HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response) throws ServletException JavaDoc, IOException JavaDoc {
52
53         // we're only testing the Rate API right now
54
if (!"Rate".equals(request.getParameter("API"))) {
55             Debug.logError("Unsupported API [" + request.getParameter("API") + "]", module);
56             return;
57         }
58
59         String JavaDoc xmlValue = request.getParameter("XML");
60         Document JavaDoc requestDocument = null;
61         try {
62             requestDocument = UtilXml.readXmlDocument(xmlValue, false);
63         } catch (SAXException JavaDoc se) {
64             Debug.logError(se, module);
65             return;
66         } catch (ParserConfigurationException JavaDoc pce) {
67             Debug.logError(pce, module);
68             return;
69         } catch (IOException JavaDoc xmlReadException) {
70             Debug.logError(xmlReadException, module);
71             return;
72         }
73         
74         if (requestDocument == null) {
75             Debug.logError("In UspsMockApiSerlvet No XML document found in request, quiting now; XML parameter is: " + xmlValue, module);
76             return;
77         }
78
79         List JavaDoc packageElementList = UtilXml.childElementList(requestDocument.getDocumentElement(), "Package");
80         if (UtilValidate.isNotEmpty(packageElementList)) {
81
82             Document JavaDoc responseDocument = UtilXml.makeEmptyXmlDocument("RateResponse");
83             for (Iterator JavaDoc i = packageElementList.iterator(); i.hasNext();) {
84                 Element JavaDoc packageElement = (Element JavaDoc) i.next();
85
86                 Element JavaDoc responsePackageElement =
87                         UtilXml.addChildElement(responseDocument.getDocumentElement(), "Package", responseDocument);
88                 responsePackageElement.setAttribute("ID", packageElement.getAttribute("ID"));
89
90                 UtilXml.addChildElementValue(responsePackageElement, "ZipOrigination",
91                         UtilXml.childElementValue(packageElement, "ZipOrigination"), responseDocument);
92
93                 UtilXml.addChildElementValue(responsePackageElement, "ZipDestination",
94                         UtilXml.childElementValue(packageElement, "ZipDestination"), responseDocument);
95
96                 UtilXml.addChildElementValue(responsePackageElement, "Pounds",
97                         UtilXml.childElementValue(packageElement, "Pounds"), responseDocument);
98
99                 UtilXml.addChildElementValue(responsePackageElement, "Ounces",
100                         UtilXml.childElementValue(packageElement, "Ounces"), responseDocument);
101
102                 UtilXml.addChildElementValue(responsePackageElement, "Container",
103                         UtilXml.childElementValue(packageElement, "Container"), responseDocument);
104
105                 UtilXml.addChildElementValue(responsePackageElement, "Size",
106                         UtilXml.childElementValue(packageElement, "Size"), responseDocument);
107
108                 UtilXml.addChildElementValue(responsePackageElement, "Zone", "1", responseDocument);
109                 UtilXml.addChildElementValue(responsePackageElement, "Postage", "3.00", responseDocument);
110             }
111
112             OutputStream JavaDoc os = new ByteArrayOutputStream JavaDoc();
113
114             OutputFormat format = new OutputFormat(responseDocument);
115             format.setOmitDocumentType(true);
116             format.setOmitXMLDeclaration(false);
117             format.setIndenting(false);
118
119             XMLSerializer serializer = new XMLSerializer(os, format);
120             try {
121                 serializer.asDOMSerializer();
122                 serializer.serialize(responseDocument.getDocumentElement());
123             } catch (IOException JavaDoc e) {
124                 Debug.log(e, module);
125                 return;
126             }
127
128             response.setContentType("text/xml");
129             ServletOutputStream JavaDoc sos = response.getOutputStream();
130             sos.print(os.toString());
131             sos.flush();
132         }
133     }
134
135     public void destroy() {
136         super.destroy();
137     }
138 }
139
Popular Tags