このセクションでは、既存の Extension Framework の拡張機能を参照している SOAtest の生成物 (.tst ファイル) および Virtualize の生成物 (.pva、.pvn ファイル) を、異なる GUI フィールドを含む新しいバージョンの拡張機能に適応させるアップデート方法について説明します。生成物を再生成することなく、新しいバージョンのカスタム拡張機能へアップデートさせることができます。
このセクションの内容:
Version Updater とは
新しい GUI オプションを備えた、既存の拡張機能の新しいバージョンを作成した場合、Version Updater を使用して新しく追加されたフィールドへ値を移行したり設定することができます。このアップデートを構成するには、 IVersionUpdater を実装し、parasoft-extension.xml に <version> 要素を含める必要があります。
IVersionUpdater の実装
新しい GUI オプションを備えた、既存の拡張機能の新しいバージョンを作成した場合に提供されるオプション クラスです。アップデーターは新しく追加されたフィールドへ値を移行したり設定したりするのに使用されます。
新しいバージョンの拡張機能が、アップデーター クラスを提供せずに、 GUI オプションを追加または変更する場合、拡張 GUI フィールドは現在のバージョンの parasoft-extension.xml で定義されたフィールドだけを表示します。古いバージョンの parasoft-extension.xml だけに存在する古いフィールドは表示しません。これらの古いフィールド用に保存されたフィールド値も、次に拡張機能のフィールド値を保存する際に削除されます。
アップデーターは、そのオプションが最後に保存された時点の拡張機能のバージョンを示すバージョン番号を渡します。バージョンが parasoft-extension.xml であらかじめ指定されていない場合、バージョン番号はゼロとなります。受け取った構成クラスは、フィールド値の取得または設定や、不必要なフィールドの削除に使用します。XML にないフィールドは自動的に削除されるので、アップデーターで手動で削除する必要はありません。
たとえば、フィールドを 2 つから 1 つにするために、XML の中のオプションを変更したとします。さらに、この新しいフィールドはオリジナルの 2 つのフィールド値を連結したものを含むとします。このような設定をするには、次のように記載します。
updateVersion(int savedVersion, ICustomConfiguration config) { if (savedVersion == 1) { String valueOne = config.getString("oldId1"); String valueTwo = config.getString("oldId2"); config.setString(newKey, valueOne + valueTwo); } }
parasoft-extension.xml の <Version> 要素
これは以下を定義するためのオプション要素です。
- ユーザーの拡張機能のバージョン
- 古いバージョンの拡張機能から新しいバージョンの拡張機能へ、保存された Parasoft 生成物をアップデートする、任意のアップデーター クラス
2 つの属性が適用可能です。
- id - 拡張機能の現行バージョン示す整数です 。このバージョンは フィールド値を格納する Parasoft 生成物に保存されます。Parasoft 生成物に格納されたバージョンは、IVersionUpdater を実装するクラスに渡されます。
- updaterClass - IVersionUpdater を実装するクラスの完全修飾名を持ちます。
section 要素の下の field id 値 は、ICustomXMLConverterConfiguration オブジェクトから、変換メソッドに渡す値を読み出すキーとして使用されます。これはユーザーが提供した値がユーザーの実装に渡せるようにします。
例:
IXMLMessage toXML(INativeMessage nativeMessage, IConversionContext context) throws CustomConversionException { String optionValue = context.getConfiguration().getString("fieldId"); }
GUI に表示される field label はこの XML に基づいて構成されます。それらはまた、.tst/.pva ファイルにユーザーが提供する値を維持するためにも使用されます。このセクション レイアウトはプログラムに影響を及ぼしません。エンドユーザーが使用しやすいように、さまざまな GUI フィールドを セクションまたはカテゴリに整理します。