#ifndef _node_java_h_
#define _node_java_h_
#include
#include
#include
#include
class Java : public node::ObjectWrap {
public:
static void Init(v8::Handle<:object> target);
JavaVM* getJvm() { return m_jvm; }
JNIEnv* getJavaEnv() { return m_env; }
jobject getClassLoader() { return m_classLoader; }
private:
Java();
~Java();
v8::Handle<:value> createJVM(JavaVM** jvm, JNIEnv** env);
void destroyJVM(JavaVM** jvm, JNIEnv** env);
static v8::Handle<:value> New(const v8::Arguments& args);
static v8::Handle<:value> getClassLoader(const v8::Arguments& args);
static v8::Handle<:value> newInstance(const v8::Arguments& args);
static v8::Handle<:value> newInstanceSync(const v8::Arguments& args);
static v8::Handle<:value> newProxy(const v8::Arguments& args);
static v8::Handle<:value> callStaticMethod(const v8::Arguments& args);
static v8::Handle<:value> callStaticMethodSync(const v8::Arguments& args);
static v8::Handle<:value> findClassSync(const v8::Arguments& args);
static v8::Handle<:value> newArray(const v8::Arguments& args);
static v8::Handle<:value> newByte(const v8::Arguments& args);
static v8::Handle<:value> newChar(const v8::Arguments& args);
static v8::Handle<:value> newShort(const v8::Arguments& args);
static v8::Handle<:value> newLong(const v8::Arguments& args);
static v8::Handle<:value> newFloat(const v8::Arguments& args);
static v8::Handle<:value> newDouble(const v8::Arguments& args);
static v8::Handle<:value> getStaticFieldValue(const v8::Arguments& args);
static v8::Handle<:value> setStaticFieldValue(const v8::Arguments& args);
static v8::Handle<:value> instanceOf(const v8::Arguments& args);
static v8::Handle<:value> AccessorProhibitsOverwritingGetter(v8::Local<:string> name, const v8::AccessorInfo &info);
static void AccessorProhibitsOverwritingSetter(v8::Local<:string> property, v8::Local<:value> value, const v8::AccessorInfo &info);
v8::Handle<:value> ensureJvm();
static v8::Persistent<:functiontemplate> s_ct;
JavaVM* m_jvm;
JNIEnv* m_env;
jobject m_classLoader;
std::string m_classPath;
static std::string s_nativeBindingLocation;
v8::Persistent<:array> m_classPathArray;
v8::Persistent<:array> m_optionsArray;
};
#endif