-S2設定XMLの検証

EclipseプラグインでS2設定XMLの検証を行うところがなかなかでしたが、いくらか実装がすすんできました。いまの検証作業を行う内容は以下のとおり。

  • DTD的にアウトだと即エラー。
  • argエレメント
    • 子componentエレメントも式言語も無いと警告。
    • 子componentエレメントも式言語もどちらもあると警告。
    • 子componentエレメントが複数あるとエラー。
  • aspectエレメント
    • 子componentエレメントも式言語も無いと警告。
    • 子componentエレメントも式言語もどちらもあると警告。
    • 子componentエレメントが複数あるとエラー。
  • componentエレメント
    • class属性が無く、かつinstance属性がouterじゃないとエラー。
    • class属性がある時、そのクラスが解決できないとエラー。
    • 子property要素がname属性を持っているときに、該当セッターが無いとエラー。
    • 子argエレメントがあるときに、コンストラクタで数があうものがないとエラー。
    • 子argエレメントが無いときに、autoBinding属性がなし・auto・constractorでないとき、デフォルトコンストラクタが無いとエラー(これは、いま不完全!暗黙のデフォルトコンストラクタのときの対応をしていない)。
    • class属性があるか、instance属性がouterの時に、式言語があると警告。
    • instance属性がouterのときに、子argエレメントがあると警告。
    • name属性を持つ子destroyMethodエレメントがあるときに、そのメソッド名と引数の数があうものがないとエラー。
    • name属性を持つ子initMethodエレメントがあるときに、そのメソッド名と引数の数があうものがないとエラー。
  • includeエレメント
    • path属性の値が無いとエラー。
  • propertyエレメント
    • name属性を持ってないとエラー。
    • 子componentエレメントも式言語も無いと警告。
    • 子componentエレメントも式言語もどちらもあると警告。
    • 子componentエレメントが複数あるとエラー。
  • destroyMethodエレメント
    • name属性を持ち、かつ式言語も持つときに警告。
  • initMethodエレメント
    • name属性を持ち、かつ式言語も持つときに警告。

まずはこのぐらいかな。突っ込み歓迎。要望歓迎。式言語を実行しないと解決しない型の問題は難しいかと思われます。それ以外は丁寧にやっていけば対応できると思います。
思ったより検証作業は速いのですが、いまはせっかく作ったパース結果モデルを捨てています。ビューやエディタのアウトラインとかで活用すべくもう少し仕組みを考えなければなりません。