You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by as...@apache.org on 2005/07/28 15:15:15 UTC

svn commit: r225765 - in /webservices/axis/trunk/java/modules/saaj: src/org/apache/axis2/saaj/SOAPMessageImpl.java test/org/apache/axis2/saaj/SOAPFaultDetailTest.java test/org/apache/axis2/saaj/SOAPFaultsTest.java

Author: ashutosh
Date: Thu Jul 28 06:15:01 2005
New Revision: 225765

URL: http://svn.apache.org/viewcvs?rev=225765&view=rev
Log:
Some more SOAPFault test cases for SAAJ

Added:
    webservices/axis/trunk/java/modules/saaj/test/org/apache/axis2/saaj/SOAPFaultDetailTest.java
    webservices/axis/trunk/java/modules/saaj/test/org/apache/axis2/saaj/SOAPFaultsTest.java
Modified:
    webservices/axis/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPMessageImpl.java

Modified: webservices/axis/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPMessageImpl.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPMessageImpl.java?rev=225765&r1=225764&r2=225765&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPMessageImpl.java (original)
+++ webservices/axis/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPMessageImpl.java Thu Jul 28 06:15:01 2005
@@ -188,18 +188,16 @@
      */
     public void saveChanges() throws SOAPException {
         // TODO Auto-generated method stub
-
     }
 
-    /* (non-Javadoc)
+    /**
      * @see javax.xml.soap.SOAPMessage#saveRequired()
      */
     public boolean saveRequired() {
-        // TODO Auto-generated method stub
         return false;
     }
 
-    /* (non-Javadoc)
+    /**
      * @see javax.xml.soap.SOAPMessage#writeTo(java.io.OutputStream)
      */
     public void writeTo(OutputStream out) throws SOAPException, IOException {

Added: webservices/axis/trunk/java/modules/saaj/test/org/apache/axis2/saaj/SOAPFaultDetailTest.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/saaj/test/org/apache/axis2/saaj/SOAPFaultDetailTest.java?rev=225765&view=auto
==============================================================================
--- webservices/axis/trunk/java/modules/saaj/test/org/apache/axis2/saaj/SOAPFaultDetailTest.java (added)
+++ webservices/axis/trunk/java/modules/saaj/test/org/apache/axis2/saaj/SOAPFaultDetailTest.java Thu Jul 28 06:15:01 2005
@@ -0,0 +1,73 @@
+package org.apache.axis2.saaj;
+
+import java.io.ByteArrayInputStream;
+import java.util.Iterator;
+
+import javax.xml.soap.DetailEntry;
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.MimeHeaders;
+import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPBodyElement;
+import javax.xml.soap.SOAPFault;
+import javax.xml.soap.SOAPMessage;
+
+import junit.framework.TestCase;
+
+public class SOAPFaultDetailTest extends TestCase {
+	
+	public SOAPFaultDetailTest(String name){
+		super(name);
+	}
+	
+    String xmlString =
+    	"<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
+    	"<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
+    	" <soapenv:Body>" +
+    	"  <soapenv:Fault>" +
+    	"   <faultcode>soapenv:Server.generalException</faultcode>" +
+    	"   <faultstring></faultstring>" +
+    	"   <detail>" +
+    	"    <tickerSymbol xsi:type=\"xsd:string\">MACR</tickerSymbol>" +
+    	"   <ns1:exceptionName xmlns:ns1=\"http://xml.apache.org/axis/\">test.wsdl.faults.InvalidTickerFaultMessage</ns1:exceptionName>" +
+    	"   </detail>" +
+    	"  </soapenv:Fault>" +
+    	" </soapenv:Body>" +
+    	"</soapenv:Envelope>";
+    
+    public void testDetails() throws Exception{
+    	MessageFactory mf = MessageFactory.newInstance();
+    	SOAPMessage smsg = 
+    		mf.createMessage(new MimeHeaders(), new ByteArrayInputStream(xmlString.getBytes()));
+    	SOAPBody body = smsg.getSOAPBody();
+    	//smsg.writeTo(System.out);
+    	SOAPFault flt = body.getFault();
+    	flt.addDetail();
+    	javax.xml.soap.Detail d = flt.getDetail();
+    	Iterator i = d.getDetailEntries();
+    	while (i.hasNext()){
+    		DetailEntry entry = (DetailEntry) i.next();
+    		String name = entry.getElementName().getLocalName();
+    		if ("tickerSymbol".equals(name)) {
+    			assertEquals("the value of the tickerSymbol element didn't match",
+    					"MACR", entry.getValue());
+    		} else if ("exceptionName".equals(name)) {
+    			assertEquals("the value of the exceptionName element didn't match",
+    					"test.wsdl.faults.InvalidTickerFaultMessage", entry.getValue());
+    		} else {
+    			assertTrue("Expecting details element name of 'tickerSymbol' or 'expceptionName' - I found :" + name, false);
+    		}
+    	}
+    	assertTrue(d != null);
+    }
+    
+    /**
+     * Main
+     */
+    public static void main(String[] args)
+            throws Exception
+    {
+        SOAPFaultDetailTest detailTest = new SOAPFaultDetailTest("faultdetails");
+        detailTest.testDetails();
+    }
+
+}

Added: webservices/axis/trunk/java/modules/saaj/test/org/apache/axis2/saaj/SOAPFaultsTest.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/saaj/test/org/apache/axis2/saaj/SOAPFaultsTest.java?rev=225765&view=auto
==============================================================================
--- webservices/axis/trunk/java/modules/saaj/test/org/apache/axis2/saaj/SOAPFaultsTest.java (added)
+++ webservices/axis/trunk/java/modules/saaj/test/org/apache/axis2/saaj/SOAPFaultsTest.java Thu Jul 28 06:15:01 2005
@@ -0,0 +1,172 @@
+package org.apache.axis2.saaj;
+
+import java.io.ByteArrayOutputStream;
+
+import javax.xml.soap.Detail;
+import javax.xml.soap.DetailEntry;
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.Name;
+import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPEnvelope;
+import javax.xml.soap.SOAPFactory;
+import javax.xml.soap.SOAPFault;
+import javax.xml.soap.SOAPHeader;
+import javax.xml.soap.SOAPHeaderElement;
+import javax.xml.soap.SOAPMessage;
+import javax.xml.soap.SOAPPart;
+
+import junit.framework.TestCase;
+
+public class SOAPFaultsTest extends TestCase {
+	
+	public SOAPFaultsTest(String name){
+		super(name);
+	}
+	
+	//Create SOAPFault with additional detail elements
+	public void testAdditionDetail() throws Exception{
+        String xml ="<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:cwmp=\"http://cwmp.com\">\n" +
+        " <soapenv:Header>\n" +
+        "  <cwmp:ID soapenv:mustUnderstand=\"1\">HEADERID-7867678</cwmp:ID>\n" +
+        " </soapenv:Header>\n" +
+        " <soapenv:Body>\n" +
+        "  <soapenv:Fault>\n" +
+        "   <faultcode>soapenv:Client</faultcode>\n" +
+        "   <faultstring>CWMP fault</faultstring>\n" +
+        "   <detail>\n" +
+        "    <cwmp:Fault>\n" +
+        "     <cwmp:FaultCode>This is the fault code</cwmp:FaultCode>\n" +
+        "     <cwmp:FaultString>Fault Message</cwmp:FaultString>\n" +
+        "    </cwmp:Fault>\n" +
+        "   </detail>\n" +
+        "  </soapenv:Fault>\n" +
+        " </soapenv:Body>\n" +
+        "</soapenv:Envelope>";
+        
+        MessageFactory fac = MessageFactory.newInstance();
+        SOAPMessage faultMessage = fac.createMessage();
+        
+        //Create the response to the message
+        faultMessage = fac.createMessage();
+        SOAPPart part = faultMessage.getSOAPPart();
+        SOAPEnvelope envelope = part.getEnvelope();
+        envelope.addNamespaceDeclaration("cwmp", "http://cwmp.com");
+        SOAPBody body = envelope.getBody();
+        SOAPHeader header = envelope.getHeader();
+        Name idName = envelope.createName("ID", "cwmp", "http://cwmp.com");
+        SOAPHeaderElement id = header.addHeaderElement(idName);
+        id.setMustUnderstand(true);
+        id.addTextNode("HEADERID-7867678");
+        
+        //Create the SOAPFault object
+        SOAPFault fault = body.addFault();
+        fault.setFaultCode("Client");
+        fault.setFaultString("CWMP fault");
+        
+        //Add Fault Detail information
+        Detail faultDetail = fault.addDetail();
+        Name cwmpFaultName = envelope.createName("Fault", "cwmp",
+        		"http://cwmp.com");
+        DetailEntry cwmpFaultDetail =
+        	faultDetail.addDetailEntry(cwmpFaultName);
+        SOAPElement e = cwmpFaultDetail.addChildElement("FaultCode");
+        
+        e.addTextNode("This is the fault code");
+        SOAPElement e2 = cwmpFaultDetail.addChildElement(envelope.createName("FaultString", "cwmp", "http://cwmp.com"));
+        e2.addTextNode("Fault Message");
+        faultMessage.saveChanges();
+        
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        faultMessage.writeTo(baos);
+        String xml2 = new String(baos.toByteArray());
+        faultMessage.writeTo(System.out);
+        //assertXMLEqual(xml,xml2);	
+	}
+	
+	public void testQuick() throws Exception {
+		MessageFactory msgfactory = MessageFactory.newInstance();
+		SOAPFactory factory = SOAPFactory.newInstance();
+		SOAPMessage outputmsg = msgfactory.createMessage();
+		String valueCode = "faultcode";
+		String valueString = "faultString";
+		SOAPFault fault = outputmsg.getSOAPPart().getEnvelope().getBody().addFault();
+		fault.setFaultCode(valueCode);
+		fault.setFaultString(valueString);
+		Detail d;
+		d = fault.addDetail();
+		d.addDetailEntry(factory.createName("Hello"));
+		ByteArrayOutputStream baos = new ByteArrayOutputStream();
+		if (outputmsg != null) {
+			if (outputmsg.saveRequired()) {
+				outputmsg.saveChanges();
+			}
+			outputmsg.writeTo(baos);
+		}
+		String xml = new String(baos.toByteArray());
+		assertTrue(xml.indexOf("Hello")!=-1);
+	}
+	
+	public void testSOAPFaultSaveChanges() throws Exception {
+		MessageFactory msgFactory =
+			MessageFactory.newInstance();
+		SOAPMessage msg = msgFactory.createMessage();
+		SOAPEnvelope envelope =
+			msg.getSOAPPart().getEnvelope();
+		SOAPBody body = envelope.getBody();
+		SOAPFault fault = body.addFault();
+		
+		fault.setFaultCode("Client");
+		fault.setFaultString(
+			"Message does not have necessary info");
+		fault.setFaultActor("http://gizmos.com/order");
+		
+		Detail detail = fault.addDetail();
+		
+		Name entryName = envelope.createName("order", "PO",
+			"http://gizmos.com/orders/");
+		DetailEntry entry = detail.addDetailEntry(entryName);
+		entry.addTextNode("quantity element does not have a value");
+		
+		Name entryName2 = envelope.createName("confirmation",
+				"PO", "http://gizmos.com/confirm");
+		DetailEntry entry2 = detail.addDetailEntry(entryName2);
+		entry2.addTextNode("Incomplete address: no zip code");
+		
+		msg.saveChanges();
+		
+        // Now retrieve the SOAPFault object and its contents
+        //after checking to see that there is one
+
+        if (body.hasFault()) {
+            fault = body.getFault();
+            String code = fault.getFaultCode();
+            String string = fault.getFaultString();
+            String actor = fault.getFaultActor();
+
+            System.out.println("SOAP fault contains: ");
+            System.out.println("    fault code = " + code);
+            System.out.println("    fault string = " + string);
+            if (actor != null) {
+                System.out.println("    fault actor = " + actor);
+            }
+
+            detail = fault.getDetail();
+            if (detail != null) {
+                java.util.Iterator it = detail.getDetailEntries();
+                while (it.hasNext()) {
+                    entry = (DetailEntry) it.next();
+                    String value = entry.getValue();
+                    System.out.println("    Detail entry = " + value);
+                }
+            }
+        }
+	}
+	
+    public static void main(String[] args) throws Exception {
+        SOAPFaultsTest detailTest = new SOAPFaultsTest("TestSOAPFaults");
+        detailTest.testQuick();
+        detailTest.testAdditionDetail();
+        detailTest.testSOAPFaultSaveChanges();
+    }
+}