1 22 package org.jboss.test.webservice.jbws707; 23 24 import java.io.ByteArrayInputStream ; 25 import java.io.IOException ; 26 27 import javax.naming.InitialContext ; 28 import javax.xml.rpc.Service ; 29 import javax.xml.soap.MessageFactory ; 30 import javax.xml.soap.MimeHeaders ; 31 import javax.xml.soap.SOAPBody ; 32 import javax.xml.soap.SOAPElement ; 33 import javax.xml.soap.SOAPException ; 34 import javax.xml.soap.SOAPMessage ; 35 36 import junit.framework.Test; 37 38 import org.jboss.test.webservice.WebserviceTestBase; 39 import org.w3c.dom.Element ; 40 import org.w3c.dom.Node ; 41 import org.w3c.dom.NodeList ; 42 43 54 public class JBWS707TestCase extends WebserviceTestBase 55 { 56 private static TestEndpoint port; 57 58 public JBWS707TestCase(String name) 59 { 60 super(name); 61 } 62 63 64 public static Test suite() throws Exception 65 { 66 return getDeploySetup(JBWS707TestCase.class, "ws4ee-jbws707.war, ws4ee-jbws707-client.jar"); 67 } 68 69 public void setUp() throws Exception 70 { 71 super.setUp(); 72 if (port == null) 73 { 74 InitialContext iniCtx = getClientContext(); 75 Service service = (Service )iniCtx.lookup("java:comp/env/service/TestService"); 76 port = (TestEndpoint)service.getPort(TestEndpoint.class); 77 } 78 } 79 80 public void testSpecialChars() throws Exception 81 { 82 String inStr = "&Test & this &"; 83 String outStr = port.echo(inStr); 84 assertEquals(inStr, outStr); 85 86 inStr = "<Test < this <"; 87 outStr = port.echo(inStr); 88 assertEquals(inStr, outStr); 89 90 inStr = ">Test > this >"; 91 outStr = port.echo(inStr); 92 assertEquals(inStr, outStr); 93 94 inStr = "\"Test \" this \""; 95 outStr = port.echo(inStr); 96 assertEquals(inStr, outStr); 97 } 98 99 public void testSpecialCharsInBean() throws Exception 100 { 101 UserType in = new UserType("&Test & this &"); 102 UserType out = port.echo(in); 103 assertEquals(in, out); 104 105 in = new UserType("<Test < this <"); 106 out = port.echo(in); 107 assertEquals(in, out); 108 109 in = new UserType(">Test > this >"); 110 out = port.echo(in); 111 assertEquals(in, out); 112 113 in = new UserType("\"Test \" this \""); 114 out = port.echo(in); 115 assertEquals(in, out); 116 } 117 118 public void testCDATA() throws Exception 119 { 120 String xmlStr = "<?xml version='1.0' encoding='UTF-8' ?>" + 121 "<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/' xmlns:tns='http://uri.jboss.org'>" + 122 " <env:Body>" + 123 " <tns:testMessage><![CDATA[ Hello ]]></tns:testMessage>" + 124 " </env:Body>" + 125 "</env:Envelope>"; 126 127 String expStr = " Hello "; 128 assertEquals(expStr, parse(xmlStr)); 129 130 String out = port.echo(expStr); 131 assertEquals(expStr, out); 132 } 133 134 public void testCDATAAmpersand() throws Exception 135 { 136 String xmlStr = 137 "<?xml version='1.0' encoding='UTF-8' ?>" + 138 "<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/' xmlns:tns='http://uri.jboss.org'>" + 139 " <env:Body>" + 140 " <tns:myMessage>WelcometoJBoss!<![CDATA[ Hello &&]]></tns:myMessage>" + 141 " </env:Body>" + 142 "</env:Envelope>"; 143 144 String expStr = "WelcometoJBoss! Hello &&"; 145 assertEquals(expStr, parse(xmlStr)); 146 147 String out = port.echo(expStr); 148 assertEquals(expStr, out); 149 } 150 151 public void testMultipleCDATA() throws Exception 152 { 153 String xmlStr = 154 "<?xml version='1.0' encoding='UTF-8' ?>" + 155 "<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/' xmlns:tns='http://uri.jboss.org'>" + 156 " <env:Body>" + 157 " <tns:myMessage><![CDATA[ Hello ]]>JBoss!<![CDATA[ ]]></tns:myMessage>" + 158 " </env:Body>" + 159 "</env:Envelope>"; 160 161 String expStr = " Hello JBoss! "; 162 assertEquals(expStr, parse(xmlStr)); 163 164 String out = port.echo(expStr); 165 assertEquals(expStr, out); 166 } 167 168 public void testMultipleCDATAv2() throws Exception 169 { 170 String myXML = 171 "<?xml version='1.0' encoding='UTF-8' ?>" + 172 "<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/' xmlns:tns='http://uri.jboss.org'>" + 173 " <env:Body>" + 174 " <tns:myMessage><![CDATA[ Hello ]]>JBoss!<![CDATA[ ]]>.OSS</tns:myMessage>" + 175 " </env:Body>" + 176 "</env:Envelope>"; 177 178 String expStr = " Hello JBoss! .OSS"; 179 assertEquals(expStr, parse(myXML)); 180 181 String out = port.echo(expStr); 182 assertEquals(expStr, out); 183 } 184 185 private String parse(String xmlStr) throws SOAPException , IOException 186 { 187 MessageFactory mf = MessageFactory.newInstance(); 188 MimeHeaders mimeHeaders = new MimeHeaders (); 189 mimeHeaders.addHeader("Content-Type", "text/xml; charset=UTF-8"); 190 191 SOAPMessage soapMessage = mf.createMessage(mimeHeaders, new ByteArrayInputStream (xmlStr.getBytes())); 192 SOAPBody soapBody = soapMessage.getSOAPBody(); 193 SOAPElement soapElement = (SOAPElement )soapBody.getChildElements().next(); 194 195 StringBuffer builder = new StringBuffer (); 196 NodeList nlist = soapElement.getChildNodes(); 197 for (int i = 0; i < nlist.getLength(); i++) 198 { 199 Node child = nlist.item(i); 200 String nodeValue = child.getNodeValue(); 201 builder.append(nodeValue); 202 } 203 204 return builder.toString(); 205 } 206 } 207 | Popular Tags |