/usr/local/CPAN/PBJ-JNI/PBJ/JNI/JavaVM.pm


# Copyright (c) 2001 Ping Liang
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
# modify it under the same terms as Perl itself.
#
# $Id: JavaVM.pm,v 1.2 2002/01/01 20:41:53 liang Exp $

package PBJ::JNI::JavaVM;

use strict;

our $VERSION = '0.1';

use PBJ::JNI::JNIEnv;

my $_jvm;
my $_env;

sub new {
  my $classname = shift;
  my $self = {};
  my $handle = shift;
  bless($self, $classname);
  return $self;
};

sub get_env() {
  my ($self, @vm_opts) = @_;
  my ($ret);

  unless (defined $_env) {
    $ret = PBJ::JNI::Native::JNI_CreateJavaVM($_jvm, $_env, \@vm_opts);
    $ret == 0 or die "Can't create Java VM";
  }
  else {
    return $_env;
  }
  return  new PBJ::JNI::JNIEnv($_env);
}

sub DESTROY() {
  my $ret;
  #if (PBJ::JNI::Native::ExceptionOccurred($_env)) {
  #PBJ::JNI::Native::ExceptionDescribe($_env);
  #}
  #PBJ::JNI::Native::ExceptionClear($_env);
  if ($_jvm) {
    $ret = PBJ::JNI::Native::DetachCurrentThread($_jvm);
    $ret == 0 or die "DetachCurrentThread failed.\n";
    # always return -1 anyway...
    PBJ::JNI::Native::DestroyJavaVM($_jvm);
  }
  return 1;
}

1;