Java::JCR::Base - Base class for all JCR wrappers


Java-JCR documentation Contained in the Java-JCR distribution.

Index


Code Index:

NAME

Top

Java::JCR::Base - Base class for all JCR wrappers

DESCRIPTION

Top

This class is used internally only and provides no functionality beyond what is required to make the Perl wrappers for the JCR library work.

SEE ALSO

Top

Java::JCR

AUTHOR

Top

Andrew Sterling Hanenkamp, <hanenkamp@cpan.org>

LICENSE AND COPYRIGHT

Top


Java-JCR documentation Contained in the Java-JCR distribution.
package Java::JCR::Base;

use strict;
use warnings;

use Inline::Java qw( cast );
use Scalar::Util qw( blessed );

our $VERSION = '0.02';

sub _process_args {
    my @args;
    for my $arg (@_) {
        if (blessed $arg && $arg->isa('Java::JCR::Base')) {
            push @args, $arg->{obj};
        }
        else {
            push @args, $arg;
        }
    }

    return @args; 
}

sub _process_return {
    my $result = shift;
    my $java_package = shift;
    my $perl_package = shift;

    # Null is null
    if (!defined $result) {
        return $result;
    }

    # Process array results
    elsif ($java_package =~ /^Array:(.*)$/) {
        my $real_package = $1;
        return [
            map { bless { obj => cast($real_package, $_) }, $perl_package }
                @{ $result }
        ];
    }

    # Process scalar results
    else {
        return bless {
            obj => cast($java_package, $result),
        }, $perl_package;
    }
}

1