[libinline-java-perl] 02/398: *** empty log message ***
Jonas Smedegaard
dr at jones.dk
Thu Feb 26 11:42:35 UTC 2015
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 fdd903d3eedc4e33bcf6af4a5a23416571bfad5d
Author: patrick <>
Date: Wed Feb 28 20:02:47 2001 +0000
*** empty log message ***
---
Java.pm | 114 ++++++++++++++++++++++++++++++++-----------------------
Java/Init.pm | 38 +++++++++----------
Java/Object.pm | 10 ++---
Java/Protocol.pm | 14 +++----
4 files changed, 97 insertions(+), 79 deletions(-)
diff --git a/Java.pm b/Java.pm
index c5d3923..9869dd2 100644
--- a/Java.pm
+++ b/Java.pm
@@ -1,4 +1,4 @@
-package Inline::Java;
+package Inline::Java ;
@Inline::Java::ISA = qw(Inline) ;
@@ -8,7 +8,9 @@ use strict ;
$Inline::Java::VERSION = '0.01' ;
# DEBUG is set via the JAVA_DEBUG config
-$Inline::Java::private::DEBUG = undef ;
+if (! defined($Inline::Java::DEBUG)){
+ $Inline::Java::DEBUG = 0 ;
+}
require Inline ;
@@ -20,10 +22,10 @@ use Cwd qw(cwd abs_path) ;
use IO::Socket ;
-use Inline::Java::private::Object ;
-use Inline::Java::private::Protocol ;
+use Inline::Java::Object ;
+use Inline::Java::Protocol ;
# Must be last.
-use Inline::Java::private::Init ;
+use Inline::Java::Init ;
# Stores a list of the Java interpreters running
@@ -128,7 +130,7 @@ sub _validate {
}
elsif ($key eq 'JAVA_DEBUG'){
$o->{Java}->{$key} = $value ;
- $Inline::Java::private::DEBUG = $value ;
+ $Inline::Java::DEBUG = $value ;
}
else{
if (! $ignore_other_configs){
@@ -151,15 +153,16 @@ sub build {
my $install_lib = $o->{install_lib} ;
my $modpname = $o->{modpname} ;
+
my $install = "$install_lib/auto/$modpname" ;
+ $o->set_classpath($install) ;
$o->write_java ;
$o->write_makefile ;
+
$o->compile ;
$o->{Java}->{built} = 1 ;
-
- set_classpath($install) ;
}
@@ -225,9 +228,12 @@ sub write_java {
open(JAVA, ">$build_dir/$modfname.java") or
croak "Can't open $build_dir/$modfname.java: $!" ;
+ Inline::Java::Init::DumpUserJavaCode(\*JAVA, $modfname, $code) ;
+ close(JAVA) ;
- Inline::Java::private::Init::DumpJavaCode(\*JAVA, $modfname, $code) ;
-
+ open(JAVA, ">$build_dir/InlineJavaServer.java") or
+ croak "Can't open $build_dir/InlineJavaServer.java: $!" ;
+ Inline::Java::Init::DumpServerJavaCode(\*JAVA, $modfname) ;
close(JAVA) ;
debug("write_java done.") ;
@@ -249,7 +255,7 @@ sub write_makefile {
my $javac = $o->{Java}->{JAVA_BIN} . "/javac" ;
my $java = $o->{Java}->{JAVA_BIN} . "/java" ;
- my $debug = ($Inline::Java::private::DEBUG ? "true" : "false") ;
+ my $debug = ($Inline::Java::DEBUG ? "true" : "false") ;
open(MAKE, ">$build_dir/Makefile") or
croak "Can't open $build_dir/Makefile: $!" ;
@@ -258,8 +264,12 @@ sub write_makefile {
print MAKE "\t$javac $modfname.java > cmd.out 2<&1\n" ;
print MAKE "\tcp -f *.class $install\n" ;
print MAKE "\n" ;
+ print MAKE "server:\n" ;
+ print MAKE "\t$javac InlineJavaServer.java > cmd.out 2<&1\n" ;
+ print MAKE "\tcp -f *.class $install\n" ;
+ print MAKE "\n" ;
print MAKE "report:\n" ;
- print MAKE "\t$java $modfname report $debug *.class > cmd.out 2<&1\n" ;
+ print MAKE "\t$java InlineJavaServer report $debug $modfname *.class > cmd.out 2<&1\n" ;
print MAKE "\tcp -f *.jdat $install\n" ;
close(MAKE) ;
@@ -272,7 +282,8 @@ sub set_classpath {
my $o = shift ;
my $path = shift ;
- my @cp = split(/:/, "$ENV{CLASSPATH}:$o->{Java}->{JAVA_CLASSPATH}:$path") ;
+ my @cp = split(/:/, join(":", $ENV{CLASSPATH}, $o->{Java}->{JAVA_CLASSPATH}, $path)) ;
+
my %cp = map { ($_ !~ /^\s*$/ ? ($_, 1) : ()) } @cp ;
$ENV{CLASSPATH} = join(":", keys %cp) ;
@@ -306,12 +317,22 @@ sub find_java_bin {
my $o = shift ;
my @paths = @_ ;
+ my $home = $ENV{HOME} ;
+
my $found = 0 ;
foreach my $p (@paths){
if ($p !~ /^\s*$/){
$p =~ s/\/+$// ;
- my $home = (getpwuid($<))[7] ;
- $p =~ s/^~/$home/ ;
+
+ if ($p =~ /^~/){
+ if ($home){
+ $p =~ s/^~/$home/ ;
+ }
+ else{
+ # -f don't work with ~/...
+ next ;
+ }
+ }
my $java = $p . "/java" ;
if (-f $java){
@@ -351,17 +372,21 @@ sub compile {
foreach my $cmd (
"make -s class",
+ "make -s server",
"make -s report",
) {
- chdir $build_dir ;
- my $res = system($cmd) ;
- $res and do {
- $o->error_copy ;
- croak $o->error_msg($cmd, $cwd) ;
- } ;
+ if ($cmd){
+ debug("$cmd") ;
+ chdir $build_dir ;
+ my $res = system($cmd) ;
+ $res and do {
+ $o->error_copy ;
+ croak $o->error_msg($cmd, $cwd) ;
+ } ;
- chdir $cwd ;
+ chdir $cwd ;
+ }
}
if ($o->{config}{CLEAN_AFTER_BUILD} and
@@ -414,12 +439,12 @@ sub load {
my $modpname = $o->{modpname} ;
my $modfname = $o->{modfname} ;
- my $class_dir = "$install_lib/auto/$modpname" ;
+ my $install = "$install_lib/auto/$modpname" ;
my $class = $modfname ;
# Now we must open the jdat file and read it's contents.
- if (! open(JDAT, "$class_dir/$class.jdat")){
- croak "Can't open $class_dir/$class.jdat code information file" ;
+ if (! open(JDAT, "$install/$class.jdat")){
+ croak "Can't open $install/$class.jdat code information file" ;
}
my @lines = <JDAT> ;
close(JDAT) ;
@@ -430,7 +455,9 @@ sub load {
$o->bind_jdat() ;
my $java = $o->{Java}->{JAVA_BIN} . "/java" ;
+ my $cp = $ENV{CLASSPATH} ;
+ debug(" cwd is: " . cwd()) ;
debug(" load is forking.") ;
my $pid = fork() ;
if (! defined($pid)){
@@ -438,14 +465,17 @@ sub load {
}
$CHILD_CNT++ ;
+ my $port = $o->{Java}->{JAVA_PORT} + ($CHILD_CNT - 1) ;
+
if ($pid){
# parent here
debug(" parent here.") ;
push @CHILDREN, $pid ;
- $o->setup_socket() ;
+ $o->setup_socket($port) ;
+ $Inline::Java::LOADED = 1 ;
$o->{Java}->{loaded} = 1 ;
debug("load done.") ;
}
@@ -453,12 +483,10 @@ sub load {
# child here
debug(" child here.") ;
- my $port = $o->{Java}->{JAVA_PORT} + ($CHILD_CNT - 1) ;
- my $debug = ($Inline::Java::private::DEBUG ? "true" : "false") ;
- debug(" $java $class run $debug $port") ;
+ my $debug = ($Inline::Java::DEBUG ? "true" : "false") ;
+ debug(" $java InlineJavaServer run $debug $port") ;
- chdir $class_dir ;
- exec $java, $class, "run", $debug, $port,
+ exec "$java InlineJavaServer run $debug $port"
or croak "Can't exec Java interpreter" ;
}
}
@@ -550,7 +578,7 @@ sub bind_jdat {
$class_name =~ s/^(.*)::// ;
my $code = <<CODE;
package $o->{pkg}::$class ;
-\@$o->{pkg}::$class$c:ISA = qw(Inline::Java::private::Object) ;
+\@$o->{pkg}::$class$c:ISA = qw(Inline::Java::Object) ;
\$$o->{pkg}::$class$c:EXISTS = 1 ;
CODE
@@ -593,16 +621,11 @@ sub $method {
my \$err = \$class->__validate_prototype([\@args], [($signature)]) ;
croak \$err if \$err ;
- my \$proto = new Inline::Java::private::Protocol(undef, '$modfname') ;
+ my \$proto = new Inline::Java::Protocol(undef, '$modfname') ;
return \$proto->CallStaticJavaMethod('$java_class', '$pkg', '$method', \@args) ;
}
-
-sub $class_name {
- return new(\@_) ;
-}
-
CODE
}
@@ -622,11 +645,6 @@ sub $method {
return \$this->{private}->{proto}->CallJavaMethod('$method', \@args) ;
}
-
-sub $class_name {
- return new(\@_) ;
-}
-
CODE
}
@@ -642,9 +660,9 @@ CODE
# Sets up the communication socket to the Java program
sub setup_socket {
my $o = shift ;
-
+ my $port = shift ;
+
my $timeout = $o->{Java}->{JAVA_STARTUP_DELAY} ;
- my $port = $o->{Java}->{JAVA_PORT} + ($CHILD_CNT - 1) ;
my $modfname = $o->{modfname} ;
my $socket = undef ;
@@ -679,12 +697,12 @@ sub setup_socket {
}
$socket->autoflush(1) ;
- $Inline::Java::private::Protocol::socket->{$modfname} = $socket ;
+ $Inline::Java::Protocol::socket->{$modfname} = $socket ;
}
sub debug {
- if ($Inline::Java::private::DEBUG){
+ if ($Inline::Java::DEBUG){
my $str = join("", @_) ;
while (chomp($str)) {}
print STDERR "perl: $str\n" ;
@@ -695,7 +713,7 @@ sub debug {
sub debug_obj {
my $obj = shift ;
- if ($Inline::Java::private::DEBUG){
+ if ($Inline::Java::DEBUG){
print STDERR Dumper($obj) ;
}
}
diff --git a/Java/Init.pm b/Java/Init.pm
index efa71cb..1899947 100644
--- a/Java/Init.pm
+++ b/Java/Init.pm
@@ -1,23 +1,28 @@
-package Inline::Java::private::Init ;
+package Inline::Java::Init ;
my $DATA = join('', <DATA>) ;
-my $OBJECT_DATA = join('', <Inline::Java::private::Object::DATA>) ;
-my $PROTO_DATA = join('', <Inline::Java::private::Protocol::DATA>) ;
+my $OBJECT_DATA = join('', <Inline::Java::Object::DATA>) ;
+my $PROTO_DATA = join('', <Inline::Java::Protocol::DATA>) ;
-sub DumpJavaCode {
+sub DumpUserJavaCode {
my $fh = shift ;
my $modfname = shift ;
my $code = shift ;
+ print $fh $code ;
+}
+
+
+sub DumpServerJavaCode {
+ my $fh = shift ;
+ my $modfname = shift ;
+
my $java = $DATA ;
my $java_obj = $OBJECT_DATA ;
my $java_proto = $PROTO_DATA ;
$java =~ s/<INLINE_JAVA_OBJECT>/$java_obj/g ;
$java =~ s/<INLINE_JAVA_PROTOCOL>/$java_proto/g ;
- $java =~ s/<INLINE_JAVA_CODE>/$code/g ;
-
- $java =~ s/<INLINE_MODFNAME>/$modfname/g ;
print $fh $java ;
}
@@ -29,25 +34,20 @@ sub DumpJavaCode {
__DATA__
-
import java.net.* ;
import java.io.* ;
import java.util.* ;
import java.lang.reflect.* ;
-<INLINE_JAVA_CODE>
-
-
-public class <INLINE_MODFNAME> {
+public class InlineJavaServer {
public ServerSocket ss ;
- String module = "<INLINE_MODFNAME>" ;
boolean debug = false ;
public HashMap objects = new HashMap() ;
public int objid = 1 ;
- <INLINE_MODFNAME>(String[] argv) {
+ InlineJavaServer(String[] argv) {
String mode = argv[0] ;
debug = new Boolean(argv[1]).booleanValue() ;
@@ -103,13 +103,16 @@ public class <INLINE_MODFNAME> {
void Report (String [] class_list, int idx){
+ String module = class_list[idx] ;
+ idx++ ;
+
// First we must open the file
try {
File dat = new File(module + ".jdat") ;
PrintWriter pw = new PrintWriter(new FileWriter(dat)) ;
for (int i = idx ; i < class_list.length ; i++){
- if (! class_list[i].startsWith(module)){
+ if (! class_list[i].startsWith("InlineJavaServer")){
StringBuffer name = new StringBuffer(class_list[i]) ;
name.replace(name.length() - 6, name.length(), "") ;
Class c = Class.forName(name.toString()) ;
@@ -169,7 +172,7 @@ public class <INLINE_MODFNAME> {
public static void main(String[] argv) {
- new <INLINE_MODFNAME>(argv) ;
+ new InlineJavaServer(argv) ;
}
@@ -200,6 +203,3 @@ public class <INLINE_MODFNAME> {
}
}
}
-
-
-
diff --git a/Java/Object.pm b/Java/Object.pm
index ae01bea..08518d8 100644
--- a/Java/Object.pm
+++ b/Java/Object.pm
@@ -1,5 +1,5 @@
-package Inline::Java::private::Object ;
- at Inline::Java::private::Object::ISA = qw(Tie::StdHash) ;
+package Inline::Java::Object ;
+ at Inline::Java::Object::ISA = qw(Tie::StdHash) ;
use strict ;
@@ -7,7 +7,7 @@ use strict ;
use Carp ;
use Data::Dumper ;
use Tie::Hash ;
-use Inline::Java::private::Protocol ;
+use Inline::Java::Protocol ;
@@ -31,14 +31,14 @@ sub __new {
my @args = @_ ;
my %this = () ;
- tie %this, 'Inline::Java::private::Object' ;
+ tie %this, 'Inline::Java::Object' ;
bless (\%this, $class) ;
my $this = \%this ;
$this->{private} = {} ;
$this->{private}->{class} = $java_class ;
$this->{private}->{pkg} = $pkg ;
- $this->{private}->{proto} = new Inline::Java::private::Protocol($this->{private}, $module) ;
+ $this->{private}->{proto} = new Inline::Java::Protocol($this->{private}, $module) ;
if ($objid <= 0){
$this->{private}->{proto}->CreateJavaObject($java_class, @args) ;
Inline::Java::debug("Object created in perl script ($class):") ;
diff --git a/Java/Protocol.pm b/Java/Protocol.pm
index 882453d..6f841f3 100644
--- a/Java/Protocol.pm
+++ b/Java/Protocol.pm
@@ -1,4 +1,4 @@
-package Inline::Java::private::Protocol ;
+package Inline::Java::Protocol ;
use strict ;
@@ -9,7 +9,7 @@ use Data::Dumper ;
# This will be set when the code is loaded.
-$Inline::Java::private::Protocol::socket = {} ;
+$Inline::Java::Protocol::socket = {} ;
sub new {
@@ -150,7 +150,7 @@ sub ValidateArgs {
push @ret, "undef:" ;
}
elsif (ref($arg)){
- if (! UNIVERSAL::isa($arg, "Inline::Java::private::Object")){
+ if (! UNIVERSAL::isa($arg, "Inline::Java::Object")){
croak "A Java method can only have Java objects or scalars as arguments" ;
}
my $class = $arg->{private}->{class} ;
@@ -171,7 +171,7 @@ sub Send {
my $data = shift ;
my $const = shift ;
- my $sock = $Inline::Java::private::Protocol::socket->{$this->{module}} ;
+ my $sock = $Inline::Java::Protocol::socket->{$this->{module}} ;
print $sock $data . "\n" or
croak "Can't send packet over socket: $!" ;
@@ -212,7 +212,7 @@ sub Send {
}
else{
Inline::Java::debug(" returned class doesn't exist!") ;
- $obj = Inline::Java::private::Object->__new($class, $pkg, $this->{module}, $id) ;
+ $obj = Inline::Java::Object->__new($class, $pkg, $this->{module}, $id) ;
}
return $obj ;
}
@@ -228,11 +228,11 @@ __DATA__
class InlineJavaProtocol {
- <INLINE_MODFNAME> main ;
+ InlineJavaServer main ;
String cmd ;
String response ;
- InlineJavaProtocol(<INLINE_MODFNAME> _m, String _cmd) {
+ InlineJavaProtocol(InlineJavaServer _m, String _cmd) {
main = _m ;
cmd = _cmd ;
}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libinline-java-perl.git
More information about the Pkg-perl-cvs-commits
mailing list