通信アダプタ用 OTD の開発

型変換の処理

BatchFTP OTD の Payload ノードは、バイト配列 (byte[] ) として定義済みです。この定義により、アダプタはバイナリデータと文字データの両方を処理できます。

たとえば、「data」ノードが String (java.lang.String) として定義されている別の OTD (別のアダプタの OTD や、ユーザーが定義した OTD など) を使用できます。その String を BatchFTP OTD の Payload ノードにマップすると、コラボレーションエディタは、自動的に型変換を行い、次の例に示したようなコードを作成します。


注 –

この機能は注意して使用してください。これは、多くの状況で機能しますが、デフォルトのエンコーディングが変換でエラーを引き起こすことがあります。


コード変換と生成

たとえば、文字列からバイトへの配列変換 (またはその逆) で生成される Java コードは次のようになります。


 getoutput().setPayload(STCTypeConverter.toByteArray
    (getinput().getBlob()));

または


 getinput().setBlob(STCTypeConverter.toString
    (getoutput().getPayload()));

ブロブデータをバイト配列として定義した場合、型変換は不要です。変換が必要な場合、コラボレーションエディタは、前の例に示しているように、Java 仮想マシン (JVM) のデフォルトエンコーディングを使用してコードへの変換を実行します。

型変換のトラブルシューティング

前に説明したように、デフォルトエンコーディングおよび変換は、多くの状況で機能します。ただし、たとえば .zip ファイルのようなバイナリデータで、エンコーディングが変換でエラーを引き起こすことがあります。データ文字セットと JVM のデフォルトエンコーディングに応じて、適切なエンコーディングを選択してください。ほとんどの場合、エンコーディング文字列「ISO-8859-1」を使用するのが最善の選択です。

このエンコーディングを使用するには、エンコーディング文字列を追加することによってコードを手作業で変更します。前の例では、「ISO-8859-1」を使用するコードは次のようになります。


 getoutput().setPayload(STCTypeConverter.toByteArray
    (getinput().getBlob(), "ISO-8859-1"));

または


 getinput().setBlob(STCTypeConverter.toString
    (getoutput().getPayload(), "ISO-8859-1"));

この文字列を使用すると、この型変換の問題が解決されます。詳細は、該当する JVM エンコーディングのリファレンスマニュアルを参照してください。