Inline-Java
view release on metacpan or search on metacpan
lib/Inline/Java.pm view on Meta::CPAN
foreach my $a (@_){
if ($a eq 'jar'){
print Inline::Java::Portable::get_server_jar();
exit();
}
elsif ($a eq 'j2sdk'){
print Inline::Java->find_default_j2sdk() . " says '" .
Inline::Java::get_default_j2sdk() . "'\n";
exit();
}
elsif ($a eq 'so_dirs'){
print Inline::Java::Portable::portable('SO_LIB_PATH_VAR') . "=" .
join(Inline::Java::Portable::portable('ENV_VAR_PATH_SEP'),
Inline::Java::get_default_j2sdk_so_dirs());
exit();
}
}
$class->export_to_level(1, $class, @_);
}
######################## Inline interface ########################
# Register this module as an Inline language support module
sub register {
return {
language => 'Java',
aliases => ['JAVA', 'java'],
type => 'interpreted',
suffix => 'jdat',
};
}
# Here validate is overridden because some of the config options are needed
# at load as well.
sub validate {
my $o = shift;
# This might not print since debug is set further down...
Inline::Java::debug(1, "Starting validate.");
my $jdk = Inline::Java::get_default_j2sdk();
my $dbg = $Inline::Java::DEBUG;
my %opts = @_;
$o->set_option('DEBUG', $dbg, 'i', 1, \%opts);
$o->set_option('J2SDK', $jdk, 's', 1, \%opts);
$o->set_option('CLASSPATH', '', 's', 1, \%opts);
$o->set_option('BIND', 'localhost', 's', 1, \%opts);
$o->set_option('HOST', 'localhost', 's', 1, \%opts);
$o->set_option('PORT', -1, 'i', 1, \%opts);
$o->set_option('STARTUP_DELAY', 15, 'i', 1, \%opts);
$o->set_option('SHARED_JVM', 0, 'b', 1, \%opts);
$o->set_option('START_JVM', 1, 'b', 1, \%opts);
$o->set_option('JNI', 0, 'b', 1, \%opts);
$o->set_option('EMBEDDED_JNI', 0, 'b', 1, \%opts);
$o->set_option('NATIVE_DOUBLES', 0, 'b', 1, \%opts);
$o->set_option('WARN_METHOD_SELECT', 0, 'b', 1, \%opts);
$o->set_option('STUDY', undef, 'a', 0, \%opts);
$o->set_option('AUTOSTUDY', 0, 'b', 1, \%opts);
$o->set_option('EXTRA_JAVA_ARGS', '', 's', 1, \%opts);
$o->set_option('EXTRA_JAVAC_ARGS', '', 's', 1, \%opts);
$o->set_option('DEBUGGER', 0, 'b', 1, \%opts);
$o->set_option('PRIVATE', '', 'b', 1, \%opts);
$o->set_option('PACKAGE', '', 's', 1, \%opts);
my @left_overs = keys(%opts);
if (scalar(@left_overs)){
croak "'$left_overs[0]' is not a valid configuration option for Inline::Java";
}
# Now for the post processing
$Inline::Java::DEBUG = $o->get_java_config('DEBUG');
# Embedded JNI turns on regular JNI
if ($o->get_java_config('EMBEDDED_JNI')){
$o->set_java_config('JNI', 1);
}
if ($o->get_java_config('PORT') == -1){
if ($o->get_java_config('SHARED_JVM')){
$o->set_java_config('PORT', 7891);
}
else{
$o->set_java_config('PORT', -7890);
}
}
if (($o->get_java_config('JNI'))&&($o->get_java_config('SHARED_JVM'))){
croak("You can't use the 'SHARED_JVM' option in 'JNI' mode");
}
if (($o->get_java_config('JNI'))&&($o->get_java_config('DEBUGGER'))){
croak("You can't invoke the Java debugger ('DEBUGGER' option) in 'JNI' mode");
}
if ((! $o->get_java_config('SHARED_JVM'))&&(! $o->get_java_config('START_JVM'))){
croak("Disabling the 'START_JVM' option only makes sense in 'SHARED_JVM' mode");
}
if ($o->get_java_config('JNI')){
require Inline::Java::JNI;
}
if ($o->get_java_config('DEBUGGER')){
# Here we want to tweak a few settings to help debugging...
Inline::Java::debug(1, "Debugger mode activated");
# Add the -g compile option
$o->set_java_config('EXTRA_JAVAC_ARGS', $o->get_java_config('EXTRA_JAVAC_ARGS') . " -g ");
# Add the -sourcepath runtime option
$o->set_java_config('EXTRA_JAVA_ARGS', $o->get_java_config('EXTRA_JAVA_ARGS') .
" -sourcepath " . $o->get_api('build_dir') .
Inline::Java::Portable::portable("ENV_VAR_PATH_SEP_CP") .
Inline::Java::Portable::get_source_dir()
);
}
my $study = $o->get_java_config('STUDY');
if ((defined($study))&&(ref($study) ne 'ARRAY')){
croak "Configuration option 'STUDY' must be an array of Java class names";
}
Inline::Java::debug(1, "validate done.");
}
sub set_option {
my $o = shift;
my $name = shift;
my $default = shift;
my $type = shift;
my $env_or = shift;
my $opts = shift;
my $desc = shift;
if (! exists($o->{ILSM}->{$name})){
my $val = undef;
if (($env_or)&&(exists($ENV{"PERL_INLINE_JAVA_$name"}))){
( run in 0.697 second using v1.01-cache-2.11-cpan-71847e10f99 )