package org.perl.inline.java ; /* InlineJavaPerlObject */ public class InlineJavaPerlObject extends InlineJavaPerlCaller { private int id = 0 ; private String pkg = null ; /* Creates a Perl Object by calling pkg->new(args) ; */ public InlineJavaPerlObject(String _pkg, Object args[]) throws InlineJavaPerlException, InlineJavaException { pkg = _pkg ; InlineJavaPerlObject stub = (InlineJavaPerlObject)CallPerlStaticMethod(pkg, "new", args, getClass()) ; id = stub.GetId() ; stub.id = 0 ; } /* This is just a stub for already existing objects */ InlineJavaPerlObject(String _pkg, int _id) throws InlineJavaException { pkg = _pkg ; id = _id ; } int GetId(){ return id ; } public String GetPkg(){ return pkg ; } public Object InvokeMethod(String name, Object args[]) throws InlineJavaPerlException, InlineJavaException { return InvokeMethod(name, args, null) ; } public Object InvokeMethod(String name, Object args[], Class cast) throws InlineJavaPerlException, InlineJavaException { return CallPerlMethod(this, name, args, cast) ; } public void Dispose() throws InlineJavaPerlException, InlineJavaException { Dispose(false) ; } protected void Dispose(boolean gc) throws InlineJavaPerlException, InlineJavaException { if (id != 0){ CallPerlSub("Inline::Java::Callback::java_finalize", new Object [] {new Integer(id), new Boolean(gc)}) ; } } protected void finalize() throws Throwable { try { Dispose(true) ; } finally { super.finalize() ; } } }