1 57 58 package inout; 59 60 import java.text.DateFormat ; 61 import java.util.Date ; 62 63 import javax.xml.namespace.QName ; 64 65 import junit.framework.Test; 66 import junit.framework.TestCase; 67 import junit.framework.TestSuite; 68 import junit.textui.TestRunner; 69 import org.apache.wsif.WSIFException; 70 import org.apache.wsif.WSIFService; 71 import org.apache.wsif.WSIFServiceFactory; 72 import org.apache.wsif.base.WSIFServiceImpl; 73 import org.apache.wsif.providers.soap.apacheaxis.WSIFDynamicProvider_ApacheAxis; 74 import org.apache.wsif.providers.soap.apachesoap.WSIFDynamicProvider_ApacheSOAP; 75 import org.apache.wsif.util.WSIFPluggableProviders; 76 77 import addressbook.wsiftypes.Address; 78 import addressbook.wsiftypes.Phone; 79 import inout.wsifservice.Inout; 80 import inout.wsiftypes.Mutablestring; 81 import util.AddressUtility; 82 import util.TestUtilities; 83 84 88 public class InoutTest extends TestCase { 89 String wsdlLocation = 90 TestUtilities.getWsdlPath("java\\test\\inout\\wsifservice") + "Inout.wsdl"; 91 static String server = TestUtilities.getSoapServer().toUpperCase(); 92 93 static String name1 = "Purdue Boilermaker"; 94 static Address addr1 = 95 new Address( 96 1, 97 "University Drive", 98 "West Lafayette", 99 "IN", 100 47907, 101 new Phone(765, "494", "4900")); 102 103 static String firstName2 = "Someone"; 104 static String lastName2 = "Else"; 105 static String name2 = "Someone Else"; 106 static Address addr2 = 107 new Address( 108 0, 109 "Somewhere Else", 110 "No Where", 111 "NO", 112 71983, 113 new Phone(600, "391", "5682")); 114 115 static Address nulladdr = new Address(0, "", "", "", 0, new Phone(0, "", "")); 116 117 private final static String ADDRESS = "address"; 118 private final static String NULLNAME = "nullname"; 119 private final static String ADD = "add"; 120 private final static String DATE = "date"; 121 private final static String SUPC = "supc"; 122 private final static String GENC = "genericc"; 123 private final static String WHOAMI = "whoami"; 124 private final static String INOUT = "inout"; 125 126 private final static String RPC = "rpc"; 127 private final static String DOC = "doc"; 128 129 private final static String SOAP = "soap"; 130 private final static String AXIS = "axis"; 131 private final static String JAVA = "java"; 132 private final static String NJMS = "nativeJMS"; 133 134 public InoutTest(String name) { 135 super(name); 136 } 137 138 public static void main(String [] args) { 139 TestUtilities.startListeners(); 140 junit.textui.TestRunner.run (suite()); 141 TestUtilities.stopListeners(); 142 } 143 144 public static Test suite() { 145 return new TestSuite(InoutTest.class); 146 } 147 148 public void setUp() { 149 TestUtilities.setUpExtensionsAndProviders(); 150 } 151 152 public void testAxis() { 153 doit(server+"Port", AXIS, RPC, ADDRESS); 154 } 155 public void testSoap() { 156 doit(server+"Port", SOAP, RPC, ADDRESS); 157 } 158 public void testJava() { 159 doit("JavaPort", JAVA, RPC, ADDRESS); 160 } 161 public void testSoapJms() { 162 doit("SOAPJMSPort", SOAP, RPC, ADDRESS); 163 } 164 public void testAxisJms() { 165 doit("SOAPJMSPort", AXIS, RPC, ADDRESS); 166 } 167 public void testNativeJms() { 168 doit("NativeJMSPort" ,NJMS, RPC, ADDRESS); 169 } 170 176 public void testNNJava() { 179 doit("JavaPort", JAVA, RPC, NULLNAME); 180 } 181 185 public void testAddSoap() { 187 doit(server+"Port", SOAP, RPC, ADD); 188 } 189 public void testAddJava() { 190 doit("JavaPort", JAVA, RPC, ADD); 191 } 192 public void testAddSoapJms() { 193 doit("SOAPJMSPort", SOAP, RPC, ADD); 194 } 195 public void testAddNativeJms() { 197 doit("NativeJMSPort" , NJMS, RPC, ADD ); 198 } 199 200 public void testDateSoap() { 202 doit(server+"Port", SOAP, RPC, DATE); 203 } 204 public void testDateJava() { 205 doit("JavaPort", JAVA, RPC, DATE); 206 } 207 public void testDateSoapJms() { 208 doit("SOAPJMSPort", SOAP, RPC, DATE); 209 } 210 public void testDateNativeJms() { 212 doit("NativeJMSPort" , NJMS, RPC, DATE ); 213 } 214 215 public void testSupCAxis() { 216 doit(server+"Port", AXIS, RPC, SUPC); 217 } 218 public void testSupCSoap() { 219 doit(server+"Port", SOAP, RPC, SUPC); 220 } 221 public void testSupCJava() { 222 doit("JavaPort", JAVA, RPC, SUPC); 223 } 224 public void testSupCSoapJms() { 225 doit("SOAPJMSPort", SOAP, RPC, SUPC); 226 } 227 public void testSupCAxisJms() { 228 doit("SOAPJMSPort", AXIS, RPC, SUPC); 229 } 230 public void testSupCNativeJms() { 231 doit("NativeJMSPort" , NJMS, RPC, SUPC ); 232 } 233 public void testGenCAxis() { 234 doit(server+"Port", AXIS, RPC, GENC); 235 } 236 public void testGenCSoap() { 237 doit(server+"Port", SOAP, RPC, GENC); 238 } 239 public void testGenCJava() { 240 doit("JavaPort", JAVA, RPC, GENC); 241 } 242 public void testGenCSoapJms() { 243 doit("SOAPJMSPort", SOAP, RPC, GENC); 244 } 245 public void testGenCAxisJms() { 246 doit("SOAPJMSPort", AXIS, RPC, GENC); 247 } 248 public void testGenCNativeJms() { 249 doit("NativeJMSPort" , NJMS, RPC, GENC ); 250 } 251 252 public void testWhoSoap() { 254 doit(server+"Port", SOAP, RPC, WHOAMI); 255 } 256 public void testWhoJava() { 257 doit("JavaPort", JAVA, RPC, WHOAMI); 258 } 259 public void testWhoSoapJms() { 260 doit("SOAPJMSPort", SOAP, RPC, WHOAMI); 261 } 262 public void testWhoNativeJms() { 264 doit("NativeJMSPort" , NJMS, RPC, WHOAMI ); 265 } 266 267 public void testInoJava() { 270 doit("JavaPort", JAVA, RPC, INOUT); 271 } 272 273 private void doit(String portName, String protocol, String style, String cmd) { 274 if (portName.toUpperCase().indexOf("JMS") != -1 275 && !TestUtilities.areWeTesting("jms")) 276 return; 277 278 if (protocol.equals(SOAP)) { 279 WSIFDynamicProvider_ApacheSOAP provider = new WSIFDynamicProvider_ApacheSOAP(); 280 281 if (style.equals(DOC)) 282 provider.setPartSerializerName("services.inout.InoutLiteralSerializer"); 283 284 WSIFPluggableProviders.overrideDefaultProvider( 285 "http://schemas.xmlsoap.org/wsdl/soap/", 286 provider); 287 } 288 if (protocol.equals(AXIS)) { 289 WSIFDynamicProvider_ApacheAxis provider = new WSIFDynamicProvider_ApacheAxis(); 290 291 WSIFPluggableProviders.overrideDefaultProvider( 292 "http://schemas.xmlsoap.org/wsdl/soap/", 293 provider); 294 } 295 296 try { 297 WSIFServiceFactory factory = WSIFServiceFactory.newInstance(); 298 WSIFService service = 299 factory.getService( 300 wsdlLocation, 301 null, 302 null, 303 "http://wsifservice.inout/", 304 "Inout"); 305 306 service.mapType( 307 new QName ("http://wsiftypes.inout/", "arrayofint"), 308 Class.forName("[I")); 309 310 Inout stub = (Inout) service.getStub(portName, Inout.class); 311 312 if (cmd.equals(ADDRESS)) 313 address(stub); 314 else if (cmd.equals(NULLNAME)) 315 nullname(stub); 316 else if (cmd.equals(ADD)) 317 add(stub); 318 else if (cmd.equals(DATE)) 319 date(stub); 320 else if (cmd.equals(SUPC)) 321 supc(service, portName); 322 else if (cmd.equals(GENC)) 323 genericc(service, portName); 324 else if (cmd.equals(WHOAMI)) 325 whoami(stub); 326 else if (cmd.equals(INOUT)) 327 inout(stub); 328 else 329 assertTrue(false); 330 } catch (Exception e) { 331 System.err.println("InoutTest(" + portName + ") caught exception " + e); 332 e.printStackTrace(); 333 assertTrue(false); 334 } finally { 335 if (protocol.equals(SOAP) || protocol.equals(AXIS)) { 336 WSIFPluggableProviders.overrideDefaultProvider( 337 "http://schemas.xmlsoap.org/wsdl/soap/", 338 null); 339 } 340 } 341 342 } 343 344 private void address(Inout stub) throws Exception { 345 stub.addEntry(name1.toString(), addr1); 346 347 Mutablestring msName1 = new Mutablestring(name1); 348 Address resp1 = stub.getAddressFromName(msName1); 349 assertTrue(new AddressUtility(resp1).equals(addr1)); 350 351 Mutablestring msName = new Mutablestring("Pur*"); 352 resp1 = stub.getAddressFromName(msName); 353 assertTrue(new AddressUtility(resp1).equals(addr1)); 354 } 355 356 private void nullname(Inout stub) throws Exception { 357 stub.addEntry(null, null); 358 359 Address resp1 = stub.getAddressFromName((String ) null); 360 assertTrue(resp1 == null); 361 362 Address resp2 = stub.getAddressFromName((Mutablestring) null); 363 assertTrue(resp2 == null); 364 365 } 372 373 private void add(Inout stub) throws Exception { 374 int[] nums = new int[] { 1, 2, 3, 4, 5 }; 375 int total = stub.addNumbers(nums); 376 377 String warmFuzzy = new String (); 378 int expected = 0; 379 for (int i = 0; i < nums.length; i++) { 380 expected += nums[i]; 381 if (i != 0) 382 warmFuzzy += "+ "; 383 warmFuzzy += nums[i] + " "; 384 } 385 warmFuzzy += "= " + total + " (expected " + expected + ")"; 386 System.out.println(warmFuzzy); 387 assertTrue(total == expected); 388 } 389 390 private void date(Inout stub) throws Exception { 391 Date first = new Date (); 392 Thread.sleep(1000); 393 Date remote = stub.getDate(); 394 Thread.sleep(1000); 395 Date later = new Date (); 396 397 DateFormat df = DateFormat.getDateTimeInstance(); 398 System.out.println( 399 "Remote date is " 400 + df.format(remote) 401 + " First date is " 402 + df.format(first) 403 + " Later date is " 404 + df.format(later)); 405 406 assertTrue(first.before(remote) || first.equals(remote)); 407 assertTrue(later.after(remote) || later.equals(remote)); 408 } 409 410 private interface SubInout extends Inout { 411 public void dubiousMethod() throws WSIFException; 412 } 413 414 private void supc(WSIFService service, String portName) throws Exception { 415 SubInout stub = (SubInout) service.getStub(portName, SubInout.class); 416 417 stub.addEntry(name1, addr1); 418 Mutablestring msName1 = new Mutablestring(name1); 419 Address resp1 = stub.getAddressFromName(msName1); 420 assertTrue(new AddressUtility(addr1).equals(resp1)); 421 422 boolean caught = false; 423 try { 424 stub.dubiousMethod(); 425 } catch (WSIFException e) { 426 caught = true; 427 } 428 assertTrue(caught); 429 430 stub.addEntry(name2, new SubAddress(addr2)); 431 Mutablestring msName2 = new Mutablestring(name2); 432 Address resp2 = stub.getAddressFromName(msName2); 433 assertTrue(new AddressUtility(addr2).equals(resp2)); 434 } 435 436 private interface GenericInout { 437 public void addEntry(String wholeName, Object address) 438 throws java.rmi.RemoteException ; 439 public Address getAddressFromName(Mutablestring name) 440 throws java.rmi.RemoteException ; 441 } 442 443 private void genericc(WSIFService service, String portName) 444 throws Exception { 445 GenericInout stub = 446 (GenericInout) service.getStub(portName, GenericInout.class); 447 448 stub.addEntry(name1, addr1); 449 Mutablestring msName1 = new Mutablestring(name1); 450 Address resp1 = stub.getAddressFromName(msName1); 451 assertTrue(new AddressUtility(addr1).equals(resp1)); 452 } 453 454 458 private void whoami(Inout stub) throws Exception { 459 float f = 1; 460 int i = 1; 461 Address a = new Address(); 462 SubAddress suba = new SubAddress(); 463 String resp; 464 465 resp = stub.whoami("Hello"); 466 System.out.println("resp was " + resp + " expected String"); 467 assertTrue("String".equals(resp)); 468 469 resp = stub.whoami(f); 470 System.out.println("resp was " + resp + " expected float"); 471 assertTrue("float".equals(resp)); 472 473 resp = stub.whoami(i); 474 System.out.println("resp was " + resp + " expected int"); 475 assertTrue("int".equals(resp)); 476 477 resp = stub.whoami(a); 478 System.out.println("resp was " + resp + " expected Address"); 479 assertTrue("Address".equals(resp)); 480 481 resp = stub.whoami(suba); 482 System.out.println("resp was " + resp + " expected Address"); 483 assertTrue("Address".equals(resp)); 484 } 485 486 private void inout(Inout stub) throws Exception { 487 stub.addEntry(name1.toString(), addr1); 488 489 Mutablestring msName1 = new Mutablestring(name1); 490 Address resp1 = new AddressUtility(nulladdr).copy(); 491 boolean success = stub.getAddressFromName(msName1, resp1); 492 assertTrue(success && new AddressUtility(resp1).equals(addr1)); 493 } 494 495 } 496 497 class SubAddress extends Address { 498 499 public SubAddress() { 500 super(); 501 } 502 503 public SubAddress(Address a) { 504 super( 505 a.getStreetNum(), 506 a.getStreetName(), 507 a.getCity(), 508 a.getState(), 509 a.getZip(), 510 a.getPhoneNumber()); 511 } 512 513 } 514 515 | Popular Tags |