Interstage Application Server SOAPサービス ユーザーズガイド
目次 索引 前ページ次ページ

第8章 サポートされるデータ型> 8.2 XMLとCORBAのデータ型マッピング

8.2.2 列挙型

 以下の表にCORBAの列挙(enum)型とXMLのデータ型の対応を示します。
 RPCアプリケーション上のJavaのデータ型は、inパラメタ/返り値(return)はデータ名SOAPEnumImplクラス、outパラメタ/inoutパラメタはデータ名SOAPEnumImplHolderになります。RPCアプリケーションでは、連携するCORBAアプリケーションのenum型に対して、“データ名SOAPEnumImpl”と“データ名SOAPEnumImplHolder”クラスを使用します。

XMLのデータ型

RPCアプリケーション上のJavaのデータ型

CORBAのデータ型

in/return

out/inout

列挙

データ名SOAPEnumImpl

データ名SOAPEnumImplHolder

enum

 
 以下のIDL定義をIDLコンパイルした場合

 module fujitsu {
   module sample {
     enum Color {blue, red, green};
   };
 };

 

 以下のenum名+SOAPEnumImplクラスが生成されます。

 package fujitsu.sample;
 public class ColorSOAPEnumImpl
 {
   private String _value;
   public static final String _blue = "blue";
   public static final String _red = "red";
   public static final String _green = "green";
   public static final ColorSOAPEnumImpl blue = new ColorSOAPEnumImpl(_blue);
   public static final ColorSOAPEnumImpl red = new ColorSOAPEnumImpl(_red);
   public static final ColorSOAPEnumImpl green = new ColorSOAPEnumImpl(_green);

   private static final String[] member = new String[] {
                                                      "blue",
                                                      "red",
                                                      "green" };
   protected ColorSOAPEnumImpl()
   {
   }
   protected ColorSOAPEnumImpl( String value )
   {
     _value = value;
   }
   public String getValue()
   {
     return _value;
   }
   public static ColorSOAPEnumImpl fromValue( String value )
   {
     if( value.equals(_blue)) return blue;
     else if( value.equals(_red)) return red;
     else if( value.equals(_green)) return green;
     else
       throw new java.lang.IllegalArgumentException("Invalid Enum value: "+ value);
   }
   public static ColorSOAPEnumImpl fromString( String value )
   {
     if( value.equals(_blue)) return blue;
     else if( value.equals(_red)) return red;
     else if( value.equals(_green)) return green;
     else
       throw new java.lang.IllegalArgumentException("Invalid Enum string: "+ value);
   }
   public boolean equals( Object obj )
   {
     if( obj instanceof fujitsu.sample.ColorSOAPEnumImpl )
     {
       if(((fujitsu.sample.ColorSOAPEnumImpl)obj).getValue() == getValue())
       {
          return(true);
       }
     }
     return(false);
   }
   public int hashCode()
   {
     return(getValue().hashCode());
   }
   public String toString()
   {
     return (_value);
   }
   public int getIndex()
   {
     if( _value == null ){
       throw new java.lang.IllegalArgumentException("Mapping fail, non initialize.");
     }
     if( member == null ){
       throw new java.lang.IllegalArgumentException("Enumm member non exsit.");
     }
     for(int index = 0 ; index < member.length; index++){
       if(_value.equals(member[index])){
         return(index);
       }
     }
     throw new java.lang.IllegalArgumentException(
                    "Mapping fail, invalid Enum : "+ _value);
   }
   public void setByIndex(int index)
   {
     if(0<=index && index<member.length){
       _value = member[index];
       return;
     }
     throw new java.lang.IllegalArgumentException("Invalid Enum index: "+index);
   }
 }

目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2005