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);
  }
 }


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

Copyright 2003 FUJITSU LIMITED