アノテーション+掟
フレームワーク論の話を見ての思いつき。
「アノテーション」のフレームワークは解の一つとして良いと思いますが、実行しないと意図した通りに実装したのか分らない物が多い(「規約」ベースも同様)。特に規模の大きなプロジェクト程、規約通りに作る事にはコストがかかる。だから、kijimunaみたいなものは私は歓迎。
という訳で、Urumaのケース。
Actionに対応する画面定義が存在するかチェックするIrenkaのHackを作ってみました(ソースの中身はいい加減な部分もありますので、実際にはそのまま使えないでしょうけど)。
こうしておけば、Hack適用時にActionに対する画面定義が存在するかどうか分かるので、実装時に確認できます。
/** * @when * action : {@link CtClass} * ctPackage : {@link CtPackage} * * action.simpleName =~ ".*Action" * action.parent = ctPackage */ public void detectAction(CtClass<?> action, CtPackage ctPackage, Messager messager, Filer filer) { // リソースのルート String resuouceRoot = "src/main/resources"; String packageLocation = ctPackage.getName().replaceAll("\\.", "/"); String resuouceDir = resuouceRoot + "/" + packageLocation; String fileName = action.getSimpleName().replace("Action", "") + ".xml"; // あるべきxmlファイル名 String fileFullName = resuouceDir + "/" + fileName; boolean isExist = filer.getFile(fileFullName).exists(); if (isExist == false) { messager.warn(action, "対応する画面定義(" + fileFullName + ")が存在しません"); } }
インタフェースで規定しないがために発生する弱点は、掟を守る手段を作ってフォロー。