Hardcoding the jars to be excluded is not really cool, but <constant> requires a value, it would be nice if I could do:
<constant name="excludeJars"> ....super regex list here... </constant> is there any other way of doing this? property file? musachy On Thu, May 29, 2008 at 11:58 AM, Musachy Barroso <[EMAIL PROTECTED]> wrote: > ClassFinder.ClassInfo has a list of implemented interfaces, so I am > checking if "com.opensymphony.xwork2.Action" is one of them > > musachy > > On Thu, May 29, 2008 at 11:47 AM, Brian Pontarelli <[EMAIL PROTECTED]> wrote: >> >> Just a quick question. How did you modify ClasFinder to check for >> implementation of the XWork Action interface? Doesn't this need to parse up >> the inheritance chain as well as the implementation chain? It didn't look >> like ClassFinder currently did that, unless I missed it. >> >> -bp >> >> >> Musachy Barroso wrote: >>> >>> 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] >>>> >>>> >>>> >>> >>> >>> >>> >> >> >> --------------------------------------------------------------------- >> 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 > -- "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]