任务单 #4963

2つ以上のincludeを認識しない
开放日期: 2004-09-06 17:24 最后更新: 2004-09-14 07:46

报告人:
属主:
状态:
关闭
组件:
(无)
里程碑:
(无)
优先:
5 - Medium
严重性:
5 - Medium
处理结果:
Fixed
文件:

Details

1つのdiconファイルにおいて、2つ以上の別diconファイルを
includeしたばあい、2つ目以降のdiconファイルの内容を認識
できていないようで、以下のエラーが出ます。

[component] コンストラクター
test.kijimuna.TestExec#TestExec(test.kijimuna.TestAImpl,
null)が見つかりません

以下の構成で検証しました。

// test.kijimuna.TestA
public interface TestA {
void execute();
}

// test.kijimuna.TestAImpl
public class TestAImpl implements TestA {
private String param;
public TestAImpl( String param) {
this.param = param;
}
public void execute() {
System.out.println( param);
}
}

// test.kijimuna.TestB
public interface TestB {
void execute();
}

// test.kijimuna.TestBImpl
package test.kijimuna;
public class TestBImpl implements TestB {
private String param;
public TestBImpl( String param) {
this.param = param;
}
public void execute() {
System.out.println( param);
}
}

// test.kijimuna.TestExec
public class TestExec {
private static final String
PATH="test/kijimuna/TestExec.dicon";
private TestA testA;
private TestB testB;
public TestExec( TestA testA, TestB testB) {
this.testA = testA;
this.testB = testB;
}
public void execute() {
testA.execute();
testB.execute();
}
public static void main( String[] args) {
S2Container container =
S2ContainerFactory.create( PATH);
container.init();
try {
TestExec exec =
(TestExec)container.getComponent( TestExec.class);
exec.execute();
} finally {
container.destroy();
}
}
}

// test/kijimuna/TestA.dicon
<components>
<component name="testA"
class="test.kijimuna.TestAImpl">
<arg>"HogeHoge"</arg>
</component>
</components>

// test/kijimuna/TestB.dicon
<components>
<component name="testB"
class="test.kijimuna.TestBImpl">
<arg>"FugaFuga"</arg>
</component>
</components>

// test/kijimuna/TestExec.dicon
<components>
<include path="test/kijimuna/TestA.dicon"/>
<include path="test/kijimuna/TestB.dicon"/>
<component name="testExec"
class="test.kijimuna.TestExec">
<arg>testA</arg>
<arg>testB</arg>
</component>
</components>

testBを見つけることができず、エラーとなります。
kijimuna20040830fix および、kijimuna20040716 で確認しま
した。

任务单历史 (3/6 Histories)

2004-09-10 21:30 Updated by: masataka
评论
Logged In: YES
user_id=9870

core-0.6.0で修正できたかとおもいます。確認ください。
2004-09-12 12:57 Updated by: arakane
评论
Logged In: YES
user_id=10192

org.seasar.kijimuna20040911 にて確認しましたところ、次のよう
な症状となりました。
(1) 0.5.9 上でエラーとなっていたdiconファイルは、0.6.0fixを
導入後クリーンアップを行っても、同じエラーとなる。
(2) (1)の状態で、エラーとなっているコンポーネントの定義を削
除しても、エラーは消えない。
(3) エラーとなっているdiconファイルを削除後、同じ内容で作成
しなおせば、エラーは消える。

いずれも検証した構成は、最初に報告したときと同じです。
2004-09-12 13:03 Updated by: arakane
评论
Logged In: YES
user_id=10192

追記です。
Eclipse上で、当該diconファイルを削除後、ローカルヒストリーか
ら復元した場合にも、エラーはなくなります。
2004-09-13 22:14 Updated by: masataka
评论
Logged In: YES
user_id=9870

>(1) 0.5.9 上でエラーとなっていたdiconファイルは、
> 0.6.0fixを導入後クリーンアップを行っても、同じ
> エラーとなる。
>(2) (1)の状態で、エラーとなっているコンポーネント
> の定義を削
> 除しても、エラーは消えない。

これは、0.5.9と0.6.0の間で、エラーマーカーIDが変わったため
に発生した問題です。まず、0.5.9でプラグイン適用したプロジェ
クトは、0.5.9にてプラグイン解除(UIの「S2プロジェクト」チェ
ックボックスをoffにする)したのちに、0.6.0以降を導入しない
といけなかったのです。0.6.1時にはバージョンアップ時の混乱を
さけるために、冗長になっても、0.5.9以前でのエラーマーカーを
消すようにします。

>(3) エラーとなっているdiconファイルを削除後、
> 同じ内容で作成しなおせば、エラーは消える。

これが、0.6.0でFIXした内容です。今後は複数includeが記述され
たdiconファイルにて、同様の名前解決問題は修正できたと思いま
す。
2004-09-13 22:27 Updated by: masataka
评论
Logged In: YES
user_id=9870

さらに、念のため、0.5.9以前からバリデーションしていたプロジ
ェクトについては、Eclipseのメニューの[Project]-
[Properties]-[Seasar2]設定画面で「Seasar2 プロジェクト」チ
ェックボックスを一度offにして「OK」クリック後に、再度同じ画
面でチェックボックスonおよび「OK」という作業を行ってくださ
い。
2004-09-14 07:46 Updated by: arakane
  • Ticket Close date is changed to 2004-09-14 07:46
  • 处理结果 Update from to Fixed
  • 状态 Update from 开启 to 关闭
评论
Logged In: YES
user_id=10192

0.6.1で、正常な動作を確認しました。
ありがとうございました。

Attachment File List

No attachments

编辑

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » 登录名