Hi, I fired your question off to the Roo team and got this response: === Roo metadata classes check for the existence of methods in the "governor" (.java file) that are destined to be written to an ITD and prevents these methods from going in the ITDs if they are there in the java class. However, this check is not happening with the finder methods. Finder methods are different in that the method name is dynamically built up using the finder fields and the find operation required (eg findPhotosBySlugLikeAndBudgetLikeAndProjectLikeAndProjectStatusLike). I don't believe in this case the methods are checked in the .java class first as there can be an unknown number of methods generated.
I can play around with this, but my first suggestion would be to push-in the method to the .java class to be able to tailor it and also remove the finder name from the "finders" attribute of the @RooJpaActiveRecord annotation, to prevent its generation in the ITD. === I hope that is useful? You might get faster responses directly using the Roo forum: http://forum.springsource.org/forumdisplay.php?67-Roo cheers Andy On 19 June 2012 08:20, <phi...@free.fr> wrote: > > > > > Hello, > > I have just generated a web application with Spring Roo and would like to > override a method which lets users search records > in a photo database. > > Here's the Roo-generated Photo_Roo_Finder.aj code: > > ----------------------------------- > > // WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO. > // You may push code into the target .java compilation unit if you wish to > edit any member(s). > > privileged aspect Photo_Roo_Finder { > > public static TypedQuery<Photo> > Photo.findPhotosBySlugLikeAndBudgetLikeAndProjectLikeAndProjectStatusLike( > String slug, String budget, String project, String projectStatus) { > > if (slug == null || slug.length() == 0) throw new > IllegalArgumentException("The slug argument is required); > ... > > ----------------------------------------------- > > My problem with this method is that it does not let users leave some fields > empty. > > If I go into the Photo.java class, and rewrite the above method, Eclipse > tells me that it already exists (ie, in the > .aj file). > > If, on the other hand, I rename it in the Photo class, as follows > > --------------------------------------------------- > > ... > @RooJpaActiveRecord(finders = { > "findPhotosBySlugLikeAndBudgetLikeAndProjectLikeAndProjectStatusLike2" }) > ... > > > public static TypedQuery<Photo> > Photo.findPhotosBySlugLikeAndBudgetLikeAndProjectLikeAndProjectStatusLike2(.. > > String slug2 = ""; > > if (slug == null) || slug.length == 0) { > slug2 = ""; > > } else { > slug2 = slug; > > } > // Do a search with slug2 as value. > > -------------------------------------- > > The application, when run, crashes with an internal error: > > ----------------------------- > > or.apache.tiles.impl.CannotRenderException: JSP Exception including path > '/WEB-INF/views/photos/findPhotosBySlugLikeAndBudgetLikeAndProjectLikeAndProjectStatusLike.jspx' > > > where findPhotos....jspx is some kind of dynamically-generated jspx file (ie, > it's not visible in the Eclipse Project). > > ----------------------------- > > So how can I "override" the > "findPhotosBySlugLikeAndBudgetLikeAndProjectLikeAndProjectStatusLike" method > in the Photo class? > > Any help with the above issue would be much appreciated. > > Philroc > _______________________________________________ > aspectj-users mailing list > aspectj-users@eclipse.org > https://dev.eclipse.org/mailman/listinfo/aspectj-users _______________________________________________ aspectj-users mailing list aspectj-users@eclipse.org https://dev.eclipse.org/mailman/listinfo/aspectj-users