From 0bbf6b9c263c19934f1ac278f0f4ab2e68f677b6 Mon Sep 17 00:00:00 2001
From: Emeric Vigier <emeric.vigier@savoirfairelinux.com>
Date: Tue, 11 Sep 2012 15:33:49 -0400
Subject: [PATCH] #15414: remove original JNI calls before swig implementation
 comes

---
 daemon/src/managerimpl.cpp     | 382 ---------------------------------
 daemon/src/sip/sipvoiplink.cpp |   3 +-
 2 files changed, 2 insertions(+), 383 deletions(-)

diff --git a/daemon/src/managerimpl.cpp b/daemon/src/managerimpl.cpp
index 7a376ad1c4..2b64814f63 100644
--- a/daemon/src/managerimpl.cpp
+++ b/daemon/src/managerimpl.cpp
@@ -91,13 +91,8 @@
 #include <sstream>
 #include <sys/types.h> // mkdir(2)
 #include <sys/stat.h>  // mkdir(2)
-#include "com_savoirfairelinux_sflphone_client_ManagerImpl.h"
-#include <android/native_activity.h>
 
-static JavaVM *gJavaVM;
 static jobject gManagerObject, gDataObject;
-const char *kManagerPath = "com/savoirfairelinux/sflphone/client/ManagerImpl";
-const char *kDataPath = "com/savoirfairelinux/sflphone/client/Data";
 
 ManagerImpl::ManagerImpl() :
     preferences(), voipPreferences(), addressbookPreference(),
@@ -117,49 +112,6 @@ ManagerImpl::ManagerImpl() :
     srand(time(NULL));
 }
 
-static std::string getAppPath() {
-	JNIEnv *env;
-	int status;
-	bool isAttached = false;
-	std::string path;
-
-	status = gJavaVM->GetEnv((void **) &env, JNI_VERSION_1_6);
-	if (status < 0) {
-		WARN("getAppPath: failed to get JNI environment, assuming native thread");
-		status = gJavaVM->AttachCurrentThread(&env, NULL);
-		if (status < 0) {
-			ERROR("getAppPath: failed to attach current thread");
-			return;
-		}
-		isAttached = true;
-	}
-
-	jclass managerImplClass = env->GetObjectClass(gManagerObject);
-	if (!managerImplClass) {
-		ERROR("getAppPath: failed to get class reference");
-		if(isAttached)
-			gJavaVM->DetachCurrentThread();
-		return;
-	}
-
-	/* Find the callBack method ID */
-	jmethodID method = env->GetStaticMethodID(managerImplClass, "getAppPath", "()Ljava/lang/String;");
-	if (!method) {
-		ERROR("getAppPath: failed to get callBack method ID");
-		if(isAttached)
-			gJavaVM->DetachCurrentThread();
-		return;
-	}
-
-	jstring jstr = env->CallStaticObjectMethod(managerImplClass, method);
-	if (isAttached) {
-		gJavaVM->DetachCurrentThread();
-		isAttached = false;
-	}
-    path = env->GetStringUTFChars(jstr, NULL);
-	return path;
-}
-
 static void incoming_call(const std::string& accountID, const std::string& callID, const std::string& from) {
 	int status;
 	JNIEnv *env;
@@ -212,36 +164,6 @@ end:
 	return;
 }
 
-JNIEXPORT void JNICALL Java_com_savoirfairelinux_sflphone_client_ManagerImpl_answerCall
-(JNIEnv *env, jclass cls, jstring jcallID)  {
-	const char *callID;
-
-	callID = env->GetStringUTFChars(jcallID, 0);
-
-	DEBUG("CallManager::answerCall(%s)", callID);
-	Manager::instance().answerCall(callID);
-
-	/* release string */
-	env->ReleaseStringUTFChars(jcallID, callID);
-
-	return;
-}
-
-JNIEXPORT void JNICALL Java_com_savoirfairelinux_sflphone_client_ManagerImpl_refuseCall
-(JNIEnv *env, jclass cls, jstring jcallID)  {
-	const char *callID;
-
-	callID = env->GetStringUTFChars(jcallID, 0);
-
-	DEBUG("CallManager::refuseCall(%s)", callID);
-	Manager::instance().refuseCall(callID);
-
-	/* release string */
-	env->ReleaseStringUTFChars(jcallID, callID);
-
-	return;
-}
-
 static void callback_handler(char *s) {
 	int status;
 	JNIEnv *env;
@@ -357,224 +279,6 @@ JNIEXPORT jstring JNICALL Java_com_savoirfairelinux_sflphone_client_ManagerImpl_
 	return dataStringValue;
 }
 
-JNIEXPORT void JNICALL Java_com_savoirfairelinux_sflphone_client_ManagerImpl_placeCall
-(JNIEnv *env, jclass cls, jstring jaccountID, jstring jcallID, jstring jto) {
-	const char *accountID, *callID, *to;
-
-	INFO("placeCall");
-
-	accountID = env->GetStringUTFChars(jaccountID, 0);
-	callID = env->GetStringUTFChars(jcallID, 0);
-	to = env->GetStringUTFChars(jto, 0);
-
-	DEBUG("CallManager::placeCall(%s, %s, %s)", accountID, callID, to);
-	Manager::instance().outgoingCall(accountID, callID, to);
-
-	/* release string */
-	env->ReleaseStringUTFChars(jaccountID, accountID);
-	env->ReleaseStringUTFChars(jcallID, callID);
-	env->ReleaseStringUTFChars(jto, to);
-
-	return;
-}
-
-JNIEXPORT void JNICALL Java_com_savoirfairelinux_sflphone_client_ManagerImpl_hangUp
-(JNIEnv *env, jclass cls, jstring jcallID) {
-	const char *callID;
-
-	INFO("hangUp");
-
-	callID = env->GetStringUTFChars(jcallID, 0);
-
-	DEBUG("CallManager::hangup(%s)", callID);
-    Manager::instance().hangupCall(callID);
-
-	/* release string */
-	env->ReleaseStringUTFChars(jcallID, callID);
-
-	return;
-}
-
-void initClassHelper(JNIEnv *env, const char *path, jobject *objptr) {
-    jclass cls;
-
-	INFO("initClassHelper");
-
-	cls= env->FindClass(path);
-	if(!cls) {
-        ERROR("initClassHelper: failed to get %s class reference", path);
-        return;
-    }
-    jmethodID constr = env->GetMethodID(cls, "<init>", "()V");
-	INFO("initClassHelper: %s method found", path);
-
-    if(!constr) {
-        ERROR("initClassHelper: failed to get %s constructor", path);
-        return;
-    }
-    jobject obj = env->NewObject(cls, constr);
-	INFO("initClassHelper: %s constructor found", path);
-
-    if(!obj) {
-        ERROR("initClassHelper: failed to create a %s object", path);
-        return;
-    }
-	/* protect cached object instances from Android GC */
-    (*objptr) = env->NewGlobalRef(obj);
-	INFO("initClassHelper: object found %x", objptr);
-}
-
-void deinitClassHelper(JNIEnv *env, jobject obj) {
-	INFO("deinitClassHelper");
-
-	/* delete cached object instances */
-    env->DeleteGlobalRef(obj);
-	INFO("deinitClassHelper: object %x deleted", obj);
-}
-
-JNINativeMethod methods[] =
-{
-	/*
-	 * name,
-	 * signature,
-	 * funcPtr
-	 */
-	{
-		"initN",
-		"(Ljava/lang/String;)V",
-		(void *) Java_com_savoirfairelinux_sflphone_client_ManagerImpl_initN
-	},
-	{
-		"callVoid",
-		"()V",
-		(void *) Java_com_savoirfairelinux_sflphone_client_ManagerImpl_callVoid
-	},
-	{
-		"getNewData",
-		"(ILjava/lang/String;)Lcom/savoirfairelinux/sflphone/client/Data;",
-		(void *) Java_com_savoirfairelinux_sflphone_client_ManagerImpl_getNewData
-	},
-	{
-		"getDataString",
-		"(Lcom/savoirfairelinux/sflphone/client/Data;)Ljava/lang/String;",
-		(void *) Java_com_savoirfairelinux_sflphone_client_ManagerImpl_getDataString
-	},
-	{
-		"placeCall",
-		"(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V",
-		(void *) Java_com_savoirfairelinux_sflphone_client_ManagerImpl_placeCall
-	}
-};
-
-jint JNI_OnLoad(JavaVM* vm, void* reserved)
-{
-    JNIEnv* env;
-	jclass clazz;
-	int numMethods = sizeof(methods) / sizeof(methods[0]);
-
-	INFO("JNI_OnLoad");
-
-	/* get env */
-    if (vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK) {
-		ERROR("JNI_OnLoad: failed to get the environment using GetEnv()");
-        return -1;
-    }
-	INFO("JNI_Onload: GetEnv %p", env);
-
-	/* cache VM object as it won't change in near future */
-	gJavaVM = vm;
-	INFO("JNI_Onload: JavaVM %p", gJavaVM);
-
-    /* Get jclass with env->FindClass */
-	clazz = env->FindClass(kManagerPath);
-	if (!clazz) {
-        ERROR("JNI_Onload: whoops, %s class not found!", kManagerPath);
-	}
-
-	/* put instances of class object we need into cache */
-    initClassHelper(env, kManagerPath, &gManagerObject);
-    initClassHelper(env, kDataPath, &gDataObject);
-
-	if(env->RegisterNatives(clazz, methods, numMethods) != JNI_OK)
-	{
-		ERROR("JNI_Onload: Failed to register native methods");
-		return -1;
-	}
-
-	INFO("JNI_Onload: Native functions registered");
-
-    return JNI_VERSION_1_6;
-}
-
-void JNI_OnUnLoad(JavaVM* vm, void* reserved)
-{
-    JNIEnv* env;
-	jclass clazz;
-
-	INFO("JNI_OnUnLoad");
-
-	/* get env */
-    if (vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK) {
-		ERROR("JNI_OnUnLoad: failed to get the environment using GetEnv()");
-        return;
-    }
-	INFO("JNI_OnUnLoad: GetEnv %p", env);
-
-    /* Get jclass with env->FindClass */
-	clazz = env->FindClass(kManagerPath);
-	if (!clazz) {
-        ERROR("JNI_OnUnLoad: whoops, %s class not found!", kManagerPath);
-	}
-
-	/* put instances of class object we need into cache */
-    deinitClassHelper(env, gManagerObject);
-    deinitClassHelper(env, gDataObject);
-
-	env->UnregisterNatives(clazz);
-	INFO("JNI_OnUnLoad: Native functions unregistered");
-}
-
-int ManagerImpl::getSipLogLevel() {
-	JNIEnv *env;
-	int status;
-	bool isAttached = false;
-
-	status = gJavaVM->GetEnv((void **) &env, JNI_VERSION_1_6);
-	if (status < 0) {
-		WARN("getSipLogLevel: failed to get JNI environment, assuming native thread");
-		status = gJavaVM->AttachCurrentThread(&env, NULL);
-		if (status < 0) {
-			ERROR("getSipLogLevel: failed to attach current thread");
-			return 6;
-		}
-		isAttached = true;
-	}
-
-	jclass managerImplClass = env->GetObjectClass(gManagerObject);
-	if (!managerImplClass) {
-		ERROR("getSipLogLevel: failed to get class reference");
-		if(isAttached)
-			gJavaVM->DetachCurrentThread();
-		return 6;
-	}
-
-	/* Find the callBack method ID */
-	jmethodID method = env->GetStaticMethodID(managerImplClass, "getSipLogLevel", "()I");
-	if (!method) {
-		ERROR("getSipLogLevel: failed to get callBack method ID");
-		if(isAttached)
-			gJavaVM->DetachCurrentThread();
-		return 6;
-	}
-
-	int level = (int) env->CallStaticIntMethod(managerImplClass, method);
-	if (isAttached) {
-		gJavaVM->DetachCurrentThread();
-		isAttached = false;
-	}
-	return level;
-}
-
 void ManagerImpl::init(const std::string &config_file)
 {
     path_ = config_file.empty() ? retrieveConfigPath() : config_file;
@@ -612,92 +316,6 @@ void ManagerImpl::init(const std::string &config_file)
     registerAccounts();
 }
 
-JNIEXPORT void JNICALL Java_com_savoirfairelinux_sflphone_client_ManagerImpl_initN
-  (JNIEnv *jenv, jclass obj, jstring jconfig_file)
-{
-	char *config_file, *str;
-    jmethodID getAppPath;
-	jobject appPath;
-	int status;
-	JNIEnv *env;
-	bool isAttached = false;
-	jclass managerImplClass;
-
-	DEBUG("initN");
-
-	// FIXME
-	status = gJavaVM->GetEnv((void **) &env, JNI_VERSION_1_6);
-	if (status < 0) {
-		WARN("initN: failed to get JNI environment, assuming native thread");
-		status = gJavaVM->AttachCurrentThread(&env, NULL);
-		if (status < 0) {
-			ERROR("initN: failed to attach current thread");
-			return;
-		}
-		isAttached = true;
-	}
-
-	config_file = env->GetStringUTFChars(jconfig_file, 0);
-	if (!config_file) {
-		ERROR("initN: whoops, config_file is null!");
-		goto end;
-	}
-	INFO("initN: config_file: %s", config_file);
-
-	/* here we go: 20 lines of code to simply call a java method... JNI sucks... */
-	managerImplClass = env->GetObjectClass(gManagerObject);
-	if (!managerImplClass) {
-		ERROR("initN: failed to get ManagerImpl class");
-		goto release_config;
-	}
-
-	/* get the getAppPath method defined in java */
-	getAppPath = env->GetStaticMethodID(managerImplClass, "getAppPath", "()Ljava/lang/String;");
-	if (!getAppPath) {
-        ERROR("initN: whoops, getAppPath method not found!");
-		goto release_config;
-	}
-	DEBUG("initN: getAppPath method found");
-
-	/* call getAppPath method */
-	appPath = env->CallStaticObjectMethod(obj, getAppPath);
-	if (!appPath) {
-        ERROR("initN: whoops, getAppPath cannot be called!");
-		goto release_config;
-	}
-	DEBUG("initN: getAppPath returned");
-
-	/* convert it to c++ string */
-	str = env->GetStringUTFChars((jstring) appPath, NULL);
-	if (!str) {
-		ERROR("initN: whoops, appPath is null!");
-		goto release_config;
-	}
-	INFO("initN: Application path: %s", str);
-
-	DEBUG("initN: creating manager");
-	DEBUG("initN: setting application path");
-	Manager::instance().setPath(str);
-	DEBUG("initN: initializing manager");
-	Manager::instance().init(config_file);
-
-	/* release string */
-release_str:
-	env->ReleaseStringUTFChars(appPath, str);
-release_config:
-	env->ReleaseStringUTFChars(jconfig_file, config_file);
-
-end:
-	/* detach current thread */
-	if (isAttached) {
-		gJavaVM->DetachCurrentThread();
-		isAttached = false;
-	}
-
-	INFO("initN: End");
-	return;
-}
-
 void ManagerImpl::setPath(const std::string &path) {
 	history_.setPath(path);
 }
diff --git a/daemon/src/sip/sipvoiplink.cpp b/daemon/src/sip/sipvoiplink.cpp
index 424f5c350a..794f1fcadd 100644
--- a/daemon/src/sip/sipvoiplink.cpp
+++ b/daemon/src/sip/sipvoiplink.cpp
@@ -606,7 +606,8 @@ void SIPVoIPLink::setSipLogLevel()
     }
 
 #ifdef ANDROID
-	level = Manager::instance().getSipLogLevel();
+	/* level = Manager::instance().getSipLogLevel(); */
+    level = 6;
 #endif
 
     // From 0 (min) to 6 (max)
-- 
GitLab