blob: f3e96b6ba6d00c8dfe07b3fba34877658d357539 [file] [log] [blame]
/*
* Copyright (c) 2002, 2018 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0, which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the
* Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
* version 2 with the GNU Classpath Exception, which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
*/
package com.sun.s1asdev.ejb.webservice.ksink.googleclient;
import java.io.*;
import java.util.*;
import java.net.URL;
import javax.naming.*;
import javax.xml.namespace.QName;
import javax.xml.rpc.Stub;
import javax.xml.rpc.Call;
import javax.xml.rpc.Service;
import java.rmi.Remote;
import com.sun.ejte.ccl.reporter.SimpleReporterAdapter;
import java.lang.reflect.Method;
public class Client {
private static SimpleReporterAdapter stat =
new SimpleReporterAdapter("appserv-tests");
private static final QName PORT_QNAME =
new QName("urn:GoogleSearch", "GoogleSearchPort");
private static final QName OPERATION_QNAME =
new QName("urn:GoogleSearch", "doSpellingSuggestion");
private String word;
private String targetEndpointAddress;
private String testName;
public static void main (String[] args) {
stat.addDescription("googleserver appclient");
Client client = new Client(args);
client.doTest();
stat.printSummary("googleserver-applientID");
}
public Client(String[] args) {
word = (args.length > 0) ? args[0] : "spellng";
targetEndpointAddress = (args.length > 1) ? args[1] : null;
testName = (args.length > 1) ? args[1] : "ksink_standalone";
}
public void doTest() {
try {
Context ic = new InitialContext();
String googleKey = (String)
ic.lookup("java:comp/env/googlekey");
GoogleSearchService googleSearchService = (GoogleSearchService)
ic.lookup("java:comp/env/service/GoogleSearch");
Class fooHomeClazz = Class.forName("com.sun.s1asdev.ejb.webservice.ksink.googleserver.FooHome");
Object obj = ic.lookup("java:comp/env/ejb/googleserverejb");
Object fooHome = javax.rmi.PortableRemoteObject.narrow
(obj, fooHomeClazz);
Method createMethod = fooHomeClazz.getMethod("create",
new Class[0]);
Object foo = createMethod.invoke(fooHome, new Object[0]);
Method helloOneWay = foo.getClass().getMethod("helloOneWay",
new Class[] { java.lang.String.class });
helloOneWay.invoke(foo, new Object[] { "1000" } );
try {
googleSearchService.getHandlerRegistry();
} catch(java.lang.UnsupportedOperationException uoe) {
System.out.println
("Successfully caught unsupported operation exception " +
"for Service.getHandlerRegistry()");
}
try {
googleSearchService.getTypeMappingRegistry();
} catch(java.lang.UnsupportedOperationException uoe) {
System.out.println
("Successfully caught unsupported operation exception " +
"for Service.getTypeMappingRegistry()");
}
doDynamicProxyTest(googleSearchService, googleKey);
GoogleSearchPort googleSearchPort =
googleSearchService.getGoogleSearchPort();
doSpellingSuggestion(googleSearchPort, googleKey,
targetEndpointAddress);
System.out.println("Using dynamic proxy to invoke endpoint");
Service genericServiceWithWsdl = (Service)
ic.lookup("java:comp/env/service/GoogleSearchProxy");
doDynamicProxyTest(genericServiceWithWsdl, googleKey);
googleSearchPort = (GoogleSearchPort)
genericServiceWithWsdl.getPort(GoogleSearchPort.class);
doSpellingSuggestion(googleSearchPort, googleKey,
targetEndpointAddress);
doDIINoWSDLTest(ic, googleKey, targetEndpointAddress);
System.out.println("Doing wsdl override tests");
Service partialWsdlServiceGeneric = (Service)
ic.lookup("java:comp/env/service/partialGeneric");
GoogleSearchPort googleSearch = (GoogleSearchPort)
partialWsdlServiceGeneric.getPort(GoogleSearchPort.class);
googleSearch.doSpellingSuggestion(googleKey, word);
/** GoogleSearchService partialWsdlServiceGenerated =
(GoogleSearchService)
ic.lookup("java:comp/env/service/partialGenerated");
googleSearch = partialWsdlServiceGenerated.getGoogleSearchPort();
googleSearch.doSpellingSuggestion(googleKey, word);
**/
stat.addStatus("appclient " + testName, stat.PASS);
} catch (Exception ex) {
System.out.println("google client test failed");
ex.printStackTrace();
stat.addStatus("appclient " + testName, stat.FAIL);
}
}
private void doSpellingSuggestion(GoogleSearchPort googleSearchPort,
String googleKey,
String endpointAddress)
throws Exception {
if( endpointAddress != null ) {
((Stub)googleSearchPort)._setProperty
(Stub.ENDPOINT_ADDRESS_PROPERTY, targetEndpointAddress);
System.out.println("Setting target endpoint address to " +
endpointAddress);
} else {
// if not set, use default
endpointAddress = (String)
((Stub)googleSearchPort)._getProperty
(Stub.ENDPOINT_ADDRESS_PROPERTY);
}
System.out.println("Contacting google for spelling " +
"suggestion at " + endpointAddress);
String spellingSuggestion =
googleSearchPort.doSpellingSuggestion(googleKey, word);
System.out.println("Gave google the word '" + word + "' ... " +
" and the suggested spelling is '" +
spellingSuggestion + "'");
}
private void doDynamicProxyTest(Service service, String googleKey) throws Exception {
Call c1 = service.createCall();
Call c2 = service.createCall(PORT_QNAME);
Call c3 = service.createCall(PORT_QNAME, OPERATION_QNAME);
Call c4 = service.createCall(PORT_QNAME,
OPERATION_QNAME.getLocalPart());
Call[] calls = service.getCalls(PORT_QNAME);
if( targetEndpointAddress != null ) {
c3.setTargetEndpointAddress(targetEndpointAddress);
}
Object params[] = new Object[] {googleKey, "hello" };
String response = (String) c3.invoke(params);
System.out.println("Response = " + response);
// container-managed port selection
GoogleSearchPort sei = (GoogleSearchPort)
service.getPort(GoogleSearchPort.class);
sei = (GoogleSearchPort)
service.getPort(PORT_QNAME, GoogleSearchPort.class);
QName serviceName = service.getServiceName();
URL wsdlLocation = service.getWSDLDocumentLocation();
if( wsdlLocation != null ) {
System.out.println("wsdlLocation = " + wsdlLocation);
}
Iterator ports = service.getPorts();
System.out.println("Calling oneway operation");
Call oneway = service.createCall(PORT_QNAME, "helloOneWay");
if( targetEndpointAddress != null ) {
oneway.setTargetEndpointAddress(targetEndpointAddress);
}
long oneWayMethodWaitTimeInMillis = 4000;
Date before = new Date();
oneway.invokeOneWay(new Object[]
{ oneWayMethodWaitTimeInMillis + "" });
Date after = new Date();
long elapsedTime = after.getTime() - before.getTime();
System.out.println("one way operation began at " + before +
" and returned at " + after +
" and took " + elapsedTime + " milli-seconds");
if( elapsedTime > oneWayMethodWaitTimeInMillis ) {
throw new Exception("one way operation blocked for too long ");
}
// now wait for the remainder of the time. this is to
// avoid race conditions where we finish the test and begin
// to undeploy, but the endpoint is still executing its
// oneway operation.
long sleepTime = (oneWayMethodWaitTimeInMillis - elapsedTime);
System.out.println("now sleeping for " + sleepTime + " milli secs");
Thread.sleep(sleepTime);
System.out.println("returning from doDynamicProxyTest");
}
private void doDIINoWSDLTest(Context ic, String googleKey,
String endpointAddress) throws Exception {
System.out.println("Doing DII without WSDL tests");
Service service =(Service) ic.lookup("java:comp/env/service/DIINoWSDL");
try {
Call call = service.createCall(PORT_QNAME);
} catch(java.lang.UnsupportedOperationException uoe) {
System.out.println("Successfully caught unsupported operation " +
"for Service.createCall(QName port)");
}
try {
Call call = service.createCall(PORT_QNAME, OPERATION_QNAME);
} catch(java.lang.UnsupportedOperationException uoe) {
System.out.println("Successfully caught unsupported operation " +
"for Service.getCall(QName, QName)");
}
try {
Call call = service.createCall(PORT_QNAME, "doSpellingSuggestion");
} catch(java.lang.UnsupportedOperationException uoe) {
System.out.println("Successfully caught unsupported operation " +
"for Service.getCall(QName, String)");
}
try {
Call[] calls = service.getCalls(PORT_QNAME);
} catch(java.lang.UnsupportedOperationException uoe) {
System.out.println("Successfully caught unsupported operation " +
"for Service.getCalls()");
}
try {
service.getHandlerRegistry();
} catch(java.lang.UnsupportedOperationException uoe) {
System.out.println
("Successfully caught unsupported operation exception " +
"for Service.getHandlerRegistry()");
}
try {
Remote remote = service.getPort(GoogleSearchPort.class);
} catch(java.lang.UnsupportedOperationException uoe) {
System.out.println("Successfully caught unsupported operation " +
"for Service.getPort(SEI)");
}
try {
Remote remote = service.getPort(PORT_QNAME, GoogleSearchPort.class);
} catch(java.lang.UnsupportedOperationException uoe) {
System.out.println("Successfully caught unsupported operation " +
"for Service.getPort(QName, SEI)");
}
try {
Iterator ports = service.getPorts();
} catch(java.lang.UnsupportedOperationException uoe) {
System.out.println("Successfully caught unsupported operation " +
"for Service.getPorts()");
}
try {
QName serviceName = service.getServiceName();
} catch(java.lang.UnsupportedOperationException uoe) {
System.out.println("Successfully caught unsupported operation " +
"for Service.getName()");
}
try {
service.getTypeMappingRegistry();
} catch(java.lang.UnsupportedOperationException uoe) {
System.out.println
("Successfully caught unsupported operation exception " +
"for Service.getTypeMappingRegistry()");
}
Call untypedCall = service.createCall();
}
}