/*
 * Java Network Programming, Second Edition
 * Merlin Hughes, Michael Shoffner, Derek Hamner
 * Manning Publications Company; ISBN 188477749X
 *
 * http://nitric.com/jnp/
 *
 * Copyright (c) 1997-1999 Merlin Hughes, Michael Shoffner, Derek Hamner;
 * all rights reserved; see license.txt for details.
 */

import Bank.*;

import org.omg.CORBA.*;
import org.omg.CosNaming.*;

public class AccountClient {
  public static void main (String[] args) throws UserException {
    ORB orb = ORB.init (args, null);

    org.omg.CORBA.Object nameService_ =
      orb.resolve_initial_references ("NameService");
    NamingContext nameService = NamingContextHelper.narrow (nameService_);

    NameComponent name = new NameComponent ("Jim Bean", "Account");
    NameComponent[] path = { name };

    org.omg.CORBA.Object jimBean_ = nameService.resolve (path);
    Account jimBean = AccountHelper.narrow (jimBean_);

    System.out.println ("Account balance = " + jimBean.balance ());
    jimBean.deposit (254.50f);

    System.out.println ("New balance = " + jimBean.balance ());

    try {
      jimBean.withdraw (jimBean.balance () + .01f);
    } catch (InsufficientFunds ex) {
      System.out.println ("Insufficient funds = " + ex.currentBalance);
    }

    jimBean_._release ();
  }
}
