This is an automated email from the git hooks/post-receive script.

js pushed a commit to tag 0.55
in repository libinline-java-perl.

commit fc1cc684bde22fcb1ac3c63ab1b1b4c3dd9106ff
Author: Patrick LeBoutillier <p...@cpan.org>
Date:   Wed Jan 9 16:16:09 2002 +0000

    *** empty log message ***
---
 Java.pm     | 324 ++++++++++++++++++++----------------------------------------
 Java.pod    |   2 +-
 MANIFEST    |  11 ++-
 Makefile.PL |   3 +
 4 files changed, 118 insertions(+), 222 deletions(-)

diff --git a/Java.pm b/Java.pm
index 97a6a22..2d05a17 100644
--- a/Java.pm
+++ b/Java.pm
@@ -30,6 +30,7 @@ use Data::Dumper ;
 
 use IO::Socket ;
 
+use Inline::Java::Portable ;
 use Inline::Java::Class ;
 use Inline::Java::Object ;
 use Inline::Java::Array ;
@@ -52,22 +53,6 @@ my $JVM = undef ;
 my $INLINES = {} ;
 
 
-# Here is some code to figure out if we are running on command.com
-# shell under Windows.
-my $COMMAND_COM = 
-       (
-               ($^O eq 'MSWin32')&&
-               (
-                       ($ENV{PERL_INLINE_JAVA_COMMAND_COM})||
-                       (
-                               (defined($ENV{COMSPEC}))&&
-                               ($ENV{COMSPEC} =~ /(command|4dos)\.com/i)
-                       )||
-                       (`ver` =~ /win(dows )?(9[58]|m[ei])/i)
-               )
-       ) || 0 ;
-
-
 # This stuff is to control the termination of the Java Interpreter
 sub done {
        my $signal = shift ;
@@ -105,18 +90,8 @@ END {
 # Signal stuff, not really needed with JNI
 use sigtrap 'handler', \&done, 'normal-signals' ;
 
-# This whole $SIG{__DIE__} thing doesn't work because it is called
-# even if the die is trapped inside an eval...
-# $SIG{__DIE__} = sub {
-       # Setting this to -1 will prevent Inline::Java::Object::DESTROY
-       # from executing it's code for object destruction, since the state
-       # in possibly unstable.
-       # $DONE = -1 ;
-#      die @_ ;
-# } ;
-
 
-# To export the cast function.
+# To export the cast function and others.
 sub import {
     Inline::Java->export_to_level(1, @_) ;
 }
@@ -307,16 +282,12 @@ sub get_api {
 sub set_java_bin {
        my $o = shift ;
 
-       my $sep = portable("PATH_SEP_RE") ;
-
        my $cjb = $o->{ILSM}->{BIN} ;
        my $ejb = $ENV{PERL_INLINE_JAVA_BIN} ;
        if ($cjb){
-               $cjb =~ s/$sep+$// ;
                return $o->find_java_bin([$cjb]) ;
        }
        elsif ($ejb) {
-               $ejb =~ s/$sep+$// ;
                $o->{ILSM}->{BIN} = $ejb ;
                return $o->find_java_bin([$ejb]) ;
        }
@@ -339,7 +310,7 @@ sub find_java_bin {
        }
        else{
                croak
-                       "Can't locate your java binaries ('java' and 'javac'). 
Please set one of the following to the proper directory:\n" .
+                       "Can't locate your java binaries ('$java' and 
'$javac'). Please set one of the following to the proper directory:\n" .
                        "  - The BIN config option;\n" .
                        "  - The PERL_INLINE_JAVA_BIN environment variable;\n" .
                        "  - The PATH environment variable.\n" ;
@@ -353,33 +324,19 @@ sub find_file_in_path {
        my $paths = shift ;
 
        if (! defined($paths)){
-               my $psep = portable("ENV_VAR_PATH_SEP") ;
-               $paths = [(split(/$psep/, $ENV{PATH} || ''))] ;
+               $paths = [File::Spec->path()] ;
        }
 
        Inline::Java::debug_obj($paths) ;
 
-       my $home = $ENV{HOME} ;
-       my $sep = portable("PATH_SEP_RE") ;
-
        foreach my $p (@{$paths}){
+               $p =~ s/^\s+// ;
+               $p =~ s/\s+$// ;
                Inline::Java::debug("path element: $p") ;
                if ($p !~ /^\s*$/){
-                       $p =~ s/$sep+$// ;
-
-                       if ($p =~ /^~/){
-                               if ($home){
-                                       $p =~ s/^~/$home/ ;
-                               }
-                               else{
-                                       # -f don't work with ~/...
-                                       next ;
-                               }
-                       }
-
                        my $found = 0 ;
                        foreach my $file (@{$files}){
-                               my $f = "$p/$file" ;
+                               my $f = File::Spec->catfile($p, $file) ;
                                Inline::Java::debug("  candidate: $f\n") ;
 
                                if (-f $f){
@@ -427,19 +384,22 @@ sub write_java {
        $o->mkpath($build_dir) ;
 
        if (! $study_only){
-               open(Inline::Java::JAVA, ">$build_dir/$modfname.java") or
-                       croak "Can't open $build_dir/$modfname.java: $!" ;
+               my $p = File::Spec->catfile($build_dir, "$modfname.java") ;
+               open(Inline::Java::JAVA, ">$p") or
+                       croak "Can't open $p: $!" ;
                Inline::Java::Init::DumpUserJavaCode(\*Inline::Java::JAVA, 
$code) ;
                close(Inline::Java::JAVA) ;
        }
 
-       open(Inline::Java::JAVA, ">$build_dir/InlineJavaServer.java") or
-               croak "Can't open $build_dir/InlineJavaServer.java: $!" ;
+       my $p = File::Spec->catfile($build_dir, "InlineJavaServer.java") ;
+       open(Inline::Java::JAVA, ">$p") or
+               croak "Can't open $p: $!" ;
        Inline::Java::Init::DumpServerJavaCode(\*Inline::Java::JAVA) ;
        close(Inline::Java::JAVA) ;
 
-       open(Inline::Java::JAVA, ">$build_dir/InlineJavaPerlCaller.java") or
-               croak "Can't open $build_dir/InlineJavaPerlCaller.java: $!" ;
+       $p = File::Spec->catfile($build_dir, "InlineJavaPerlCaller.java") ;
+       open(Inline::Java::JAVA, ">$p") or
+               croak "Can't open $p: $!" ;
        Inline::Java::Init::DumpCallbackJavaCode(\*Inline::Java::JAVA) ;
        close(Inline::Java::JAVA) ;
 
@@ -458,16 +418,15 @@ sub compile {
        my $suffix = $o->get_api('suffix') ;
        my $install_lib = $o->get_api('install_lib') ;
 
-       my $install = "$install_lib/auto/$modpname" ;
-       my $pinstall = portable("RE_FILE", $install) ;
+       my $install = File::Spec->catdir($install_lib, "auto", $modpname) ;
 
-       $o->mkpath("$install") ;
-       $o->set_classpath($pinstall) ;
+       $o->mkpath($install) ;
+       $o->set_classpath($install) ;
 
-       my $javac = $o->{ILSM}->{BIN} . "/javac" . portable("EXE_EXTENSION") ;
+       my $javac = File::Spec->catfile($o->{ILSM}->{BIN}, 
+               "javac" . portable("EXE_EXTENSION")) ;
 
        my $predir = portable("IO_REDIR") ;
-       my $pjavac = portable("RE_FILE", $javac) ;
 
        my $cwd = Cwd::cwd() ;
        if ($o->get_config('UNTAINT')){
@@ -488,9 +447,9 @@ sub compile {
        # file, but we can't penalize the other users just to give better 
support
        # for Win9x...
        foreach my $cmd (
-               "\"$pjavac\" InlineJavaServer.java $source > cmd.out $predir",
+               "\"$javac\" InlineJavaServer.java $source > cmd.out $predir",
                ["copy_classes", $o, $install],
-               ["touch_file", $o, "$install/$modfname.$suffix"],
+               ["touch_file", $o, File::Spec->catfile($install, 
"$modfname.$suffix")],
                ) {
 
                if ($cmd){
@@ -572,10 +531,9 @@ sub copy_classes {
        my $build_dir = $o->get_api('build_dir') ;
        my $modpname = $o->get_api('modpname') ;
        my $install_lib = $o->get_api('install_lib') ;
-       my $pinstall = portable("RE_FILE", $install) ;
 
        my $src_dir = $build_dir ;
-       my $dest_dir = $pinstall ;
+       my $dest_dir = $install ;
 
        my @flist = glob("*.class") ;
 
@@ -585,7 +543,7 @@ sub copy_classes {
                }
                foreach my $file (@flist){
                        if (! (-s $file)){
-                               croak "File $file has size zero. Previous 
command failed under WIN9x?" ;
+                               croak "File $file has size zero. Previous 
command failed under command.com?" ;
                        }
                }
        }
@@ -594,9 +552,11 @@ sub copy_classes {
                if ($o->get_config('UNTAINT')){
                        ($file) = $file =~ /(.*)/ ;
                }
-               Inline::Java::debug("copy_classes: $file, $dest_dir/$file") ;
-               if (! File::Copy::copy($file, "$dest_dir/$file")){
-                       return "Can't copy $src_dir/$file to $dest_dir/$file: 
$!" ;
+               my $f = File::Spec->catfile($src_dir, $file) ;
+               my $t = File::Spec->catfile($dest_dir, $file) ;
+               Inline::Java::debug("copy_classes: $file, $t") ;
+               if (! File::Copy::copy($file, $t)){
+                       return "Can't copy $f to $t: $!" ;
                }
        }
 
@@ -608,10 +568,8 @@ sub touch_file {
        my $o = shift ;
        my $file = shift ;
 
-       my $pfile = portable("RE_FILE", $file) ;
-
-       if (! open(Inline::Java::TOUCH, ">$pfile")){
-               croak "Can't create file $pfile" ;
+       if (! open(Inline::Java::TOUCH, ">$file")){
+               croak "Can't create file $file" ;
        }
        close(Inline::Java::TOUCH) ;
 
@@ -630,15 +588,14 @@ sub load {
        my $install_lib = $o->get_api('install_lib') ;
        my $modfname = $o->get_api('modfname') ;
        my $modpname = $o->get_api('modpname') ;
-       my $install = "$install_lib/auto/$modpname" ;
-       my $pinstall = portable("RE_FILE", $install) ;
+       my $install = File::Spec->catdir($install_lib, "auto", $modpname) ;
 
        # Make sure the default options are set.
        $o->_validate(1, $o->get_config()) ;
 
        # If the JVM is not running, we need to start it here.
        if (! $JVM){
-               $o->set_classpath($pinstall) ;
+               $o->set_classpath($install) ;
                $JVM = new Inline::Java::JVM($o) ;
        }
 
@@ -681,36 +638,37 @@ sub set_classpath {
 
        my $sep = portable("ENV_VAR_PATH_SEP_CP") ;
        my @cp = split(/$sep/, join($sep, @list)) ;
-       my %cp = map { ($_ !~ /^\s*$/ ? ($_, 1) : ()) } @cp ;
 
        # Add dot to CLASSPATH, required when building
-       my $tmp = join($sep, (keys %cp, '.')) ;
-
-       $tmp =~ s/\s*\[PERL_INLINE_JAVA\s*=\s*(.*?)\s*\]\s*/{
-               my $modules = $1 ;
-               Inline::Java::debug("   found special CLASSPATH entry: 
$modules") ;
+       push @cp, '.' ;
+
+       foreach my $p (@cp){
+               $p =~ s/^\s+// ;
+               $p =~ s/\s+$// ;
+               if ($p =~ /\[PERL_INLINE_JAVA\s*=\s*(.*?)\s*\]/){
+                       my $modules = $1 ;
+                       Inline::Java::debug("   found special CLASSPATH entry: 
$modules") ;
                
-               my @modules = split(m#\s*,\s*#, $modules) ;
-               my $psep = portable("PATH_SEP") ;
-               my $psep_re = portable("PATH_SEP_RE") ;
-               my $dir = $o->get_config('DIRECTORY') . $psep . "lib" . $psep 
."auto" ;
+                       my @modules = split(m#\s*,\s*#, $modules) ;
+                       my $dir = 
File::Spec->catdir($o->get_config('DIRECTORY'), "lib", "auto") ;
 
-               my %paths = () ;
-               foreach my $m (@modules){
-                       $m =~ s#::#$psep_re#g ;
+                       my %paths = () ;
+                       foreach my $m (@modules){
+                               $m = File::Spec->catdir(split(/::/, $m)) ;
 
-                       # Here we must make sure that the directory exists, or
-                       # else it is removed from the CLASSPATH by Java
-                       my $path = "$dir$psep$m" ;
-                       $o->mkpath($path) ;
+                               # Here we must make sure that the directory 
exists, or
+                               # else it is removed from the CLASSPATH by Java
+                               my $path = File::Spec->catdir($dir, $m) ;
+                               $o->mkpath($path) ;
 
-                       $paths{$path} = 1 ;
-               }
+                               $paths{$path} = 1 ;
+                       }
 
-               join($sep, keys %paths) ;
-       }/eg ;
+                       $p = join($sep, keys %paths) ;
+               }
+       }
 
-       $ENV{CLASSPATH} = $tmp ;
+       $ENV{CLASSPATH} = join($sep, @cp) ;
 
        Inline::Java::debug("  classpath: " . $ENV{CLASSPATH}) ;
 }
@@ -744,8 +702,7 @@ sub report {
        my $modpname = $o->get_api('modpname') ;
        my $modfname = $o->get_api('modfname') ;
        my $suffix = $o->get_api('suffix') ;
-       my $install = "$install_lib/auto/$modpname" ;
-       my $pinstall = portable("RE_FILE", $install) ;
+       my $install = File::Spec->catdir($install_lib, "auto", $modpname) ;
 
        my $use_cache = 0 ;
        if (! defined($classes)){
@@ -754,11 +711,13 @@ sub report {
                $use_cache = 1 ;
 
                # We need to take the classes that are in the directory...
-               my @cl = glob("$pinstall/*.class") ;
+               my @cl = glob(File::Spec->catfile($install, "*.class")) ;
                foreach my $class (@cl){
-                       $class =~ s/^\Q$pinstall\E\/(.*)\.class$/$1/ ;
-                       if ($class !~ /^InlineJava(Server|Perl)/){
-                               push @{$classes}, $class ;
+                       if ($class =~ s/\.class$//){
+                               my ($v, $d, $f) = File::Spec->splitpath($class) 
;
+                               if ($f !~ /^InlineJava(Server|Perl)/){
+                                       push @{$classes}, $f ;
+                               }
                        }
                }
        }
@@ -782,9 +741,10 @@ sub report {
                # it was up to date. We can therefore use the data 
                # from the cache
                Inline::Java::debug("using jdat cache") ;
-               my $size = (-s "$install/$modfname.$suffix") || 0 ;
+               my $p = File::Spec->catfile($install, "$modfname.$suffix") ;
+               my $size = (-s $p) || 0 ;
                if ($size > 0){
-                       if (open(Inline::Java::CACHE, 
"<$install/$modfname.$suffix")){
+                       if (open(Inline::Java::CACHE, "<$p")){
                                $resp = join("", <Inline::Java::CACHE>) ;
                                close(Inline::Java::CACHE) ;
                        }
@@ -887,7 +847,7 @@ sub load_jdat {
                                
$d->{classes}->{$current_class}->{fields}->{$field} = {} ;
                        }
 
-                       $d->{classes}->{$current_class}->{fields}->{$field} = 
+                       
$d->{classes}->{$current_class}->{fields}->{$field}->{$type} =  
                                {
                                        TYPE => $type,
                                        STATIC => ($static eq "static" ? 1 : 0),
@@ -943,13 +903,18 @@ use Carp ;
 
 CODE
 
-               while (my ($field, $sign) = each 
%{$d->{classes}->{$class}->{fields}}){
-                       if ($sign->{STATIC}){
-                               $code .= <<CODE;
+               while (my ($field, $types) = each 
%{$d->{classes}->{$class}->{fields}}){
+                       while (my ($type, $sign) = each %{$types}){
+                               if ($sign->{STATIC}){
+                                       $code .= <<CODE;
 tie \$$class$colon:$field, "Inline::Java::Object::StaticMember", 
-                       \$DUMMY_OBJECT,
-                       '$field' ;
+       \$DUMMY_OBJECT,
+       '$field' ;
 CODE
+                                       # We have at least one static version 
of this field,
+                                       # that's enough.
+                                       last ;
+                               }
                        }
                }
 
@@ -1049,6 +1014,8 @@ sub get_fields {
        foreach my $d (@{$data_list}){
                if (exists($d->{classes}->{$class})){
                        while (my ($field, $value) = each 
%{$d->{classes}->{$class}->{fields}}){
+                               # Here $value is a hash that contains all the 
different
+                               # types available for the field $field
                                $fields->{$field} = $value ;
                        }
                }
@@ -1119,14 +1086,21 @@ sub info {
 ######################## General Functions ########################
 
 
-sub get_JVM {
+sub __get_JVM {
        return $JVM ;
 }
 
 
+# For testing purposes only...
+sub __clear_JVM {
+       $JVM = undef ;
+}
+
+
 sub shutdown_JVM {
        if ($JVM){
-               undef $JVM ;
+               $JVM->shutdown() ;
+               $JVM = undef ;
        }
 }
 
@@ -1138,6 +1112,20 @@ sub reconnect_JVM {
 }
 
 
+sub capture_JVM {
+       if ($JVM){
+               $JVM->capture() ;
+       }
+}
+
+
+sub i_am_JVM_owner {
+       if ($JVM){
+               $JVM->am_owner() ;
+       }
+}
+
+
 sub release_JVM {
        if ($JVM){
                $JVM->release() ;
@@ -1162,11 +1150,6 @@ sub get_DEBUG {
 }
 
 
-sub debug_all {
-       return (Inline::Java::get_DEBUG() > 1) ;
-}
-
-
 sub get_DONE {
        return $DONE ;
 }
@@ -1228,106 +1211,15 @@ sub debug_obj {
 }
 
 
-sub dump_obj {
-       my $obj = shift ;
-
-       return debug_obj($obj, "Java Object Dump:\n") ;
+sub debug_all {
+       return (Inline::Java::get_DEBUG() > 1) ;
 }
 
 
-sub portable {
-       my $key = shift ;
-       my $val = shift ;
-
-       my $defmap = {
-               EXE_EXTENSION           =>      '',
-               ENV_VAR_PATH_SEP        =>      ':',
-               ENV_VAR_PATH_SEP_CP     =>      ':',
-               PATH_SEP                        =>      '/',
-               PATH_SEP_RE                     =>      '/',
-               RE_FILE                         =>  [],
-               RE_FILE_JAVA            =>  [],
-               IO_REDIR                        =>  '2>&1',
-               GOT_ALARM                       =>  1,
-               COMMAND_COM                     =>  0,
-               SUB_FIX_CLASSPATH       =>      undef,
-       } ;
-
-       my $map = {
-               MSWin32 => {
-                       EXE_EXTENSION           =>      '.exe',
-                       ENV_VAR_PATH_SEP        =>      ';',
-                       ENV_VAR_PATH_SEP_CP     =>      ';',
-                       PATH_SEP                        =>      '\\',
-                       PATH_SEP_RE                     =>      '\\\\',
-                       RE_FILE                         =>  ['/', '\\'],
-                       RE_FILE_JAVA            =>  ['\\\\', '\\\\'],
-                       # 2>&1 doesn't work under command.com
-                       IO_REDIR                        =>  ($COMMAND_COM ? '' 
: undef),
-                       GOT_ALARM                       =>  0,
-                       COMMAND_COM                     =>      $COMMAND_COM,
-               },
-               cygwin => {
-                       ENV_VAR_PATH_SEP_CP     =>      ';',
-                       SUB_FIX_CLASSPATH       =>      sub {
-                               my $val = shift ;
-                               if (defined($val)&&($val)){
-                                       $val = `cygpath -w \"$val\"` ;
-                                       chomp($val) ;
-                               }
-                               return $val ;
-                       },
-               },
-       } ;
-
-       if (! exists($defmap->{$key})){
-               croak "Portability issue $key not defined!" ;
-       }
+sub dump_obj {
+       my $obj = shift ;
 
-       if ((defined($map->{$^O}))&&(defined($map->{$^O}->{$key}))){
-               if ($key =~ /^RE_/){
-                       if (defined($val)){
-                               my $f = $map->{$^O}->{$key}->[0] ;
-                               my $t = $map->{$^O}->{$key}->[1] ;
-                               $val =~ s/$f/$t/g ;
-                               Inline::Java::debug("portable: $key => $val for 
$^O is '$val'") ;
-                               return $val ;
-                       }
-                       else{
-                               Inline::Java::debug("portable: $key for $^O is 
'undef'") ;
-                               return undef ;
-                       }
-               }
-               elsif ($key =~ /^SUB_/){
-                       my $sub = $map->{$^O}->{$key} ;
-                       if (defined($sub)){
-                               $val = $sub->($val) ;
-                               Inline::Java::debug("portable: $key => $val for 
$^O is '$val'") ;
-                               return $val ;
-                       }
-                       else{
-                               return $val ;
-                       }
-               }
-               else{
-                       Inline::Java::debug("portable: $key for $^O is 
'$map->{$^O}->{$key}'") ;
-                       return $map->{$^O}->{$key} ;
-               }
-       }
-       else{
-               if ($key =~ /^RE_/){
-                       Inline::Java::debug("portable: $key => $val for $^O is 
default '$val'") ;
-                       return $val ;
-               }
-               if ($key =~ /^SUB_/){
-                       Inline::Java::debug("portable: $key => $val for $^O is 
default '$val'") ;
-                       return $val ;
-               }
-               else{
-                       Inline::Java::debug("portable: $key for $^O is default 
'$defmap->{$key}'") ;
-                       return $defmap->{$key} ;
-               }
-       }
+       return debug_obj($obj, "Java Object Dump:\n") ;
 }
 
 
diff --git a/Java.pod b/Java.pod
index f789b24..cd1231d 100644
--- a/Java.pod
+++ b/Java.pod
@@ -159,7 +159,7 @@ behavior of C<Inline::Java>:
    WARN_METHOD_SELECT:
       Throws a warning when C<Inline::Java> has to 'choose' between 
       different method signatures. The warning states the possible 
-      choices and the sugnature chosen.
+      choices and the signature chosen.
       Ex: WARN_METHOD_SELECT => 1
 
    STUDY:
diff --git a/MANIFEST b/MANIFEST
index 2ebc7d4..53f8109 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -4,9 +4,6 @@ README
 README.JNI
 TODO
 Makefile.PL
-shared_jvm_server.pl
-shared_jvm_test.pl
-swing_gui_test.pl
 Java.pm
 Java.pod
 Java/Init.pm
@@ -14,6 +11,7 @@ Java/Object.pm
 Java/Protocol.pm
 Java/Class.pm
 Java/Callback.pm
+Java/Portable.pm
 Java/Array.pm
 Java/Makefile.PL
 Java/JVM.pm
@@ -28,8 +26,11 @@ t/05_arrays.t
 t/06_static.t
 t/07_polymorph.t
 t/08_study.t
-t/09_exceptions.t
-t/10_callbacks.t
+t/09_shared_alone.t
+t/10_shared_mult.t
+t/11_shared_fork.t
+t/12_exceptions.t
+t/13_callbacks.t
 t/types.java
 t/types.class
 t/no_const.java
diff --git a/Makefile.PL b/Makefile.PL
index 77aad23..f6712b4 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -5,6 +5,9 @@ use strict ;
 require "Java/Portable.pm" ;
 Inline::Java::Portable::use_alone() ;
 
+# Replace everything just like out-of-the-box...
+rename("Java/JNI.xs_", "Java/JNI.xs") ;
+
 print "\nWelcome to the Inline::Java installation procedure.\n\n" ;
 
 WriteMakefile(

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-perl/packages/libinline-java-perl.git

_______________________________________________
Pkg-perl-cvs-commits mailing list
Pkg-perl-cvs-commits@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-perl-cvs-commits

Reply via email to