[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[equinox-dev] BSF, Groovy, class/OSGi resolution
- From: "Craig Phillips" <lcphillips@xxxxxxxxxxxxx>
- Date: Fri, 17 Oct 2008 08:34:29 -0400
- Delivered-to: firstname.lastname@example.org
- Thread-index: AckwU7KtOhf5mB8gTEikErMvKNOMCw==
- Thread-topic: BSF, Groovy, class/OSGi resolution
Update to a former post (of which I deleted) on the same subject -- I did manage to get bsf/groovy working in an OSGi container and do class resolution... I was on the right track, thanks to and appreciate of support from J. Ervin as well as postings around the net -- to write and plug in a custom class loader...
My problem was that I did not implement all the methods and method signature variants... I blame that on Sun because: Classloader should be an interface, not something you extend;
When using BSF/groovy in an OSGi container, you want to write a custom class loader (be sure to implement findClass() as well as loadClass() -- bsf uses loadClass() while groovy uses findClass() -- go figure) that will search through the registered bundles in the OSGi container for a class, noting that Bundle has a method called loadClass() [what, no findClass() ??? LOL];
Anyway, you register your custom class loader to bsf and groovy a la: BsfManager.setClassLoader()...
BTW - be sure to consult the context class loader as well -- useful for core classes as well as when junit testing....
Lastly, I did not implement getResource() and variations thereof -- Bundle does not, IIRC, have anything equivalent [and, I think that makes sense]...
For what it's worth, Craig Phillips, Praxis