Hadoop-Inline-ClassLoader
view release on metacpan or search on metacpan
lib/Hadoop/Inline/ClassLoader.pm view on Meta::CPAN
package Hadoop::Inline::ClassLoader;
use 5.014;
use strict;
use warnings;
our $VERSION = '0.002'; # VERSION
use Carp qw( croak );
use File::Basename qw( dirname );
use Ref::Util qw(
is_arrayref
is_hashref
);
use Constant::FromGlobal
DEBUG => {
default => 0,
env => 1,
int => 1,
},
;
use constant {
CHAR_COLON => q{:},
EMPTY_STRING => q{ },
HADOOP_COMMAND => '/usr/bin/hadoop',
IJ_DEBUG => DEBUG && DEBUG > 1,
PACKAGE_DELIMITER => q{::},
RE_MULTI_LF => qr{ \n+ }xms,
RE_PATH_SEP_CHAR => qr{ [:] }xms,
RE_WS => qr{ \s+ }xms,
};
my $ENV_INITIALIZED;
my %DEFAULT = (
alias => 1,
);
sub import {
my($class, @args) = @_;
my $opt = @args && is_hashref $args[0] ? shift(@args) : { %DEFAULT };
my @java_classes = @args or croak 'No java classes were defined';
my $caller = $opt->{export_to} || caller 1;
if ( ! $ENV_INITIALIZED ) {
my($henv, $paths) = $class->_collect_env( $opt );
$ENV{$_} = $henv->{ $_ } for keys %{ $henv };
require Inline;
require Inline::Java;
Inline->import(
Java => 'STUDY',
STUDY => [],
DEBUG => IJ_DEBUG,
);
$ENV_INITIALIZED++;
}
eval qq{
package $caller;
use Inline (
Java => 'STUDY',
STUDY => [],
) ;
1;
} or do {
( run in 0.608 second using v1.01-cache-2.11-cpan-39bf76dae61 )