プロジェクト配下のソースフォルダの取得

Javaプロジェクトにある全ソースフォルダを取得する際に、
次のようにやっていた。


IJavaProject project = ・・・
IPackageFragmentRoot[] roots = project.getAllPackageFragmentRoots();
for (int i = 0; i < roots.length; i++) {
if (roots[i].getKind() == IPackageFragmentRoot.K_SOURCE) {
// ここに来るやつがソースフォルダ
}
}


で、これでOKかと思っていたが、実は罠があった。


IPackageFragmentRootの一覧を取得する際に、
IJavaProject#getAllPackageFragmentRootsを使ってしまうと、
依存プロジェクトとかを含むすべてのIPackageFragmentRootを
取得してしまうらしい。


自プロジェクト配下のみのIPackageFragmentRootを取得するときには、
getPackageFragmentRootsを使わなければならない。




というわけで、余計なリソースまでゲットしてましたとさ。
Javadocくらい見ろ、そして訳せ>自分