ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dominique Devienne <DDevie...@lgc.com>
Subject RE: Possible TaskDef donation
Date Thu, 13 Mar 2003 16:07:23 GMT
Why not posting it? Seems interesting enough, and once it's posted people
can start using it or tweaking it. Best way to post it is to open a new
Enhancement in Ant's BugZilla. This keeps everything in one place (posted
sources, JARs, ZIPs, whatever and the discussions about it).

Using URLClassLoader works fine, but does require having the dependent
classes available. Maybe somehow Ant's <classfileset> can be leveraged to
not require the dependencies.

--DD

-----Original Message-----
From: Berin Loritsch [mailto:bloritsch@apache.org] 
Sent: Thursday, March 13, 2003 9:57 AM
To: dev@ant.apache.org
Subject: Re: Possible TaskDef donation

Dominique Devienne wrote:
> This is indeed interesting. I do something quite similar for another
purpose
> (scans a JAR for all classes having a give static method signature,
executes
> all these methods, gathering the meta-info required, generate a XML file
> then stuck into the JAR's META-INF directory).
> 
> Something I do is to restrict scanning classes to only those that match a
> given patternset to speed things up (you often know which part of your
> package tree to look things, or could use a naming convention to find
things
> faster). This makes the scanning quite a bit faster (we have big JARs).
> 
> All this to say that you specific use case if very useful, but the more
> generic action all scanning the classes of a JAR and doing something that
> ultimately updated the JAR somehow would be even more useful. Allowing to
> plug over 'actions' rather than the default 'looking for services' would
be
> very very useful IMHO.

Easy change to make--I can make it a protected action (the actual
check).

> What are your dependencies? BCEL? Do you load the actual classes (so need
> dependent classes on the classpath)?

Standard JVM.  I use JarFile to read the JAR contents, and
JarOutputStream to write the new JAR.

I construct a new URLClassLoader that uses the current classloader as
the parent, and loads the input JAR in as well.  I then scan the
contents of the JAR only looking at the ".class" entries.  I load the
class, and perform my checks on the class itself.

> Thanks for sharing this with us. --DD
> 
> PS: BTW, I don't think you can edit the JAR in place...


Would be nice though.  I guess we could make it something where you can
use a directory instead of the JAR.  It would alter the scanning code
though.

Do you want me to post what I have?

Mime
View raw message