package oracle.demo.topdownrpc;
import javax.xml.rpc.ServiceFactory;
import javax.xml.rpc.Stub;
import javax.xml.rpc.holders.StringHolder;
import javax.xml.rpc.holders.IntHolder;
import javax.xml.rpc.holders.FloatHolder;
import java.net.URL;
import java.util.logging.*;
import java.io.StringWriter;
import java.io.PrintWriter;
import oracle.demo.topdownrpc.types.*;
import oracle.demo.topdownrpc.stubs.*;
public class RpcLitTopdownClient {
private static float VAL_FLOAT = 2.009f;
private static int VAL_INT = 75;
private static String VAL_STRING = "April is the cruelest month.";
private static float VAL_FLOAT1 = 3.8776f;
private static int VAL_INT1 = 200;
private static String VAL_STRING1 = "Turning and turning in the widening gyre\n"+
" The falcon cannot hear the falconer; ";
private static String VAL_STRING2 = "Things fall apart";
private String m_serviceURL = null;
private ServiceFactory m_factory;
private static String RESOURCE_BUNDLE = "oracle.demo.topdownrpc.RpcLitTopdownClient";
private static Logger m_loggerDefault = Logger.getAnonymousLogger(RESOURCE_BUNDLE);
private Logger m_logger;
public RpcLitTopdownClient(String serviceURL) throws Exception{
m_serviceURL = serviceURL;
m_factory = ServiceFactory.newInstance();
m_logger = Logger.getLogger("oracle.demo.topdownrpc",RESOURCE_BUNDLE);
m_logger.setLevel(Level.ALL);
SimpleFormatter formatter = getFormatter();
m_logger.setUseParentHandlers(false);
m_logger.addHandler(new StreamHandler(System.out,formatter){
public synchronized void publish(LogRecord record){
super.publish(record);
flush();
}
});
}
private SimpleFormatter getFormatter() {
return new SimpleFormatter(){
public synchronized String format(LogRecord record){
StringBuffer sb = new StringBuffer();
String message = formatMessage(record);
sb.append(record.getLevel().getLocalizedName());
sb.append(": ");
sb.append(message);
sb.append(System.getProperty("line.separator"));
if(record.getThrown() != null){
try{
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
record.getThrown().printStackTrace(pw);
pw.close();
}
catch(Exception ex){
}
}
return sb.toString();
}
};
}
public static void main(String args[]){
String serviceURL = null;
if(args.length > 0){
serviceURL = args[0];
}
else{
m_loggerDefault.log(Level.SEVERE,"demo.error.nourl");
return;
}
try{
RpcLitTopdownClient demo = new RpcLitTopdownClient(serviceURL);
demo.runDemo();
}
catch(Exception ex){
ex.printStackTrace();
}
}
private void runDemo() throws Exception{
demoEchoStruct();
demoEchoStructArray();
demoEchoString();
demoEchoIntegerArray();
demoEchoStringArray();
demoEchoBoolean();
demoEchoStructAsSimpleTypes();
demoEchoNestedArray();
demoEchoNestedStruct();
}
public SoapTestPortTypeRpc initializeService() throws Exception{
WhiteMesaSoapRpcLitTestSvc service = (WhiteMesaSoapRpcLitTestSvc)
m_factory.loadService(new URL(m_serviceURL),
WhiteMesaSoapRpcLitTestSvc.class, null);
SoapTestPortTypeRpc port = service.getSoap11TestRpcLitPort();
((Stub)port)._setProperty(Stub.ENDPOINT_ADDRESS_PROPERTY,m_serviceURL);
return port;
}
private void demoEchoNestedStruct() throws Exception{
m_logger.log(Level.INFO,"demo.echoNestedStruct.enter");
SoapTestPortTypeRpc port = initializeService();
SOAPStruct struct1 = new SOAPStruct();
struct1.setVarFloat(VAL_FLOAT1);
struct1.setVarInt(VAL_INT1);
struct1.setVarString(VAL_STRING1);
SOAPStructStruct ss = new SOAPStructStruct(VAL_STRING,VAL_INT,VAL_FLOAT,struct1);
ss = port.echoNestedStruct(ss);
struct1 = ss.getStructItem();
m_logger.log(Level.INFO,"demo.echoNestedStruct.msg",new Object[]{
new String() + ss.getVarString(),
new String() + ss.getVarInt(),
new String() + ss.getVarFloat(),
});
m_logger.log(Level.INFO,"demo.echoNestedStruct.msg1",new Object[]{
new String() + struct1.getVarString(),
new String() + struct1.getVarInt(),
new String() + struct1.getVarFloat(),
});
m_logger.log(Level.INFO,"demo.echoNestedStruct.exit");
}
private void demoEchoNestedArray() throws Exception{
m_logger.log(Level.INFO,"demo.echoNestedArray.enter");
SOAPArrayStruct arrayStruct = new SOAPArrayStruct();
SoapTestPortTypeRpc port = initializeService();
ArrayOfstring aos = new ArrayOfstring(new String[]{
VAL_STRING1,VAL_STRING2
});
arrayStruct.setVarArray(aos);
arrayStruct.setVarFloat(VAL_FLOAT);
arrayStruct.setVarInt(VAL_INT);
arrayStruct.setVarString(VAL_STRING);
arrayStruct = port.echoNestedArray(arrayStruct);
aos = arrayStruct.getVarArray();
m_logger.log(Level.INFO,"demo.echoNestedArray.msg",new Object[]{
new String() + arrayStruct.getVarString(),
new String() + arrayStruct.getVarInt(),
new String() + arrayStruct.getVarFloat(),
new String() + aos.getStringItem()[0],
new String() + aos.getStringItem()[1]
});
m_logger.log(Level.INFO,"demo.echoNestedArray.exit");
}
private void demoEchoStructAsSimpleTypes() throws Exception{
m_logger.log(Level.INFO,"demo.echoStructAsSimpleTypes.enter");
SoapTestPortTypeRpc port = initializeService();
SOAPStruct struct = new SOAPStruct();
struct.setVarFloat(VAL_FLOAT);
struct.setVarInt(VAL_INT);
struct.setVarString(VAL_STRING);
StringHolder strHolder = new StringHolder();
IntHolder intHolder = new IntHolder();
FloatHolder floatHolder = new FloatHolder();
port.echoStructAsSimpleTypes(struct,strHolder,intHolder,floatHolder);
m_logger.log(Level.INFO,"demo.echoStructAsSimpleTypes.msg",new Object[]{
new String() + strHolder.value,
new String() + intHolder.value,
new String() + floatHolder.value
});
m_logger.log(Level.INFO,"demo.echoStructAsSimpleTypes.exit");
}
private void demoEchoBoolean() throws Exception{
m_logger.log(Level.INFO,"demo.echoBoolean.enter");
SoapTestPortTypeRpc port = initializeService();
boolean bVal = port.echoBoolean(true);
m_logger.log(Level.INFO,"demo.echoBoolean.msg",new Boolean(bVal));
m_logger.log(Level.INFO,"demo.echoBoolean.exit");
}
private void demoEchoIntegerArray() throws Exception{
m_logger.log(Level.INFO,"demo.echoIntegerArray.enter");
SoapTestPortTypeRpc port = initializeService();
int array[] = new int[]{VAL_INT,VAL_INT1};
ArrayOfint aoi = new ArrayOfint(array);
aoi = port.echoIntegerArray(aoi);
array = aoi.getInteger();
m_logger.log(Level.INFO,"demo.echoIntegerArray.msg",new Object[]{
new String() + array[0],
new String() + array[1]
});
m_logger.log(Level.INFO,"demo.echoIntegerArray.exit");
}
private void demoEchoString() throws Exception{
m_logger.log(Level.INFO,"demo.echoString.enter");
SoapTestPortTypeRpc port = initializeService();
String ret = port.echoString(VAL_STRING);
m_logger.log(Level.INFO,"demo.echoString.msg",ret);
m_logger.log(Level.INFO,"demo.echoStructArray.exit");
}
private void demoEchoStringArray() throws Exception{
m_logger.log(Level.INFO,"demo.echoStringArray.enter");
SoapTestPortTypeRpc port = initializeService();
ArrayOfstring aos = new ArrayOfstring(new String[]{ VAL_STRING1,VAL_STRING2 });
aos = port.echoStringArray(aos);
m_logger.log(Level.INFO,"demo.echoStringArray.msg",new Object[]{
new String() + aos.getStringItem()[0],
new String() + aos.getStringItem()[1]
});
m_logger.log(Level.INFO,"demo.echoStringArray.exit");
}
private void demoEchoStructArray() throws Exception{
m_logger.log(Level.INFO,"demo.echoStructArray.enter");
SoapTestPortTypeRpc port = initializeService();
SOAPStruct struct = new SOAPStruct();
struct.setVarFloat(VAL_FLOAT);
struct.setVarInt(VAL_INT);
struct.setVarString(VAL_STRING);
SOAPStruct struct1 = new SOAPStruct();
struct1.setVarFloat(VAL_FLOAT1);
struct1.setVarInt(VAL_INT1);
struct1.setVarString(VAL_STRING1);
ArrayOfSOAPStruct array = new ArrayOfSOAPStruct(new SOAPStruct[]{
struct,struct1
});
array = port.echoStructArray(array);
SOAPStruct[] resp = array.getStructItem();
m_logger.log(Level.INFO,"demo.echoStructArray.msg1",new Object[]{
new String("float=") + resp[0].getVarFloat(),
new String("int=") + resp[0].getVarInt(),
new String("string=") + resp[0].getVarString()
});
m_logger.log(Level.INFO,"demo.echoStructArray.msg1",new Object[]{
new String("float=") + resp[1].getVarFloat(),
new String("int=") + resp[1].getVarInt(),
new String("string=") + resp[1].getVarString()
});
m_logger.log(Level.INFO,"demo.echoStructArray.exit");
}
private void demoEchoStruct() throws Exception{
m_logger.log(Level.INFO,"demo.echoStruct.enter");
SoapTestPortTypeRpc port = initializeService();
SOAPStruct struct = new SOAPStruct();
struct.setVarFloat(VAL_FLOAT);
struct.setVarInt(VAL_INT);
struct.setVarString(VAL_STRING);
struct = port.echoStruct(struct);
m_logger.log(Level.INFO,"demo.echoStruct.msg",new Object[]{
new String("float=") + struct.getVarFloat(),
new String("int=") + struct.getVarInt(),
new String("string=") + struct.getVarString()
});
m_logger.log(Level.INFO,"demo.echoStruct.exit");
}
}
|