snichol 2003/06/12 10:37:18
Modified: java/samples/messaging POProcessor.java SendMessage.java Log: Add some "real" processing to POProcessor. Added copyright, etc. Revision Changes Path 1.4 +129 -6 xml-soap/java/samples/messaging/POProcessor.java Index: POProcessor.java =================================================================== RCS file: /home/cvs/xml-soap/java/samples/messaging/POProcessor.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- POProcessor.java 16 Jan 2001 15:22:42 -0000 1.3 +++ POProcessor.java 12 Jun 2003 17:37:18 -0000 1.4 @@ -1,22 +1,145 @@ +/* + * The Apache Software License, Version 1.1 + * + * + * Copyright (c) 2000 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "SOAP" and "Apache Software Foundation" must + * not be used to endorse or promote products derived from this + * software without prior written permission. For written + * permission, please contact [EMAIL PROTECTED] + * + * 5. Products derived from this software may not be called "Apache", + * nor may "Apache" appear in their name, without prior written + * permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation and was + * originally based on software copyright (c) 2000, International + * Business Machines, Inc., http://www.apache.org. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ package samples.messaging; -import java.io.*; +import java.util.Vector; +import org.w3c.dom.Attr; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; import org.apache.soap.*; import org.apache.soap.rpc.SOAPContext; -import javax.mail.MessagingException; /** * This class receives the PO via a "purchaseOrder" method and does * something with it. * - * @author Sanjiva Weerawarana <[EMAIL PROTECTED]> + * @author Sanjiva Weerawarana <[EMAIL PROTECTED]> + * @author Scott Nichol <[EMAIL PROTECTED]> */ public class POProcessor { public void purchaseOrder (Envelope env, SOAPContext reqCtx, SOAPContext resCtx) - throws MessagingException, IOException { - resCtx.setRootPart("OK thanks, got the PO; we'll contact you when ready.", - "text/xml"); + throws Exception { + + String orderDate = null; + Node shipTo = null; + Node billTo = null; + Node items = null; + + Body b = env.getBody(); + Vector entries = b.getBodyEntries(); + for (int i = 0; i < entries.size(); i++) { + Element e = (Element) entries.elementAt(i); + String nodeName = e.getNodeName(); + if (nodeName.equals("purchaseOrder")) { +System.out.println("Have purchaseOrder"); + NodeList children = e.getChildNodes(); + for (int j = 0; j < children.getLength(); j++) { + Node n = children.item(j); +System.out.println("Node " + j + " type " + n.getNodeType()); + switch (n.getNodeType()) { + case Node.ELEMENT_NODE: +System.out.println("Element " + n.getNodeName()); + if (n.getNodeName().equals("shipTo")) + shipTo = n; + else if (n.getNodeName().equals("billTo")) + billTo = n; + else if (n.getNodeName().equals("items")) + items = n; + else if (!n.getNodeName().equals("comment")) + throw new Exception("Unknown element name: " + n.getNodeName()); + break; + case Node.ATTRIBUTE_NODE: +System.out.println("Attribute " + n.getNodeName()); + if (n.getNodeName().equals("orderDate")) + orderDate = ((Attr) n).getValue(); + break; + } + } + if (orderDate == null) + orderDate = e.getAttribute("orderDate"); + } + } + + if (orderDate == null) + throw new Exception("No order date specified"); + if (shipTo == null) + throw new Exception("No ship to specified"); + if (billTo == null) + throw new Exception("No bill to specified"); + if (items == null) + throw new Exception("No items specified"); + + StringBuffer response = new StringBuffer(1024); + response.append(Constants.XML_DECL) + .append("<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\">") + .append("<SOAP-ENV:Body>") + .append("<purchaseOrderResponse xmlns=\"urn:po-processor\">") + .append("<return>") + .append("OK thanks, got the PO for orderDate ") + .append(orderDate) + .append("; we'll contact you when ready.") + .append("</return>") + .append("</purchaseOrderResponse>") + .append("</SOAP-ENV:Body>") + .append("</SOAP-ENV:Envelope>"); + + resCtx.setRootPart(response.toString(), "text/xml"); } public void bustedRequest (Envelope env, SOAPContext reqCtx, 1.4 +56 -0 xml-soap/java/samples/messaging/SendMessage.java Index: SendMessage.java =================================================================== RCS file: /home/cvs/xml-soap/java/samples/messaging/SendMessage.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- SendMessage.java 23 Mar 2001 07:48:30 -0000 1.3 +++ SendMessage.java 12 Jun 2003 17:37:18 -0000 1.4 @@ -1,3 +1,59 @@ +/* + * The Apache Software License, Version 1.1 + * + * + * Copyright (c) 2000 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "SOAP" and "Apache Software Foundation" must + * not be used to endorse or promote products derived from this + * software without prior written permission. For written + * permission, please contact [EMAIL PROTECTED] + * + * 5. Products derived from this software may not be called "Apache", + * nor may "Apache" appear in their name, without prior written + * permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation and was + * originally based on software copyright (c) 2000, International + * Business Machines, Inc., http://www.apache.org. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ package samples.messaging; import java.io.*;