import hello.*;
import org.omg.CORBA.*;
import org.omg.CosNaming.*;
import org.omg.CosNaming.NamingContextPackage.*;

public class Cliente {

  public static void main(String args[]) {
    try {
      // Cria e inicializa o ORB
      ORB orb = ORB.init(args, null);

      // Obtem referencia para o servico de nomes
      org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService");
      NamingContextExt ncRef = 
        NamingContextExtHelper.narrow(objRef);
 
      // Obtem referencia para o servidor
      HelloPlus server = HelloPlusHelper.narrow(ncRef.resolve_str("Hello"));

      // Imprime mensagem de boas-vindas
      System.out.println("Mensagem inicial do servidor: " + server.welcome());


      // Imprime mensagem de boas-vindas
      System.out.println("Saudacao do servidor: " + server.hello());

      // Obtem o nome do cliente
      System.out.print("Entre com o seu nome: ");
      java.io.BufferedReader reader = new java.io.BufferedReader(new java.io.InputStreamReader(System.in));
      String nome = reader.readLine();

      // Imprime a saudacao
      System.out.println("Mensagem do servidor: " + server.helloName(nome));

      // Testa parametro out
      StringHolder helloMessage = new StringHolder();
      server.helloOut(helloMessage);
      System.out.println("Mensagem do servidor: " + helloMessage.value);

      // Testa excecao
      server.helloName("");

    } catch (hello.HelloPlusPackage.InvalidParameter e) {
        System.err.println("EXCECAO: Parametro " + e.paramName + " invalido.") ;
    } catch (Exception e) {
        e.printStackTrace();
    }
  }
}

