[kaffe] new classpath import
M.Negovanovic
milosn@bmf.bounceme.net
Wed Oct 15 00:49:02 2003
--x+6KMIRAuhnl3hBn
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
On Wed, Oct 15, 2003 at 02:56:58AM +0200, Dalibor Topic wrote:
> Hi Milos,
>
> M.Negovanovic wrote:
>
> >Ive looked at the LoaderTest breakage caused by this patch that Dalibor
> >reported to me:
>
> Thanks! sorry for not responding quicker, but we had this LinuxKongress
> Classpath BoF here today ...
>
> >1) breakage is caused by the differences in java.beans.Introspector
> >implementations in Kaffe and Classpath.
> >
> >Kaffe's current Introspector loads BeanInfo with the ClassLoader that
> >was used to load the Bean class itself , while on the other side
> >ClassPath's Introspector uses default(?) ClassLoader to load BeanInfo.
> >
> >2) test breakage is easely fixable with few simple changes in Classpath's
> >Introspector (i have it fixed in local tree)
> >
> >What is the "right" way to fix this. Change Classpath's Introspector to
> >resemble Kaffe's original one ... or change the LoaderTest?
>
> I think the right way to fix it is loading BeanInfo with the ClassLoader
> that was used to load the Bean class itself, since the Bean class may
> not be reachable through the default (i.e. the class loader of the
> method calling Class.forName(String)) class loader, so it should be
> loaded using the class loader that was used to load the bean class.
>
> Thanks for spotting it, I'm looking forward to apply your patch. BTw,
> could you please send a patch with the fix to the GNU Classpath project
> as well, along with the fix to IndexedPropertyDescriptor? I'm sure they
> would love to have those bug fixes as well.
>
> cheers,
> dalibor topic
OK patch is attached
--- CHANGELOG --
* kaffe_orig/libraries/javalib/Makefile.am,
kaffe/libraries/javalib/Makefile.in,
kaffe/libraries/javalib/profiles/allatonce/all.files,
kaffe/libraries/javalib/profiles/default/rest.files:
Removed java/beans/GenericBeanInfo.java entry from all these.
* kaffe/libraries/javalib/gnu/java/lang/ArrayHelper.java:
New class imported from GNU Classpath.
* kaffe/libraries/javalib/java/beans/GenericBeanInfo.java:
Removed leftover from Kaffe's original java.beans implementation.
* kaffe/libraries/javalib/java/beans/Introspector.java:
Substitute from GNU Classpath. Contains few bugfixes.
--- CHANGELOG ---
You have mentioned something about Bean.java breaking for u again
Dalibor. Well it seems to be because u only included part of my
patch to Bean.java (expected output part, line 'Method: public static
void Bean.main(java.lang.String[])' is not removed from the Bean.java).
I have removed this line because i believed that Classpath code is
'a priori' OK :), stupid i know now after playing with it for few days.
Anyway can someone verify this as a bug and not expected behaviour so i
can start looking for a fix :).
Regards
Milos
--x+6KMIRAuhnl3hBn
Content-Type: application/octet-stream
Content-Disposition: attachment; filename="beans_patch5.bz2"
Content-Transfer-Encoding: base64
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
--x+6KMIRAuhnl3hBn--