#include "include/jni/scoped_java_ref.h"

#include "footstone/logging.h"
#include "include/jni/jni_env.h"

namespace flexui {
inline namespace framework {
inline namespace jni {

JavaRef::JavaRef(JNIEnv* j_env, jobject j_obj) : obj_(nullptr) {
  if (!j_env) {
    j_env = JNIEnvironment::GetInstance()->AttachCurrentThread();
  } else {
    FOOTSTONE_DCHECK(j_env == JNIEnvironment::GetInstance()->AttachCurrentThread());
  }

  if (j_obj) {
    obj_ = j_env->NewGlobalRef(j_obj);
  }
}

JavaRef::~JavaRef() {
  if (obj_) {
    JNIEnvironment::GetInstance()->AttachCurrentThread()->DeleteGlobalRef(obj_);
  }
}

}
}
}