[java2perl6] r84 committed - Cast java.security.Permission and .BasicPermission to Object...

[email protected] Mon, 10 Aug 2009 22:31:44 +0000
Newsgroups perl.dbdi.dev
Message-ID <[email protected]>
Revision: 84
Author: tim.bunce
Date: Mon Aug 10 15:31:12 2009
Log: Cast java.security.Permission and .BasicPermission to Object
Add 'class'/'interface' to progress diagnostics.
Rename process_class() to process_java_class() (I'd like to add 'perl' or
'java' to subs and data elements where it helps clarify what kind of thing  
it is)

http://code.google.com/p/java2perl6/source/detail?r=84

Modified:
  /trunk/bin/java2perl6
  /trunk/lib/Java/Javap/TypeCast.pm

=======================================
--- /trunk/bin/java2perl6	Mon Aug 10 10:14:31 2009
+++ /trunk/bin/java2perl6	Mon Aug 10 15:31:12 2009
@@ -45,13 +45,12 @@
  my $caster = Java::Javap::TypeCast->new();
  my $jenny  = Java::Javap::Generator->get_generator( $genwith, @genopts );

-my %process_class_tried;
  my %check_status;

  my %top_types;
  foreach my $class ( @classes  ) {
      eval {
-        my $types = process_class( $class, $recurse ) || [];
+        my $types = process_java_class( $class, $recurse ) || [];
          $top_types{$_}++ for @$types;
      };
  }
@@ -73,17 +72,18 @@

  exit 0;

-sub process_class {
+sub process_java_class {
      my ($class, $recurse) = @_;
      my $pad = $recurse ? (". " x ($recurse-1)) : "";

-    return undef if $process_class_tried{$class}++;
+    return undef if our $process_java_class_tried->{$class}++;

      my $cmd = "javap $jpcmd $class";
      warn "$cmd\n" if $verbose;
      my $decomp = `javap $jpcmd $class`; # XXX check exit status
      my $tree   = $parser->comp_unit( $decomp )
          or die "Error parsing output of '$cmd'\n";
+    my $kind = $tree->{class_or_interface};

      my $output = $jenny->generate(
          {
@@ -116,7 +116,7 @@
              or die "Couldn't write to $file_name: $!\n";
          print $API_MODULE $output;
          close $API_MODULE or die "Error writing $file_name: $!\n";
-        warn "$pad$class: $file_name\n" unless $quiet;
+        warn "$pad$kind $class: $file_name\n" unless $quiet;
      }

      # tell them which types we saw
@@ -124,12 +124,12 @@

      if ($recurse) {
          for my $ref_class (sort @$referenced_classes) {
-            process_class( $ref_class, $recurse+1 );
+            process_java_class( $ref_class, $recurse+1 );
          }
      }

      if ($opt_check && $file_name) {
-        warn "$pad$class: checking $file_name\n";
+        warn "$pad$kind $class: checking $file_name\n";
          $check_status{$file_name} = (system("perl6", "-c", $file_name) ==  
0);
      }

=======================================
--- /trunk/lib/Java/Javap/TypeCast.pm	Mon Aug 10 10:18:12 2009
+++ /trunk/lib/Java/Javap/TypeCast.pm	Mon Aug 10 15:31:12 2009
@@ -20,6 +20,11 @@
      'java.net.URI'     => 'Str',
      'java.net.URL'     => 'Str',
      'java.io.InputStream' => 'IO',
+
+    # XXX hacks
+    # java.security.Permission has recursive dependency with  
java.security.PermissionCollection
+    'java.security.Permission' => 'Object',
+    'java.security.BasicPermission' => 'Object',
  };

  sub set_type_casts {