Not that it matters intensely, but I wanted to let y'all know ...
Introspection is in full compliance with Sun's (as far as I can tell)!
     Additionally, all of the public and protected members of the java.beans
classes are identical in exceptions, arguments and return types, to Sun's.
     I have created a class, in test/base/OutputClass.java, which will, when
run, output pertinent information from specified classes so that signatures,
return values, modifiers, and exceptions can be compared between Sun's java
and ours.  It requires only gnu.java.lang.ClassHelper and
gnu.java.lang.ArrayHelper.  To run it, just put it in your classpath (it has
no package), go to the base directory where your classes (or Sun's classes)
are, and run "java OutputClass <suffix> <classnames or list of classfiles>".
The output will be a bunch of files named
<fully-qualified-classname>.out-<suffix>.  The output will be unsorted.
     For example, I went to my base working directory (where just java.beans
resides, so I don't get java.lang.String's errors) and ran "java OutputClass
'' java/beans/*.class".  The program strips off the .class and changes the
/'s to .'s before doing anything.  Then I created a directory for
comparison.  I took all of the files with suffix ".out-" and sorted them,
and then put them into that directory.  Then I unzipped classes.zip from Sun
into another directory, ran "java OutputClass sun java/beans/*.class" on it,
and then sorted and moved "*.out-sun" to the comparison directory.  At that
point I just did a diff on all the files and it told me which ones had
different or even missing signatures.
     I am working on making it more automatic so that we can save the Sun
stuff once and then make it into a general signature test.
--John Keiser

Reply via email to