On Feb 8, 10:04 pm, Brendan Kenny <bcke...@gmail.com> wrote: > On Feb 8, 6:34 pm, Luiz Mineo <luiz.mi...@gmail.com> wrote: > > > On 8 fev, 13:23, John Tamplin <j...@google.com> wrote: > > > On Mon, Feb 8, 2010 at 6:04 AM, Luiz Mineo <luiz.mi...@gmail.com> wrote: > > > > I'm dedicating some of my time to develop a small framework, to help > > > > me create and maintain big GWT apps. I'm already doing some really > > > > useful things with generators, but one of my objectives is offer the > > > > option to create a lot of modules, without the need to maintain a lot > > > > of *.gwt.xml files, and let the developer choose what modules will go > > > > to the final build, and what won't. For now, I'm trying to achieve > > > > this with an standalone app that is executed before the compiler or > > > > devmode, but I'm looking for a better solution. > > > > > Is there any way to create or alter a module (like adding new source > > > > paths) during compile time, using something like generators? Also, is > > > > it possible to retrieve informations about the current module (name, > > > > path...) in a generator? From what I could get from the GWT source, > > > > it's not possible, but any idea would be appreciated =] > > > > It is not possible currently to modify or create modules, and there is no > > > API for accessing module-level info from a generator. As a philosophical > > > point, we want to keep the generator API constrained so that we can make > > > improvements to it -- for example, we are looking at adding generator > > > dependency checking so generators can avoid being run if nothing they > > > depend > > > on has changed. > > > > What exactly would be accomplished by having a generator create a new > > > module? The programmer will still have to specify to include it, and that > > > might as well be in a module file with inherits. The generator can then > > > create whatever types it needs based on generate-with rules in that > > > module. > > > > -- > > > John A. Tamplin > > > Software Engineer (GWT), Google > > > Thanks a lot for the answers. > > > My idea is create a framework that improves the reusability of code > > between GWT apps. Each app will be made up by several small modules, > > wich will be able to be shared. There will be basically three kinds of > > modules: Controllers, Presenters and Definitions (the public > > interfaces implemented by the other two modules). The dependencies and > > communication between modules will be specified with annotations, and > > the framework will be responsible to control them. > > > To avoid the need to maintain a *.gwt.xml for each module, I have > > looking for a way to let the programmer specify what modules will be > > included in the app with a single *.xml file. My current solution is: > > - The programmer writes a main *.xml file, that is a normal *.gwt.xml > > file plus some tags to specify what modules will be included > > - The programmer executes a simple java app (included in the > > framework) that copy the *.xml file to a new *.gwt.xml file, changing > > each module's tag to one or more <source path="..."/> tag. The app > > also generates other *.properties files, that will be consulted by > > generators during compile time. The final *.gwt.xml file is what will > > be read by the GWT compiler. > > > So, what I'm looking for is a way to "plug" that program in the GWT > > compiler, but I have no idea of what would be the best way to do this. > > Hi Luiz, > > I've mucked around in ModuleDef, > personally:http://code.google.com/p/google-web-toolkit/source/browse/trunk/dev/c... > but it won't really do what you seem to want to, and as John noted > above, a solution based on it will in all likelihood break (possibly > subtly) in the future. > > If I'm correctly understanding what you're trying to do, just be aware > that there are other approaches. If you absolutely need a large set of > small modules, it seems like a module file + generator would function > as a full equivalent to a module created dynamically based on a set of > parameters (this is John's point too). If not, a more monolithic > module that contains a large group of generators seems like it would > function just as well--there's no penalty for unused code (well, at > runtime), definitely no penalty for unused generate-with statements, > and the GWT compiler is already optimized for this kind of use case. > > It seems a little bit like you're trying to create a meta-object- > hierarchy via a build system, when that's already one of the big gains > of being able to use java and deferred binding in the first place. It > might in fact lead to development regressions, for instance in the > division of how a user would have to define a project: a bunch of > inherit (and whatever else) statements in the module file don't get > the multiple benefits of code completion/type checking that e.g. > annotations do...which already have built-in generator support. > > However, all of that certainly doesn't mean that generators+linkers > can already meet all needs. And just because something shouldn't be > done doesn't mean it can't be done (you just have to fix if yourself > if it breaks). I'm happy to share what knowledge I have if you have > more questions.
Actually, rereading your last post, have you looked into using GIN? http://code.google.com/p/google-gin/ It seems like what you're trying to accomplish is largely independent of module definitions and is more about smart dependency injection. -- http://groups.google.com/group/Google-Web-Toolkit-Contributors