package oracle.demo.handlerchain;
import oracle.demo.handlerchain.stubs.*;
import javax.xml.rpc.ServiceFactory;
import javax.xml.rpc.Stub;
import java.net.URL;
public class BankAccountClient {
private static String DEMO_USER1 = "DemoUser1";
private static String DEMO_USER2 = "DemoUser2";
private static String DEMO_USER3 = "DemoUser3";
private String m_serviceURL;
private ServiceFactory m_serviceFactory = null;
public BankAccountClient(String serviceURL) throws Exception{
m_serviceURL = serviceURL;
m_serviceFactory = ServiceFactory.newInstance();
}
private void runDemo() throws Exception{
demoGoodAccount();
demoInsufficientFunds();
demoWithdrawalCap();
}
private void demoWithdrawalCap() throws Exception{
OracleBank bankService = (OracleBank)m_serviceFactory.loadService(
new URL(m_serviceURL ),OracleBank.class,null);
BankBeanInterface port = bankService.getBankBeanInterfacePort();
((Stub)port)._setProperty(Stub.ENDPOINT_ADDRESS_PROPERTY,m_serviceURL);
String accountID = port.createAccount(DEMO_USER3,3000.00f);
System.out.println("Created an account for " + DEMO_USER3 + " with $3000.00");
System.out.println("Attempting to withdraw 2500.00 from the account."+
" The account cap is 2000.00");
try{
port.withdraw(accountID,2500.00f);
}
catch(Exception ex){
System.out.println("Unable to withdraw funds.");
System.out.println("Exception: " + ex.getMessage());
}
}
private void demoInsufficientFunds() throws Exception{
OracleBank bankService = (OracleBank)m_serviceFactory.loadService(
new URL(m_serviceURL ),OracleBank.class,null);
BankBeanInterface port = bankService.getBankBeanInterfacePort();
((Stub)port)._setProperty(Stub.ENDPOINT_ADDRESS_PROPERTY,m_serviceURL);
System.out.println("Attempting to create an account for " +
DEMO_USER2 + " with no initial funds");
try{
port.createAccount(DEMO_USER2,0f);
}
catch(Exception ex){
System.out.println("Could not createAccount for " + DEMO_USER2);
System.out.println("Exception: " + ex.getMessage());
}
}
private void demoGoodAccount() throws Exception{
OracleBank bankService = (OracleBank)m_serviceFactory.loadService(
new URL(m_serviceURL ),OracleBank.class,null);
BankBeanInterface port = bankService.getBankBeanInterfacePort();
((Stub)port)._setProperty(Stub.ENDPOINT_ADDRESS_PROPERTY,m_serviceURL);
String accountID = port.createAccount(DEMO_USER1,2000.50f);
System.out.println("Created an account for " + DEMO_USER1 + " with $2000.50");
System.out.println("AccountID for DemoUser is " + accountID);
System.out.println("Depositing $500.50 into account.");
port.deposit(accountID,500.50f);
float balance = port.getBalance(accountID,DEMO_USER1);
System.out.println("Current balance is now " + balance);
System.out.println("Withdrawing $250.00 from account");
port.withdraw(accountID,250.00f);
balance = port.getBalance(accountID,DEMO_USER1);
}
public static void main(String args[]){
String serviceURL = null;
if(args.length > 0){
serviceURL = args[0];
}
else{
System.out.println("no url specified");
return;
}
try{
BankAccountClient demo = new BankAccountClient(serviceURL);
demo.runDemo();
}
catch(Exception ex){
ex.printStackTrace();
}
}
}
|