バグ #120
完了独自定義型データのJavaOut/C++In
100%
説明
独自定義型のデータをout/inする際、
・Java Out / Java In
・ C++ Out / C++ In
・ C++ Out / Java In
は問題なく動作しますが、Java Out / C++ Inの組み合わせの場合、C++ In側でデータの
isNew()がtrueになりません(readしてもnull)。基本データ型の場合は問題ありません。
独自定義型(IDL)には、floatとstringを1個ずつ入れています。
OS :Ubuntu8.04
JavaRTM:0.4.1-RELEASE
C++RTM :0.4.2-RELEASE
どこに問題があるかは不明ですが、とりあえずこのプロジェクトにアップしました。
それぞれ(Java Out, Java In, C++ Out, C++ In)のソースも添付します。
ご確認をお願い致します。 セック村永
ファイル
匿名ユーザー さんが16年以上前に更新
- ステータス を 新規 から 終了 に変更
- 進捗率 を 0 から 100 に変更
【2008/08/15 セック村永】
自己レスです。
TypeCodeあたりが問題かと思い調べたところ、IDLコンパイル(Java)で作成される
MyDataHelper.java の _id が"IDL:RTC/MyData/MyData:1.0"のように
IDL:RTC/<型名>/<型名>:1.0となっていることが原因でした。
→正しくは、IDL:RTC/<型名>:1.0 です。
産総研の安藤様、テクノロジックアートの坂本様にご調査いただいたところ、
jdk1.6.0-0~1.6.0-7 のidljのバグで、jdk1.5.x系かjdk1.6.0-10以降(ただし現状RC版)
でidlコンパイルすれば問題ないことが分かりました。
→基本データ型は、1.5.x系でIDLコンパイルされたBasicDataInfo.idlの**Helper.java
を参照するため、問題ありません。
Ubuntu7.10, 8.04はjdkが~1.6.0-7のためご注意下さい。
安藤様に以下のスクリプトも作成していただきました。**Helper.javaのある
ディレクトリでスクリプトを実行すると、NGのバージョンでも問題なくなります。
--------------------
#!/bin/sh
for f in *Helper.java ; do
cp $f $f.old
typename=`echo $f | sed e 's/Helper.java//'`
sed "s/IDL:RTC\/$typename\/$typename/IDL:RTC\/$typename/" $f.old > $f
rm $f.old
done
-------------------
以上