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

Reply via email to