データ・ハンドラーは、ネーム・ハンドラー を呼び出して、直列化データからビジネス・オブジェクト定義の名前を抽出できます。このタスクは、データ・ハンドラーの呼び出し元が、直列化データを取り込むビジネス・オブジェクトを受け渡さない ときに、ストリングからビジネス・オブジェクトへの変換時に必要となります。この場合は、データ・ハンドラーがビジネス・オブジェクトを作成してから、取り込みが可能になります。ビジネス・オブジェクトを作成するには、データ・ハンドラーが関連したビジネス・オブジェクト定義の名前を認識しておく必要があります。このビジネス・オブジェクト名を取得するのはネーム・ハンドラーです。
カスタム・ネーム・ハンドラーを作成およびインプリメントするタスクには、次の一般的なステップが含まれます。
カスタム・ネーム・ハンドラーを作成するには、ネーム・ハンドラー基本クラス (NameHandler) を拡張して、独自のネーム・ハンドラー・クラス を作成します。NameHandler クラスには、直列化データからビジネス・オブジェクトの名前を抽出するメソッドが含まれます。このネーム・ハンドラー基本クラスのパッケージは、com.crossworlds.DataHandlers.NameHandler です。
ネーム・ハンドラー・クラスを派生させるには、以下のステップを実行します。
import
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 抽象基本クラスを拡張します。
NameHandler クラスを拡張するには、getBOName() メソッドをインプリメントする必要があります。このメソッドは、直列化データを読み取り、そのデータに関連するビジネス・オブジェクトの名前を戻します。このメソッドの構文は次のとおりです。
public abstract String getBOName(Reader serializedData, String BOPrefix) throws MalformedDataException
ここで、
カスタム・ネーム・ハンドラーを使用するようにデータ・ハンドラーに通知するには、メタオブジェクト属性の Default Value プロパティーを完全クラス名に設定する必要があります。データ・ハンドラーはこの後、構成オプションの 1 つから実行時にクラス名を取得できます。デフォルトでは、このメタオブジェクト属性は NameHandlerClass という名前です。 XML のデータ・ハンドラーに関連付けられた子メタオブジェクトには、この属性が含まれています。IBM からの納入時、この属性のデフォルト値として、デフォルトのネーム・ハンドラー・クラスの名前が指定されています。データ・ハンドラーにカスタム・ネーム・ハンドラーを使用させるには、拡張するデータ・ハンドラーに関連付けられた子メタオブジェクトで、NameHandlerClass 属性の Default Value プロパティーを更新する必要があります。