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/&nbsp;/ /g;
>     $s =~ s/ +/ /g;
>     $s =~ s/^ *//;
>     $s =~ s/ *$//;
> 
>     return $s;
> }
> 


More information about the kaffe mailing list