-IStorage対応(4)

以下の内容は、どうもEclipseの仕様バグといえなくもないです。必要がないのでしょうけど。
Jarファイルの内容物はIStorage(実装クラスはJarEntryFile)ですが、このIStorageはIResourceの系ではないことはすでにお話しました。IResourceではないためにgetParent()などのツリーウォーカーメソッドが無いのです。そのため、突然現れたIStorageに対してその所属するプロジェクトもわからない上に、そもそも含まれるJarファイルすらもわかりません。まいったねこりゃ。プロジェクトがわからないとKijimunaのアーキテクチャでは致命的で、パース結果を拾うことができない。Kijimunaのパースや依存関係処理のシーケンス中では常にプロジェクトを持ち歩くように改造しましたのでいきなりIStorageだけわたってくることはないのですが、唯一、EclipseのPackeageExplorerからJar中のDiconファイルを開いた時には、エディタの入力ソース(IStorageEditorInput)からIStorageを取得するしかなく、プロジェクトが取れないのです。IFile/IFileEditorInputだと、IFile#getProject()で簡単にとれるんですけどね。
Jar中のDiconだけOutlineを表示しないというのもバグっぽい動きになるので、泥縄のようなコードですが解決しました。こんなやり方しかないのかと、我ながら疑問。IStorageからJarは何か取れなくても、Jarのルートからの相対パスは取れるので、全プロジェクトを総なめで、見つけるまでがんばります。バカなコードだな。ということで、Jar中にDiconファイルを入れて開発している方がいらっしゃいましたら、少しでも挙動がおかしいと思われる時はレポートください。この機能だけは、どうも確信が持てない。