That sounds like a good idea. I sent you a ClassFinder that does that.
If you want to wait for a real patch I could create one over the
weekend.

thanks
musachy

On Thu, May 29, 2008 at 3:47 PM, David Blevins <[EMAIL PROTECTED]> wrote:
> We could probably hook that up.  The ClassLoader is a required argument for
> byte code scrapping, so we could pretty easily do a
> classLoader.findResource() to get the parent class, then process
> recursively.  We'd just leave that deeper resolution off by default and
> allow it to be turned on with a constructor flag.
>
> -David
>
> On May 29, 2008, at 10:43 AM, Musachy Barroso wrote:
>
>> We would have to load the class at that point. I don't think we could
>> make ClassFinder do this for us, because some of the classes in the
>> hierarchy could be in the excluded jars.
>>
>> 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]
>>
>>
>
>
> ---------------------------------------------------------------------
> 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