No, you are right it doesn't include interfaces from parent classes/interfaces. It was working because of a bug somewhere else.
musachy On Thu, May 29, 2008 at 1:17 PM, Brian Pontarelli <[EMAIL PROTECTED]> wrote: > But does that include all of the interfaces including those implemented by > super-classes and those which interfaces the class directly implements > extend? > > > Musachy Barroso 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] >>> >>> >>> >> >> >> >> > > > --------------------------------------------------------------------- > 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]