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 エンコーディングのリファレンスマニュアルを参照してください。