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 {