包原様
産総研 安藤です
ご指摘の問題は、Javaのサービス実装コードのジェネレータの問題です。
シーケンスに関して in, out, inout の場合分けの処理が正しく行われて
いなかったようです。
修正したRtcTemplateのjarをお送りしますので、
試してみていただけないでしょうか?
#拡張子をjarに直してお使いください。
よろしくお願いいたします。
> 安川電機の包原と申します.
> お世話になっております.
>
> 以下について確認させて下さい.
>
> WindowsでJava版のOpenRTM-aist-0.4.1を使用しています.
>
> サービスポートの定義(IDL)で sequence を out タイプの
> 引数で使用するメソッドを定義した場合,こちらの環境では,
> RtcTemplate が生成するメソッドが idlj が生成するメソッドと
> 異なるため,そのままではビルドできません.
>
> 例)
>
> ■IDLファイル:
>> typedef sequence DoubleSeq;
>> typedef sequence FloatSeq;
>> typedef sequence StringSeq;
>>
>> interface TestService{
>> void testDoubleSeq(in DoubleSeq in_double, out DoubleSeq out_double);
>> void testFloatSeq(in FloatSeq in_float, out FloatSeq out_float);
>> void testStringSeq(in StringSeq in_string, out StringSeq out_string);
>> };
>
> ■RtcTemplate が生成するメソッド:
>
> ファイル:TestServiceSVC_impl.java
>> public void testDoubleSeq(double[] in_double, double[] out_double)
>> public void testFloatSeq(float[] in_float, float[] out_float)
>> public void testStringSeq(String[] in_string, String[] out_string)
>
> ■idlj が生成するメソッド:
>
> ファイル:_TestServiceStub.java
>> public void testDoubleSeq (double[] in_double, DoubleSeqHolder
> out_double)
>> public void testFloatSeq (float[] in_float, FloatSeqHolder out_float)
>> public void testStringSeq (String[] in_string, StringSeqHolder
> out_string)
>
> <環境>
> OS: Windows XP (SP2)
> Eclipse: バージョン3.2.0
> RtcTemplate: jp.go.aist.rtm.rtctemplate_0.4.2rc1.jar
> Java: 1.6.0_07 (idlj: バージョン 3.1)
>
> 現在は,RtcTemplate が生成するファイルを手動で変更してビルドしています.
>
> RtcTemplate に idlj と同じメソッドを生成させるにはどうすればよいでしょうか
> .
>
> よろしくお願いいたします.
安川電機の包原と申します.
お世話になっております.
以下について確認させて下さい.
WindowsでJava版のOpenRTM-aist-0.4.1を使用しています.
サービスポートの定義(IDL)で sequence を out タイプの
引数で使用するメソッドを定義した場合,こちらの環境では,
RtcTemplate が生成するメソッドが idlj が生成するメソッドと
異なるため,そのままではビルドできません.
例)
■IDLファイル:
> typedef sequence DoubleSeq;
> typedef sequence FloatSeq;
> typedef sequence StringSeq;
>
> interface TestService{
> void testDoubleSeq(in DoubleSeq in_double, out DoubleSeq out_double);
> void testFloatSeq(in FloatSeq in_float, out FloatSeq out_float);
> void testStringSeq(in StringSeq in_string, out StringSeq out_string);
> };
■RtcTemplate が生成するメソッド:
ファイル:TestServiceSVC_impl.java
> public void testDoubleSeq(double[] in_double, double[] out_double)
> public void testFloatSeq(float[] in_float, float[] out_float)
> public void testStringSeq(String[] in_string, String[] out_string)
■idlj が生成するメソッド:
ファイル:_TestServiceStub.java
> public void testDoubleSeq (double[] in_double, DoubleSeqHolder
out_double)
> public void testFloatSeq (float[] in_float, FloatSeqHolder out_float)
> public void testStringSeq (String[] in_string, StringSeqHolder
out_string)
<環境>
OS: Windows XP (SP2)
Eclipse: バージョン3.2.0
RtcTemplate: jp.go.aist.rtm.rtctemplate_0.4.2rc1.jar
Java: 1.6.0_07 (idlj: バージョン 3.1)
現在は,RtcTemplate が生成するファイルを手動で変更してビルドしています.
RtcTemplate に idlj と同じメソッドを生成させるにはどうすればよいでしょうか
.
よろしくお願いいたします.