Saturday, April 19, 2008

Annotation debuggolás

A héten szórakoztam picit ezzel az "új" java lehetőséggel, keresve a hasznosítási lehetőségeit, a belső projektekben. Tesztelés közben jött elő a probléma, hogy hogyan debuggoljuk az "annotation processor"-t. Kis kutakodás után ez lett a megoldás:

Ugyebár annotációk esetén, három feldolgozási típusról beszélünk.
  • RUNTIME: nincs vele feldolgozási problémánk, hiszen futási időben bármikor lekérdezhetők. Itt mindenképp megírjuk a Reflection API kódot.
  • CLASS: na ez már az érdekesebbik része, hiszen a generált kódban benne van, de nem lekérdezhető
  • SOURCE: csak forrás szinten, érhető el.
A kérdés az, hogy kényelmesen, hogyan lehet fordítási időben debuggolni?
Mivel eclipsszel dolgozunk bent és a blog is erről szól, ezért ilyen irányú megoldást kerestem, valósítottam meg.

(Nem csak eclipseből használható módszer)
Fogjuk a JDT Core Batch Compiler-t és csinálunk egy "run/debug configuration"-t, amiben amiben a main class a compiler mainje (org.eclipse.jdt.internal.compiler.batch.Main), hozzáadjuk a compilert a classpathhoz. Illetve pár alapvető beállítást használunk (lásd post végén levő zip fájl). Az fordító ilyen módon való futtatása, simán lehetővé teszi a hatásos debugolást.

Ami már kicsit bonyolultabb, az pedig az eclipse projekteken bekapcsolható "annotation proccessing" mód kihasználása. Mivel ezt egyszerűbb mutatni, mint leírni, ezért majd csinálok egy kis videót.
Mindenesetre a launch konfigurációk benne lesznek a zipben.

Példakód, konfigurációk.

No comments: