Closed ga-sakamoto closed 4 months ago
try-catchに関する修正について確認させて下さい。ビルドが通るものは今回の修正でOKでしょうか。
こちらで指摘したビルドエラーになっていたRTCですが、try-catchをコメントアウトした形で記載するのではなく、そっくり削除されています。 また修正前にビルドが通っていたのに新たにtry-catchが追加されたためビルドエラーになります。
独自データ型のサービスポートを定義している・・・try-catchが削除された https://github.com/Nobu19800/testOpenRTM-aist/tree/master/testOriginalServicejava
testOriginalServicejavaTestImpl.java
protected ReturnCode_t onInitialize() {
// Registration: InPort/OutPort/Service
// <rtc-template block="registration">
// Set service consumers to Ports
m_servicePort.registerConsumer("sampleinterface", "Sample.SampleInterface", m_sampleinterfaceBase);
// Set CORBA Service Ports
addPort(m_servicePort);
// </rtc-template>
return super.onInitialize();
}
ManipulatorCommonInterface_Middle型のサービスポートを持つサービスプロバイダ・・・try-catchが削除された https://github.com/Nobu19800/testOpenRTM-aist/tree/master/testServiceProviderjava
独自データ型のデータポートを定義・・・try-catchが追加されたのでビルドエラーになる https://github.com/Nobu19800/testOpenRTM-aist/tree/master/testOriginalPortjava
testOriginalPortjavaTestImpl.java
protected ReturnCode_t onInitialize() {
// Registration: InPort/OutPort/Service
// <rtc-template block="registration">
// Set InPort buffers
addInPort("out", m_outIn);
// Set OutPort buffer
addOutPort("in", m_inOut);
// Set service provider to Ports
} catch (ServantAlreadyActive e) {
e.printStackTrace();
} catch (WrongPolicy e) {
e.printStackTrace();
} catch (ObjectNotActive e) {
e.printStackTrace();
}
// </rtc-template>
return super.onInitialize();
}
早速のご確認,ご連絡ありがとうございます.
独自データ型のデータポートを定義・・・try-catchが追加されたのでビルドエラーになる
申し訳ございませんでした.元々の生成コードがおかしかったため,再度,修正させて頂きました. (try-catchのcatchのみ追加されてしまっていました)
また,色々とご説明が不足してしまっており,申し訳ございません. Testコードについてなのですが,基本的にXXXImpl.javaにつきましては,srcのコードとtestのコードが逆になるように生成しております. このため,同じデータ型を使用している場合に,以下の生成コードが対応するように修正しております. サービスプロバイダを定義した場合のsrc/XXXImpl.javaと,サービスコンシューマーを定義した場合のtest/XXXImpl.java サービスプロバイダを定義した場合のtest/XXXImpl.javaと,サービスコンシューマーを定義した場合のsrc/XXXImpl.java データInポートを定義した場合のsrc/XXXImpl.javaと,データOutポートを定義した場合のtest/XXXImpl.java データOutポートを定義した場合のsrc/XXXImpl.javaと,データInポートを定義した場合のtest/XXXImpl.java
更に,データポートの場合につきましては,IDLコンパイルを実行しないと,独自データ型に対応したJavaファイルが生成されないため,コード生成実行直後にはコンパイルエラーが出てしまいます.
確認したところ、独自データ型の利用に関係なくサービスコンシューマの定義でエラーになります。 エラーは、build_*.xmlをantビルド後にプロジェクトを更新して確認しています。 下記のビルド動作を確認しました。
独自データ型IDLを利用
[javac] D:\workspace0219\myOriginalServiceConsumerjava\test\src\myOriginalServiceConsumerjavaTestImpl.java:55: エラー: シンボルを見つけられません
[javac] } catch (ServantAlreadyActive e) {
[javac] ^
[javac] シンボル: クラス ServantAlreadyActive
[javac] 場所: クラス myOriginalServiceConsumerjavaTestImpl
[javac] D:\workspace0219\myOriginalServiceConsumerjava\test\src\myOriginalServiceConsumerjavaTestImpl.java:57: エラー: シンボルを見つけられません
[javac] } catch (WrongPolicy e) {
[javac] ^
[javac] シンボル: クラス WrongPolicy
[javac] 場所: クラス myOriginalServiceConsumerjavaTestImpl
[javac] D:\workspace0219\myOriginalServiceConsumerjava\test\src\myOriginalServiceConsumerjavaTestImpl.java:59: エラー: シンボルを見つけられません
[javac] } catch (ObjectNotActive e) {
[javac] ^
[javac] シンボル: クラス ObjectNotActive
[javac] 場所: クラス myOriginalServiceConsumerjavaTestImpl
[javac] エラー3個
標準データ型を利用・・・JARA_ARM::ManipulatorCommonInterface_Middle
[javac] D:\workspace0219\myServiceConsumerjava\test\src\myServiceConsumerjavaTestImpl.java:55: エラー: シンボルを見つけられません
[javac] } catch (ServantAlreadyActive e) {
[javac] ^
[javac] シンボル: クラス ServantAlreadyActive
[javac] 場所: クラス myServiceConsumerjavaTestImpl
[javac] D:\workspace0219\myServiceConsumerjava\test\src\myServiceConsumerjavaTestImpl.java:57: エラー: シンボルを見つけられません
[javac] } catch (WrongPolicy e) {
[javac] ^
[javac] シンボル: クラス WrongPolicy
[javac] 場所: クラス myServiceConsumerjavaTestImpl
[javac] D:\workspace0219\myServiceConsumerjava\test\src\myServiceConsumerjavaTestImpl.java:59: エラー: シンボルを見つけられません
[javac] } catch (ObjectNotActive e) {
[javac] ^
[javac] シンボル: クラス ObjectNotActive
[javac] 場所: クラス myServiceConsumerjavaTestImpl
[javac] エラー3個
重ね重ね,たいへん失礼いたしました. import文の挿入判断の部分の修正が漏れてしまっておりましたので,再度,修正させて頂きました.
Identify the Bug
Link to #514
Description of the Change
ご連絡を頂きました内容に従って,Java版RTCの生成コードを修正させて頂きました.
なお,
こちらのご指摘につきましては,本来try-catchの中で実行すべき内容が生成されていませんでしたので,こちらを生成するように修正させて頂きました.
Verification