package org.jacorb.demo.unions;

import java.io.BufferedReader;
import java.io.FileReader;

import org.omg.CORBA.ORB;

//an example for using IDL unions

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

        BufferedReader reader = new BufferedReader(new FileReader(args[0]));

        MyServer s = MyServerHelper.narrow(orb.string_to_object(reader.readLine()));

        UnitedColors my_union = new UnitedColors();
        UnitedColorsHolder my_union_holder = new UnitedColorsHolder();

        // set up union and make call

        my_union.s("hallo");
        s.writeUnion(my_union, my_union_holder);

        // get the union that came back in the out holder

        my_union = my_union_holder.value;

        // examine the contents of the union that came back

        switch (my_union.discriminator().value() )
        {
            case colorT._blue :
                System.out.println("Blue: " + my_union.s() );
                break;
            case colorT._red :
                System.out.println("Red: " + my_union.s() );
                break;
            default :
                System.out.println("default: " + my_union.i() );
        }

        String [] strs = {"hello", "world"};

        my_union.strs( strs );
        s.writeUnion(my_union, my_union_holder);

        /* other union type */

        Nums n = new Nums();
        n.l(4711);
        s.write2ndUnion(n);

        s.shutdown();
    }
}
