カスタム・ネーム・ハンドラーの作成

データ・ハンドラーは、ネーム・ハンドラー を呼び出して、直列化データからビジネス・オブジェクト定義の名前を抽出できます。このタスクは、データ・ハンドラーの呼び出し元が、直列化データを取り込むビジネス・オブジェクトを受け渡さない ときに、ストリングからビジネス・オブジェクトへの変換時に必要となります。この場合は、データ・ハンドラーがビジネス・オブジェクトを作成してから、取り込みが可能になります。ビジネス・オブジェクトを作成するには、データ・ハンドラーが関連したビジネス・オブジェクト定義の名前を認識しておく必要があります。このビジネス・オブジェクト名を取得するのはネーム・ハンドラーです。

注:
現在、XML データ・ハンドラーは、ネーム・ハンドラーを使用して、作成するビジネス・オブジェクトの名前を取得しています。

カスタム・ネーム・ハンドラーを作成およびインプリメントするタスクには、次の一般的なステップが含まれます。

  1. NameHandler クラスを拡張するクラスを作成します。
  2. 直列化データを読み取り、ビジネス・オブジェクト名を戻す抽象 getBOName() メソッドをインプリメントします。
  3. クラスをコンパイルし、それを DataHandlers¥CustDataHandler.jar ファイルへ追加します。詳細については、JAR ファイルへのデータ・ハンドラーの追加を参照してください。
  4. NameHandlerClass 属性のデフォルト値をデータ・ハンドラー用のメタオブジェクトに設定します。

NameHandler クラスの拡張

カスタム・ネーム・ハンドラーを作成するには、ネーム・ハンドラー基本クラス (NameHandler) を拡張して、独自のネーム・ハンドラー・クラス を作成します。NameHandler クラスには、直列化データからビジネス・オブジェクトの名前を抽出するメソッドが含まれます。このネーム・ハンドラー基本クラスのパッケージは、com.crossworlds.DataHandlers.NameHandler です。

ネーム・ハンドラー・クラスを派生させるには、以下のステップを実行します。

  1. NameHandler クラスを拡張するネーム・ハンドラー・クラスを作成します。
  2. 次のコマンドを入力して、ネーム・ハンドラー・クラス・ファイルに NameHandler パッケージのクラスを インポートします。
    import 
     
  3. NameHandler クラス内の抽象メソッドである getBOName() を インプリメントします。詳細については、getBOName() メソッドのインプリメントを参照してください。

NameHandler クラスの定義は、次のとおりです。

// Imports
 import java.lang.String;
 import java.io.Reader;
 import com.crossworlds.DataHandlers.Exceptions.MalformedDataException;
  
 public abstract class NameHandler {
  
 // Constructors
 public NameHandler() { }
  
 // Methods
 public abstract String getBOName(Reader serializedData,
 String boPrefix)
 throws MalformedDataException;
 }
  
 /* This method was introduced so that the NameHandler would have
  * a reference to the DataHandler. The DataHandler base calls this
  * method after it instantiated the NameHandler:
  * eg. nh = (NameHandler)Class.forName(className).newInstance();
  *     nh.setDataHandler(this);
 */
 public final void setDataHandler( DataHandler dataHandler )
 {
 dh = dataHandler;
 }
 

独自のネーム・ハンドラーを作成するには、NameHandler 抽象基本クラスを拡張します。

getBOName() メソッドのインプリメント

NameHandler クラスを拡張するには、getBOName() メソッドをインプリメントする必要があります。このメソッドは、直列化データを読み取り、そのデータに関連するビジネス・オブジェクトの名前を戻します。このメソッドの構文は次のとおりです。

public abstract String getBOName(Reader serializedData, String BOPrefix) 
 throws MalformedDataException
 

ここで、

serializedData
メッセージを含むオブジェクトへの参照。

BOPrefix
ビジネス・オブジェクト定義の名前のビジネス・オブジェクト・プレフィックスが含まれている String 値。この引き数は、メタオブジェクト (存在する場合) 内 の BOPrefix 属性に設定できます。

メタオブジェクト属性の設定

カスタム・ネーム・ハンドラーを使用するようにデータ・ハンドラーに通知するには、メタオブジェクト属性の Default Value プロパティーを完全クラス名に設定する必要があります。データ・ハンドラーはこの後、構成オプションの 1 つから実行時にクラス名を取得できます。デフォルトでは、このメタオブジェクト属性は NameHandlerClass という名前です。 XML のデータ・ハンドラーに関連付けられた子メタオブジェクトには、この属性が含まれています。IBM からの納入時、この属性のデフォルト値として、デフォルトのネーム・ハンドラー・クラスの名前が指定されています。データ・ハンドラーにカスタム・ネーム・ハンドラーを使用させるには、拡張するデータ・ハンドラーに関連付けられた子メタオブジェクトで、NameHandlerClass 属性の Default Value プロパティーを更新する必要があります。

Copyright IBM Corp. 2004