Thanks for the tips, I wasn't using UrlSet at yet, but that looks
great . I am using ASM 3 with it, I don't know about new features you
could take advantage of, but it is easy to get it running. I think
this method is wrong on ClassInfo:

public String getPackageName(){
      return name.substring(name.lastIndexOf(".")+1, name.length());
}

musachy

On Wed, May 28, 2008 at 9:04 PM, David Blevins <[EMAIL PROTECTED]> wrote:
>
> On May 28, 2008, at 4:54 PM, Musachy Barroso wrote:
>
>>> It is a standalone library, used heavily by the OpenEJB and Geronimo
>>> guys.
>>
>> oops.
>>
>>>
>>> Personally, I favor copying the code over and jarjar'ing the asm
>>> dependency.
>>
>> +1
>
> +1 :)
>
> Just wanted to throw my support in for fun.
>
> I'd pull in the ClassFinder and UrlSet.  ClassFinder.java is a standalone
> class (aside from ASM), but the UrlSet is really useful for narrowing down
> the scope of jars that you search which of course makes things even faster.
>
> If you know the exact jar(s) you want to search, you're set.  But if you
> simply have a classloader and want to search everything "in" it, you might
> want to rip out some standard vm jars and other jars you know you do not
> care about.  Here's an example usage:
>
>  // Just this line right here is good as is will diff the classpath of the
>  // parent classloader against the classpath of the supplied classloader and
>  // give you the difference.
>  UrlSet urlSet = new UrlSet(classLoader);
>
>  // If you happen to need to search the system classloader, the difference
>  // still leaves a lot of useless garbage
>  urlSet = urlSet.exclude(ClassLoader.getSystemClassLoader().getParent());
>  urlSet = urlSet.excludeJavaExtDirs();
>  urlSet = urlSet.excludeJavaEndorsedDirs();
>  urlSet = urlSet.excludeJavaHome();
>  urlSet = urlSet.excludePaths(System.getProperty("sun.boot.class.path",
> ""));
>  urlSet = urlSet.exclude(".*/JavaVM.framework/.*");
>
>  // If the remainder contains a lot of third party libraries required by you
>  // that you know don't contain annotations you're interested in, then it
> can
>  // be good to aggressively cut those out.
>  urlSet = urlSet.exclude(".*/activemq-(core|ra)-[\\d.]+.jar(!/)?");
>  urlSet = urlSet.exclude(".*/catalina-[\\d.]+.jar(!/)?");
>  urlSet =
> urlSet.exclude(".*/commons-(logging|cli|pool|lang|collections|dbcp)-[\\d.]+.jar(!/)?");
>  urlSet = urlSet.exclude(".*/derby-[\\d.]+.jar(!/)?");
>  urlSet =
> urlSet.exclude(".*/geronimo-(connector|transaction)-[\\d.]+.jar(!/)?");
>  urlSet = urlSet.exclude(".*/geronimo-[^/]+_spec-[\\d.]+.jar(!/)?");
>  urlSet =
> urlSet.exclude(".*/geronimo-javamail_([\\d.]+)_mail-[\\d.]+.jar(!/)?");
>  urlSet = urlSet.exclude(".*/hsqldb-[\\d.]+.jar(!/)?");
>  urlSet = urlSet.exclude(".*/idb-[\\d.]+.jar(!/)?");
>  urlSet = urlSet.exclude(".*/jaxb-(impl|api)-[\\d.]+.jar(!/)?");
>  urlSet = urlSet.exclude(".*/junit-[\\d.]+.jar(!/)?");
>  urlSet = urlSet.exclude(".*/log4j-[\\d.]+.jar(!/)?");
>  urlSet =
> urlSet.exclude(".*/openjpa-(jdbc|kernel|lib|persistence|persistence-jdbc)(-5)?-[\\d.]+.jar(!/)?");
>
>  // then eventually
>  List<URL> urls = urlSet.getUrls();
>  ClassFinder classFinder = new ClassFinder(classloader, urls);
>
>
> As far as the stability of the API, it hasn't changed in months and months.
>  I do have one planned change involving the use of ASM 3 and new flag that
> will speed up the scanning by allowing ASM to skip by large chunks of the
> byte code.
>
> Let me see if I can't get that in there real quick.
>
> -David
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>



-- 
"Hey you! Would you help me to carry the stone?" Pink Floyd

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to