Well, I'm wrestling with XmlValidator now. I made it singleton and save/load context loads it in another class loader and singleton is null! And I think I know why it's slow in non-forked mode :-)
I simply looked at XmlValidateTask of Ant and learned from it and AntClassLoader is the way to go. I had a long pairing/discussing with Aslak before on the class loader issue, now I'm confident AntClassLoader is the way to go :-) Using AntClassLoader means I make sure everything is loader under this umbrella. Ara. > -----Original Message----- > From: Vincent Harcq [mailto:[EMAIL PROTECTED]] > Sent: Friday, April 12, 2002 10:18 PM > To: 'Ara Abrahamian'; 'Aslak Hellesøy'; xdoclet- > [EMAIL PROTECTED] > Subject: RE: [Xdoclet-devel] Dynamic optional modules > > WHAT ! > How the f*** did you do that ? Playing with system classpath, task > classpath or what ? > Please learn me > > > -----Original Message----- > > From: [EMAIL PROTECTED] > > [mailto:[EMAIL PROTECTED]] On Behalf > > Of Ara Abrahamian > > Sent: vendredi 12 avril 2002 13:39 > > To: 'Aslak Hellesøy'; [EMAIL PROTECTED] > > Subject: RE: [Xdoclet-devel] Dynamic optional modules > > > > > > Btw, I've almost fixed the LinkageError problem :-) > > I'll commit it after fixing another problem tonight. Next we > > should short-circuit the context file saving/loading/etc. > > > > Ara. > > > > > -----Original Message----- > > > From: [EMAIL PROTECTED] > > [mailto:xdoclet-devel- > > > [EMAIL PROTECTED]] On Behalf Of Aslak Hellesøy > > > Sent: Friday, April 12, 2002 1:11 AM > > > To: [EMAIL PROTECTED] > > > Subject: [Xdoclet-devel] Dynamic optional modules > > > > > > Hi all, > > > > > > As you might know, I've been experimenting with dynamic loading of > > > optional modules lately, and I've come up with a solution > > that seems > > > to work > > ok. > > > I'd > > > like to know what I'll explain how it works. > > > > > > There is a new xdoclet.loader package which contains all > > the logic for > > > handling dynamic loading. Some of the classes in this package > > > (ModuleFinder/XDocletXmlParser) introspect jar files located in the > > same > > > directory as xdoclet.jar and look for a META-INF/xdoclet.xml > > "deployment > > > descriptor" in each of the jars it finds. If an xdoclet.xml file is > > found, > > > XDocletXmlParser looks for the following information: > > > > > > -what subtasks the module contains, and what parent task they belong > > to. > > > -what tag handler the module contains, and the namespace > > they map to. > > > > > > Everything is orchestrated by the Bootstrapper class (which > > is a task > > and > > > will replace <taskdef> for xdoclet tasks), and as the jars are > > > introspected it registers the classes (XDoclet core tasks like > > > EjbDocletTask and > > > WebDocletTask) with the BootstrapClassLoader. This class loader is > > used as > > > a > > > parent for an AntClassLoader, which will be used to load XDoclet > > classes. > > > Whenever BootstrapperClassLoader is asked to loadClass a class, it > > will > > > check if the requested class is one of the parent tasks > > that should be > > > instrumented to add createBlaBla methods. > > > > > > The BootstrapperClassLoader uses BCEL (Jakarta's fantastic > > Byte Code > > > Engineering Library) to instrument the parent task classes during > > loading. > > > All it does is to dynamically insert createBlaBla methods > > so that Ant > > will > > > accept <blabla> sub elements to parent tasks (like <ejbdoclet>). > > > > > > So far so good for optional subtasks. The other part is to register > > tag > > > handlers contained within the optional modules. Since > > XDoclet can be > > > invoked in a different VM, the tag handlers must be > > registered in the > > DocletMain > > > class. The registered subtasks "survive" the intra-vm > > transfer because > > the > > > subtasks are serialised in DocletContext. In XDocletMain's start > > method > > > the > > > ModuleFinder.findModules() is called again, and this will > > register the > > tag > > > handlers. The actual registration is done inside > > XDocletModule, which > > > receives callbacks from XDocletXmlParser. XDoclet and Ant are now > > ready > > > fit > > > for fight. > > > > > > All the resources (dtds, templates and Message.properties) > > are located > > in > > > a > > > resources folder beneath the classes. I suggest we put tag handlers > > and > > > subtasks in the same package (as done with WebLogic stuff). > > The best > > > argument I can think of for doing it this way is to keep > > related stuff > > > close together on the file system. I don't like to browse too much > > > around > > for > > > related stuff. > > > > > > I don't know if I have succeeded in describing how it > > works. It isn't > > as > > > complicated as it sounds. Take a peek under xdoclet.loader and the > > sample > > > weblogic module implementation, as well as the samples/build.xml > > arounf > > > the > > > <ejbdoclet> task. It should give a fair picture for those > > of you who > > > understand code better than prose. > > > > > > As ususal, I have been ego. Some of the other developers > > have made me > > > aware that I should share my thoughts and doings more with you guys. > > Therefore, > > > consider it all a fictual idea. Just let me know what you think. > > > > > > Peace, > > > Aslak > > > > > > > > > _______________________________________________ > > > Xdoclet-devel mailing list [EMAIL PROTECTED] > > > https://lists.sourceforge.net/lists/listinfo/xdoclet-devel > > > > > > _________________________________________________________ > > Do You Yahoo!? > > Get your free @yahoo.com address at http://mail.yahoo.com > > > > > > _______________________________________________ > > Xdoclet-devel mailing list > > [EMAIL PROTECTED] > > https://lists.sourceforge.net/lists/listinfo/xdoclet-devel > > > > > > > _________________________________________________________ > Do You Yahoo!? > Get your free @yahoo.com address at http://mail.yahoo.com _________________________________________________________ Do You Yahoo!? Get your free @yahoo.com address at http://mail.yahoo.com _______________________________________________ Xdoclet-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/xdoclet-devel