このセクションでは、デフォルトでサポートされていないメッセージ形式をカバーするために、 SOAtest/Virtualize のインターフェイスと操作を拡張する方法について説明します。このセクションの内容: SOAtest/ Virtualize には、SOAtest/Virtualize のビルトイン メッセージ形式を拡張できるフレーム ワークがあります。このフレーム ワークは、ユーザーが作業する任意のメッセージ形式をサポートします。たとえば、メインフレーム メッセージ形式、バイナリ形式、またはその他の独自のメッセージ形式などです。メッセージ形式は、ネイティブ形式と XML 間の変換を作成することで定義します。この変換によってユーザーは、 SOAtest で利用可能な XML ツールを使用して、メッセージを構成し検証できます。拡張機能は Java で実装されます。 カスタム メッセージ形式が追加されると、SOAtest/Virtualize はそのメッセージ形式を使用してリクエスト/レスポンス メッセージを構成および送信できる新しいクライアントまたはレスポンダーを自動的に作成します。 ユーザーはこの新しいクライアントのインスタンスをユーザーの テスト シナリオに追加できます。 使用方法の詳細については、「Custom Client」および 「カスタム Message Responder」を参照してください。 新しいメッセージ形式は XML Converter ツールにも表示されます。詳細については、「XML Converter」に記載しています。 フォーマット間の一般的な変換定義に加えて、そのフォーマット中の各メッセージの正確な構造を定義する、特定のメッセージ タイプのセットを任意で定義できます。たとえば、ユーザーは XML 変換に一般的な FIX を定義したとします。しかし、ユーザーのアプリケーションで使用される特定の FIX メッセージのセットも定義したとします。各メッセージ タイプの構成は、 XML スキーマを使用して定義され、 SOAtest/Virtualize の拡張機能によって提供されます。 ネイティブ形式と XML 間の変換ロジックを実装するのに使用する必須クラスです。toXML() メソッドはユーザーのメッセージを XML フォーマットで返し、 toNative() メソッドはユーザーのメッセージをネイティブ形式で返します。メソッドは次の引数を受け取ります: toXML() は INativeMessage を返し、 toNative() は IXMLMessage を返します。便宜上使用できる、これらのインターフェイスのデフォルト実装があります (DefaultNativeMessage および DefaultXMLMessage) 。 toNative では、実装者は xmlMessage パラメーターのメッセージ タイプが {@code null} である場合に対応する必要があります。定義されている特定の変換が、明確なメッセージ タイプを渡されないと XML からネイティブ メッセージへの変換方法が分からない場合、{@link CustomConversionException} がスローされます。 toXML では、変換が任意で書かれている可能性があるので、渡された nativeMessage のメッセージ タイプを自動的に検出できます。この自動検出は、リテラル ビューからフォーム ビューに切り替えるときや、仮想アセットの生成にトラフィック ウィザードを使用するときに、メッセージ タイプを判断するために使用されます。変換が自動検出をサポートしない場合、メッセージ タイプを明示的に選択するか、 SOAtestはメッセージ タイプの検出を試みます (必ずしも正しいとは限りません)。自動検出をサポートするには、実装者は渡される nativeMessage のメッセージ タイプを無視するべきです。代わりに自分でメッセージ タイプを判断し、返される XML メッセージに設定します。 変換が自動検出をサポートしているかどうかを SOAtest/Virtualize が判断する方法であるため、実装者は nativeMessage パラメーターのメッセージ タイプが {@code null} である場合に対応する必要があります。定義されている特定の変換が自動検出をサポートしてなく、そのためにメッセージ タイプを渡されないと変換方法が分からない場合、 変換中に発生した エラー の対処方法は 2 種類あります。エラーが変換処理を中止すべき致命的なエラーの場合、適切なエラーメッセージと これらの変換処理は、以下の状況においてクライアント や XML Converter ツールから実行されます。 与えられたメッセージ形式に対して特定のメッセージ タイプを定義するとき、各メッセージ タイプに対する XML スキーマ を提供する必要があります。ISchemaGenerator はオプションのクラスです。与えられた特定のメッセージ タイプに XML スキーマを提供するメソッドを提供します。このクラスを実装せずに parasoft-extension.xml でこのクラスを参照している場合、代わりにスキーマ ファイルへの参照を提供する必要があります (詳細については、「カスタム メッセージ形式用に parasoft-extension.xml を定義」を参照してください)。 このインターフェイスは、次の引数を取る generateSchema() というメソッドだけを持ちます。 ICustomXMLConverterConfiguration: カスタム メッセージ形式 クライアントの [変換オプション] タブから渡される値へのアクセスを提供します。 generateSchema() は スキーマ ファイルへの参照である URI を返します。動的に生成されたスキーマへの参照、カスタム メッセージ形式拡張を提供する JAR ファイルにあるスキーマへの参照、または SOAtest 外部のリソースへの参照が考えられます。スキーマの生成にエラーが生じた場合、空の URI が返され、フォーム入力ビューは与えられたメッセージ タイプで適切に反映されません。 section 要素の field ID は、 拡張子の名前とともに、ICustomXMLConverter を実装するクラスの完全修飾クラス名は、クライアントで使用されるメッセージ形式を識別するために使用されます。.tst またじゃ .pva ファイルの保存後に、修飾されたクラス名または拡張の名前を変更すると、クライアントが使用しているメッセージ形式を解決できない結果となります。 この要素は、この拡張タイプに固有のものです。インポートされるユーザーのカスタム メッセージ形式に、有効かつ正確である必要があります。 id - ユーザーのメッセージ タイプの文字列識別子です。ひとつのメッセージ形式中で一意である必要があります。クライアント/レスポンダーを保存するときにも使用されるので、変更すると保存されたクライアントが使用しているメッセージ タイプを解決できなくなります。 プロジェクトをビルドし (「拡張機能の追加: 基本手順 (Virtualize)」または「拡張機能の追加: 基本手順 (SOAtest)」を参照)、SOAtest または Virtualize を再起動します。 ユーザーの新しいフォーマットは XML Converter のドロップダウン メニューにも表示されます。 parasoft-extension.xml に定義される GUI フィールドは、カスタム メッセージ形式 client/responder の [変換オプション] タブに表示されます。 GUI フィールドをパスワード フィールド (入力が隠され、指定したパスワードが安全に保存される) として働かせたい場合、そのフィールド要素に password に設定した type 属性を与えます。たとえば、以下は pwd フィールドをパスワード モードに設定します。 SimpleMessage という カスタム メッセージ形式があるとします。SimpleMessage は、キーと値のペアをスペース区切りで構成しています (例: このカスタム フォーマットが SOAtest に追加されると、SOAtest は SimpleMessage と XML を変換できるようになります。たとえば、次のように変換できます: 変換前 変換後: このプロジェクトには、2 つのメッセージ タイプが定義されています。 このサンプル カスタム フォーマットを SAOtest に追加するには、 2 通りの方法があります。GitHub からダウンロードできる Java ソース プロジェクトから追加する方法、またはこのプロジェクトから作成できる JAR ファイルから追加する方法です。 Java ソース プロジェクト からサンプル フォーマットを追加するには、次の操作を行います。 提供されている Java ソース プロジェクトから、サンプル ソース コードをレビューできます。JAR ファイルは一般的にカスタム フォーマットをチーム内に共有する簡単な方法です。 このサンプル Java プロジェクトを JAR ファイルに変換するには、次の操作を行います。 他のチーム メンバーが JAR ファイルからカスタム フォーマットを追加できるようになりました。 (Java プロジェクトからではありません。上記のように、すでに Java プロジェクトからフォーマットを追加している場合は、これらのステップを踏む必要はありません) SOAtest にサンプルが追加されたら、 SimpleMessage Client ツールを作成し、XML Convertor ツールでフォーマットを使用できます。
カスタム メッセージ形式とは
カスタム メッセージ形式用に実装するインターフェイス
「拡張機能の追加: 基本手順 (Virtualize)」または「拡張機能の追加: 基本手順 (SOAtest)」にあるように環境を設定したら、次のインターフェイスを実装します (インターフェイスの詳細については、Extensibility API ドキュメントに記載されています)。ICustomXMLConverter の実装
{@link CustomConversionException}
がスローされるべきです。CustomConversionException
がスローされます。エラーが致命的でない場合 (つまり変換処理は継続できる場合)、 メッセージは IConversionContext.report(String メッセージ) を使用してレポートされ、(おそらく部分的に) 変換されたメッセージはメソッドによって返されます。エラーが例外のスローや report() の呼び出しによってレポートされた場合、クライアント/レスポンダーの GUI ダイアログとしてレポートされるか、クライアント / レスポンダーが実行時のエラーメッセージとしてレポートされます。ISchemaGenerator の実装
カスタム メッセージ形式用に parasoft-extension.xml を定義
必要なクラスを実装したら、以下のスキーマを使って parasoft-extension.xml を定義します (「拡張機能の追加: 基本手順 (SOAtest)」または「拡張機能の追加: 基本手順 (Virtualize)」を参照)。<?xml version="1.0" encoding="UTF-8"?>
<extension xmlns="urn:ocm/parasoft/extensibility-framework/extension"
type="messageFormat"
name='the name of your message format, appears in menus' description='A more detailed description'>
<class>com.myCompany.MyConverter</class> <!-- implements ICustomXMLConverter -->
<messageFormat xmlns="http://schemas.parasoft.com/extensibility-framework/messageFormat">
<defaultMimeType>text/plain</defaultMimeType>
<messageTypes generatorClass="com.myCompany.SchemaGenerator">
<messageType id='unique ID' name='name' xsd='path to schema in jar'/>
. . .
</messageTypes>
<client icon="myClient.gif" defaultTransport='default transport' />
<responder icon="myResponder.gif" />
</messageFormat>
<version id='your version ID' updaterClass="com.myCompany.myUpdater"/>
<form xmlns="urn:com/parasoft/extensibility-framework/gui">
<section label="field group 1">
<field id="key 1" label="field 1"/>
<field id="key 2" label="field 2"/>
</section>
<section label="field group 2">
<field id="key 3" label="field 3"/>
. . .
</section>
. . .
</form>
</extension>
ICustomXMLConverterConfiguration
インスタンスから値を取得するために使用されます。ICustomXMLConverterConfiguration
インスタンスはさまざまな API メソッドに渡され、ユーザーが提供する値をユーザーの実装に渡すことを許可します。それらはまた、保存されるときに、レスポンダー デプロイメント記述子ファイルにユーザーが提供する値を維持するために使用されます。GUI に表示されるフィールド ラベルはこの XML に基づいて構成されます。このセクション レイアウトはプログラムに影響を及ぼしません。エンドユーザーが使用しやすいように、さまざまな GUI フィールドを セクションまたはカテゴリに整理します。 <MessageFormat> 要素
messageTypes
要素が提供されない場合、ネイティブ形式と XML 間の特定のメッセージタイプを定義しない一般変換を定義します。このような形式の例としては、 CSV があります。ISchemaGenerator
を実装するクラスの完全修飾名を持つオプション属性です。新しいメッセージ形式の検証
ヒント
<form xmlns="urn:com/parasoft/extensibility-framework/gui">
<section label="Main Settings">
<field id="usr" label="Username"/>
<field id="pwd" label="Password" type="password"/>
</section>
</form>
サンプル
key1=value1 key2=value2 key3=value3 key4=value4
)。key1=value1 key2=value2 key3=value3 key4=value4
<?xml version="1.0" encoding="UTF-8"?>
<message xmlns="">
<body>
<key1>value1</key1>
<key2>value2</key2>
<key3>value3</key3>
<key4>value4</key4>
</body>
</message>
Java ソース プロジェクトからフォーマットを追加
JAR ファイルの作成
JAR ファイルからフォーマットを追加する
SOAtest のツールでカスタム フォーマットを使用する
SimpleMessage Client では、いずれかのメッセージ タイプを使用するか、Literal モードで独自のキーと値のペアを入力できます。
Overview
Content Tools