Bug database broken / Generating interfaces / ChangeLog suggestion
tony
tony at transvirtual.com
Thu Nov 11 09:50:37 PST 1999
The bug DB has been repaired.
Sorry for the inconvenience.
T
On Wednesday, November 10, 1999 2:13 PM, Frohwalt Egerer [SMTP:froh at iconsult.com] wrote:
>
>
> Hello everybody,
>
> today I've got three things on my mind:
>
> 1. The bug database on www.kaffe.org still seems to be broken,
> browsing to www.kaffe.org and clicking on the Bug Database link in
> the navigational frame just opens another navigational bar and
> kaffe homepage in my browser.
>
> 2. Since I'm needing JDBC 2.0 I'll probably enhance Kaffe's JDBC
> support. Are there any objections in generating the needed
> interfaces by using reflection on Sun's classes? Or is that "too
> close to Sun's source" to be cleanroom. If I'm just supposed to
> read the docs only, how am I supposed to find out the values for
> static constants?
>
> By the way, last week I've thrown together a perl script that reads
> JavaDoc and creates interfaces/class skeletons from what it
> finds. I'll append it below in case anybody finds it useful.
>
> 3. The ChangeLog for Kaffe seems to be maintained manually. Do you
> know there's a nice Perl script which generates ChangeLog files
> from CVS' commit messages? Have a look at it at
> http://www.red-bean.com/~kfogel/cvs2cl.shtml
>
> Froh
>
>
>
>
>
> And here's the skeleton generator, have fun with it.
>
>
> #!/usr/bin/perl -w
>
> #
> # Parseapidoc
> #
> # A simple, fast hack to parse openly available Java documentation and generate
> # interfaces from it. There's no warranty attached to this, if it breaks you
> # keep the pieces. Use, copy and modify this as much as you like.
> #
> # In case Sun changes javadoc's output this script has to be changed ;-)
> #
>
> foreach $file (@ARGV)
> {
> undef $@;
>
> if ($file !~ m/package-/) # filter out package-tree etc.
> {
> eval
> {
> open(IN, "<$file") || die("Cannot open $file: $!\n");
> $in = \*IN;
>
> $outfile = $file;
> $outfile =~ s|/|.|g;
> $outfile =~ s|\.html|.java|;
>
> open (OUT, ">$outfile") || die("Cannot open $outfile for writing: $!\n");
> $out = \*OUT;
> # $out = \*STDOUT;
>
> print $out ("/* Automatically generated from $file by parseapidoc.pl */\n\n");
>
>
> classdecl();
> fields();
>
> print $out "}\n\n";
> };
> }
>
> warn ("$@\t... propagated for $file\n") if ($@);
>
> close(IN);
> close(OUT);
> }
>
>
> sub classdecl()
> {
> while (<$in>)
> {
> chomp;
> last if m/======== START OF CLASS DATA ========/;
> }
>
> <$in> || die "premature EOF"; # Eat the <H2>
> <$in> || die "premature EOF"; # Eat the <FONT SIZE>
>
> $pkg=<$in> || die "premature EOF"; # Contains pack.age.foo</FONT>
> chomp $pkg;
> $pkg = removetags($pkg);
> print $out "package $pkg;\n\n";
>
> while (<$in>)
> {
> last if m/<HR>/;
> }
>
> <$in> || die "premature EOF"; # Eat the <DL>
>
> $cls = <$in> || die "premature EOF"; # contains the declaration.
> chomp $cls;
> $cls = removetags($cls);
> $cls =~ s/abstract interface/interface/g;
> $cls =~ s/ *extends/\n extends/g;
> $cls =~ s/ *implements/\n implements/g;
> print $out "$cls\n{\n";
>
> }
>
> # Also handles constructors and methods ...
> sub fields()
> {
> while (<$in>)
> {
> chomp;
> last if m/FIELD DETAIL/;
> }
>
> while (1)
> {
>
> while (<$in>)
> {
> last if m/<PRE>/i;
> return if m/END OF CLASS DATA/;
> }
>
> my $done = 0;
> my $val = "";
>
> while (!$done)
> {
> chomp;
>
> $done = 1 if m|</PRE>|i;
> $_ = removetags($_);
> $val .= $_;
> $_ = <$in> || die "premature EOF";
> }
>
> $val =~ s| *, *|, |g;
> $val =~ s| *\( *|(|g;
> $val =~ s| *throws| throws|g;
>
> print $out " $val;\n";
> }
> }
>
> sub removetags
> {
> my ($s) = @_;
>
> $s =~ s/<.*?>/ /g;
> $s =~ s/ / /g;
> $s =~ s/ +/ /g;
> $s =~ s/^ *//;
> $s =~ s/ *$//;
>
> return $s;
> }
>
More information about the kaffe
mailing list