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 {

Reply via email to