1 package org.ofbiz.shipment.thirdparty.usps; 2 3 import java.io.ByteArrayOutputStream ; 4 import java.io.IOException ; 5 import java.io.OutputStream ; 6 import java.util.Iterator ; 7 import java.util.List ; 8 9 import javax.servlet.ServletConfig ; 10 import javax.servlet.ServletException ; 11 import javax.servlet.ServletOutputStream ; 12 import javax.servlet.http.HttpServlet ; 13 import javax.servlet.http.HttpServletRequest ; 14 import javax.servlet.http.HttpServletResponse ; 15 import javax.xml.parsers.ParserConfigurationException ; 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 ; 24 import org.w3c.dom.Element ; 25 import org.xml.sax.SAXException ; 26 27 34 public class UspsMockApiServlet extends HttpServlet { 35 36 public static final String module = UspsMockApiServlet.class.getName(); 37 38 39 public UspsMockApiServlet() { 40 super(); 41 } 42 43 public void init(ServletConfig config) throws ServletException { 44 super.init(config); 45 } 46 47 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException , IOException { 48 doGet(request, response); 49 } 50 51 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException , IOException { 52 53 if (!"Rate".equals(request.getParameter("API"))) { 55 Debug.logError("Unsupported API [" + request.getParameter("API") + "]", module); 56 return; 57 } 58 59 String xmlValue = request.getParameter("XML"); 60 Document requestDocument = null; 61 try { 62 requestDocument = UtilXml.readXmlDocument(xmlValue, false); 63 } catch (SAXException se) { 64 Debug.logError(se, module); 65 return; 66 } catch (ParserConfigurationException pce) { 67 Debug.logError(pce, module); 68 return; 69 } catch (IOException 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 packageElementList = UtilXml.childElementList(requestDocument.getDocumentElement(), "Package"); 80 if (UtilValidate.isNotEmpty(packageElementList)) { 81 82 Document responseDocument = UtilXml.makeEmptyXmlDocument("RateResponse"); 83 for (Iterator i = packageElementList.iterator(); i.hasNext();) { 84 Element packageElement = (Element ) i.next(); 85 86 Element 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 os = new ByteArrayOutputStream (); 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 e) { 124 Debug.log(e, module); 125 return; 126 } 127 128 response.setContentType("text/xml"); 129 ServletOutputStream 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 |