2.6 Helperクラス

すべてのユーザ定義IDL型には,生成された型名の後ろにHelperが付いた,追加の「helper」Javaクラスがあります。型を処理するために必要な幾つかの次のような静的メソッドが提供されています。

ユーザ定義IDL型<typename>では,型用に生成された次のJavaコードがあります。マッピングされたIDLインタフェースのHelperクラスには,専用のnarrowオペレーションがあります。

abstract interfaceを継承するinterfaceを使用している,かつ,そのinterfaceのHelperクラスのnarrowオペレーションの引数にnullを指定した場合に,BAD_PARAM例外が発生します。

コードサンプル2-4 Helperクラス:ユーザ定義型に生成されたJavaコード

// generated Java helper
public class <typename>Helper {
   public static void
      insert(org.omg.CORBA.Any a, <typename> t);
   public static <typename> extract(org.omg.CORBA.Any a);
   public static org.omg.CORBA.TypeCode type( );
   public static String id( );
   public static <typename> read(
        org.omg.CORBA.portable.InputStream istream);
      {...}

   public static void write(
              org.omg.CORBA.portable.OutputStream ostream,
              <typename> value)
       {...}

  // only for interface helpers
  public static
      <typename> narrow(org.omg.CORBA.Object obj);
}

コードサンプル2-5 名前付き型のJava Helperクラスへのマッピング

// IDL - named type
struct st {long f1, String f2};

// generated Java
public class stHelper {
   public static void insert(org.omg.CORBA.Any any,
     st s); {...}
   public static st extract(org.omg.CORBA.Any a) {...}
   public static org.omg.CORBA.TypeCode type( ) {...}
   public static String id( ) {...}
   public static st read(
                       org.omg.CORBA.InputStream is) {...}
   public static void write(org.omg.CORBA.OutputStream os,
      st s) {...}
}

コードサンプル2-6 typedef列のJava Helperクラスへのマッピング

// IDL - typedef sequence
typedef sequence <long> IntSeq;

// generated Java helper
public class IntSeqHelper {
   public static void insert(org.omg.CORBA.Any any,
                              int[ ] seq);
   public static int[ ] extract(org.omg.CORBA.Any a){...}
   public static org.omg.CORBA.TypeCode type( ){...}
   public static String id( ){...}
   public static int[ ] read(
              org.omg.CORBA.portable.InputStream is)
     {...}
   public static void write(
              org.omg.CORBA.portable.OutputStream os,
              int[ ] seq)
     {...}
}