Java kódgenerálás

Java kódgenerálás
2012-11-29T10:54:24+01:00
2015-02-18T20:45:38+01:00
2022-10-21T19:45:37+02:00
  • Azóta sikerült valamilyen megoldást találni?
    Mutasd a teljes hozzászólást!
  • A velocity-vel szivas van ha annotation processor-ban probalod hasznalni es mindezt maven-bol akarod meghivni, ami valljuk be, nem tul ezoterikus szituacio. A gond, hogy a maven sajat maga is berantja bizonyos dolgokhoz a velocity-t es emiatt gubancok lehetnek...

    Hasznalj inkabb freemarker-t, azzal nincsenek ilyen gondok.
    Mutasd a teljes hozzászólást!
  • Senki sem szeret kódot generálni?
    Mutasd a teljes hozzászólást!
  • Ez alapján gondoltam, hogy a Velocity erre is jó lesz:
    Code Generation using Annotation Processors in the Java language - part 3: Generating Source Code

    példa:
    @Rest("http://xy.com/")
    interface IMyRestClient {
    public void getUser(String id, Callback<User> cb);
    @PUT
    public void putUser(User user, Callback<Result> cb);
    }

    ebből akarok generálni egy MyRestClient osztályt, ami a View szálon megjelenít egy progress bart, háttérszálon lefuttatja a REST kérést, majd a megadott Callback osztály onFinished metódusát meghívva a View szálon visszaadja a választ. A végén eltűnteti a progressbart, hiba esetén pedig meghívja az onFailed metódust, default működés gyanánt pedig feldob egy alertet.

    A metódus definícióból lehet tudni, hogy mi legyen a REST method neve, a paraméter lista alapján adódik, hogy hogy nézzen ki a kérés teljes URL-je, és a User objektumból lehet tudni, hogy hogy kell parszolni majd a választ, ami lehet JSON vagy XML.
    A fentit már megcsináltam Proxy.newProxyInstance magic és Reflectionnel.

    Annyi a különbség, hogy futásidőben nem lehet tudni, hogy mik a metódusparaméternevek, ezért azokra kellett raknom még annotációt.

    public void getUser(@Named("id") String id, Callback<User> cb);

    Ilyen jellegű feladatokhoz szeretnék olyan template-es megoldás, hogy beadom az interfész fájlt, és könnyen végig tudok iterálni az egyes metódusokon, annotációkon, paramétereken, ugyanúgy, mint reflectionnel. Erre van az alábbi java package:
    javax.annotation.processing, pont a fentire találták ki. De ez úgy működik, mint a Servlet, nekem meg inkább JSP szerű működés kellene.

    Biztos nem jó erre a Velocity?
    Mutasd a teljes hozzászólást!
  • Velocityt nem erre talaltak ki. Egesz pontosan mit akarsz mibol generalni?
    Mutasd a teljes hozzászólást!
  • Sziasztok!

    Használtok valamilyen template alapú Java kódot generáló kódgeneráló eszközt? A modellnek mindenképpen felannotált (Retention.SOURCE) Java forrásfájlokat szeretnék használni. Találtam az Apache Velocity-t, de ha jól látom, nem fejlesztik már. Használja valaki? Tudnék örülni, ha lenne benne syntax highlight, és auto source complition.

    Futásidejű Reflectionös megoldások nem érdekelnek, mindenképp kódot akarok generálni, hogy később könnyen lehessen módosítani.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd