1:nのマッピングが正しくできない

http://d.hatena.ne.jp/hoso-kawa/20041205#1102178600
にあった件を、休憩の合間をぬって見てみました。id:MIZOMIZさんの言う通り、JavaBeans - List - JavaBeansの階層だとマッピングされませんでした。List - JavaBeans - List - JavaBeansならマッピングされるのはOpenAMFUtilsが”良き(悪?!)に計らっているから”です(^^;

根本的な解決方法は、2つあります。

  1. 引数として渡ってくるオブジェクトを全て走査し、_remoteClassを見てオブジェクトのコンバートを行う。S2OpenAMFの変更のみで対応が可能ですが、ちょっと時間かかる。
  2. OpenAMFのASObjectをいじる。根本的かつ一番簡単です。



public String getType() {
String remoteClass = (String) this.get("_remoteClass");
if (remoteClass != null) {
return remoteClass;
}

return type;
}
// 赤い文字の所が追加した記述
上記のようにASObjectを改良すると、既存のS2OpenAMFのパラメータをコンバートする処理が全て必要なくなり、AS2.0への対応が完璧にできます。既に実装されている部分にも悪影響はありません。しかし、OpenAMFに手を入れる事になってしまいます。

時間がある時に前者の案で実装しちゃってもいいんですけど、根本的な解決を試みるなら、OpenAMF, ASTranslatorのチームにAS2.0への対応をお願いするって所でしょうか。S2OpenAMFOpenAMFに手を加えずにAS2.0対応をするのは、オーバーヘッドがかかりますから。

月末近くになると思いますが、前者の対応で実装してみようと思います。合わせてOpenAMFのASObjectにパッチを当てたものを配布…需要があれば置いておきますが(^^;