1
0
Fork 0
mirror of https://github.com/geometer/FBReaderJ.git synced 2025-10-03 09:49:19 +02:00

fixed Logger issues

This commit is contained in:
Nikolay Pultsin 2012-03-03 08:38:35 +00:00
parent 0268ebfe47
commit a9610d892c
4 changed files with 33 additions and 33 deletions

View file

@ -21,9 +21,11 @@
JavaVM *AndroidUtil::ourJavaVM = 0; JavaVM *AndroidUtil::ourJavaVM = 0;
const char * const AndroidUtil::Class_java_lang_System = "java/lang/System";
const char * const AndroidUtil::Class_java_util_Collection = "java/util/Collection"; const char * const AndroidUtil::Class_java_util_Collection = "java/util/Collection";
const char * const AndroidUtil::Class_java_util_Locale = "java/util/Locale"; const char * const AndroidUtil::Class_java_util_Locale = "java/util/Locale";
const char * const AndroidUtil::Class_java_io_InputStream = "java/io/InputStream"; const char * const AndroidUtil::Class_java_io_InputStream = "java/io/InputStream";
const char * const AndroidUtil::Class_java_io_PrintStream = "java/io/PrintStream";
const char * const AndroidUtil::Class_ZLibrary = "org/geometerplus/zlibrary/core/library/ZLibrary"; const char * const AndroidUtil::Class_ZLibrary = "org/geometerplus/zlibrary/core/library/ZLibrary";
const char * const AndroidUtil::Class_NativeFormatPlugin = "org/geometerplus/fbreader/formats/NativeFormatPlugin"; const char * const AndroidUtil::Class_NativeFormatPlugin = "org/geometerplus/fbreader/formats/NativeFormatPlugin";
const char * const AndroidUtil::Class_PluginCollection = "org/geometerplus/fbreader/formats/PluginCollection"; const char * const AndroidUtil::Class_PluginCollection = "org/geometerplus/fbreader/formats/PluginCollection";
@ -32,6 +34,8 @@ const char * const AndroidUtil::Class_ZLFile = "org/geometerplus/zlibrary/core/f
const char * const AndroidUtil::Class_Book = "org/geometerplus/fbreader/library/Book"; const char * const AndroidUtil::Class_Book = "org/geometerplus/fbreader/library/Book";
const char * const AndroidUtil::Class_Tag = "org/geometerplus/fbreader/library/Tag"; const char * const AndroidUtil::Class_Tag = "org/geometerplus/fbreader/library/Tag";
jobject AndroidUtil::OBJECT_java_lang_System_err;
jmethodID AndroidUtil::MID_java_util_Collection_toArray; jmethodID AndroidUtil::MID_java_util_Collection_toArray;
jmethodID AndroidUtil::SMID_java_util_Locale_getDefault; jmethodID AndroidUtil::SMID_java_util_Locale_getDefault;
@ -41,6 +45,8 @@ jmethodID AndroidUtil::MID_java_io_InputStream_close;
jmethodID AndroidUtil::MID_java_io_InputStream_read; jmethodID AndroidUtil::MID_java_io_InputStream_read;
jmethodID AndroidUtil::MID_java_io_InputStream_skip; jmethodID AndroidUtil::MID_java_io_InputStream_skip;
jmethodID AndroidUtil::MID_java_io_PrintStream_println;
jmethodID AndroidUtil::SMID_ZLibrary_Instance; jmethodID AndroidUtil::SMID_ZLibrary_Instance;
jmethodID AndroidUtil::MID_ZLibrary_getVersionName; jmethodID AndroidUtil::MID_ZLibrary_getVersionName;
@ -86,6 +92,12 @@ bool AndroidUtil::init(JavaVM* jvm) {
JNIEnv *env = getEnv(); JNIEnv *env = getEnv();
jclass cls; jclass cls;
CHECK_NULL( cls = env->FindClass(Class_java_lang_System) );
jfieldID field;
CHECK_NULL( field = env->GetStaticFieldID(cls, "err", "Ljava/io/PrintStream;") );
CHECK_NULL( OBJECT_java_lang_System_err = env->GetStaticObjectField(cls, field) );
env->DeleteLocalRef(cls);
CHECK_NULL( cls = env->FindClass(Class_java_util_Collection) ); CHECK_NULL( cls = env->FindClass(Class_java_util_Collection) );
CHECK_NULL( MID_java_util_Collection_toArray = env->GetMethodID(cls, "toArray", "()[Ljava/lang/Object;") ); CHECK_NULL( MID_java_util_Collection_toArray = env->GetMethodID(cls, "toArray", "()[Ljava/lang/Object;") );
//CHECK_NULL( MID_java_util_Collection_add = env->GetMethodID(cls, "add", "(Ljava/lang/Object;)Z") ); //CHECK_NULL( MID_java_util_Collection_add = env->GetMethodID(cls, "add", "(Ljava/lang/Object;)Z") );
@ -102,6 +114,10 @@ bool AndroidUtil::init(JavaVM* jvm) {
CHECK_NULL( MID_java_io_InputStream_skip = env->GetMethodID(cls, "skip", "(J)J") ); CHECK_NULL( MID_java_io_InputStream_skip = env->GetMethodID(cls, "skip", "(J)J") );
env->DeleteLocalRef(cls); env->DeleteLocalRef(cls);
CHECK_NULL( cls = env->FindClass(Class_java_io_PrintStream) );
CHECK_NULL( MID_java_io_PrintStream_println = env->GetMethodID(cls, "println", "(Ljava/lang/String;)V") );
env->DeleteLocalRef(cls);
CHECK_NULL( cls = env->FindClass(Class_ZLibrary) ); CHECK_NULL( cls = env->FindClass(Class_ZLibrary) );
CHECK_NULL( SMID_ZLibrary_Instance = env->GetStaticMethodID(cls, "Instance", "()Lorg/geometerplus/zlibrary/core/library/ZLibrary;") ); CHECK_NULL( SMID_ZLibrary_Instance = env->GetStaticMethodID(cls, "Instance", "()Lorg/geometerplus/zlibrary/core/library/ZLibrary;") );
CHECK_NULL( MID_ZLibrary_getVersionName = env->GetMethodID(cls, "getVersionName", "()Ljava/lang/String;") ); CHECK_NULL( MID_ZLibrary_getVersionName = env->GetMethodID(cls, "getVersionName", "()Ljava/lang/String;") );

View file

@ -30,9 +30,11 @@ private:
static JavaVM *ourJavaVM; static JavaVM *ourJavaVM;
public: public:
static const char * const Class_java_lang_System;
static const char * const Class_java_util_Collection; static const char * const Class_java_util_Collection;
static const char * const Class_java_util_Locale; static const char * const Class_java_util_Locale;
static const char * const Class_java_io_InputStream; static const char * const Class_java_io_InputStream;
static const char * const Class_java_io_PrintStream;
static const char * const Class_ZLibrary; static const char * const Class_ZLibrary;
static const char * const Class_ZLFile; static const char * const Class_ZLFile;
static const char * const Class_NativeFormatPlugin; static const char * const Class_NativeFormatPlugin;
@ -41,6 +43,8 @@ public:
static const char * const Class_Book; static const char * const Class_Book;
static const char * const Class_Tag; static const char * const Class_Tag;
static jobject OBJECT_java_lang_System_err;
static jmethodID MID_java_util_Collection_toArray; static jmethodID MID_java_util_Collection_toArray;
static jmethodID SMID_java_util_Locale_getDefault; static jmethodID SMID_java_util_Locale_getDefault;
@ -50,6 +54,8 @@ public:
static jmethodID MID_java_io_InputStream_read; static jmethodID MID_java_io_InputStream_read;
static jmethodID MID_java_io_InputStream_skip; static jmethodID MID_java_io_InputStream_skip;
static jmethodID MID_java_io_PrintStream_println;
static jmethodID SMID_ZLibrary_Instance; static jmethodID SMID_ZLibrary_Instance;
static jmethodID MID_ZLibrary_getVersionName; static jmethodID MID_ZLibrary_getVersionName;

View file

@ -25,6 +25,17 @@ const std::string ZLLogger::DEFAULT_CLASS;
ZLLogger *ZLLogger::ourInstance = 0; ZLLogger *ZLLogger::ourInstance = 0;
static void printInternal(const std::string &message) {
JNIEnv *env = AndroidUtil::getEnv();
jstring javaMessage = AndroidUtil::createJavaString(env, message);
env->CallVoidMethod(
AndroidUtil::OBJECT_java_lang_System_err,
AndroidUtil::MID_java_io_PrintStream_println,
javaMessage
);
env->DeleteLocalRef(javaMessage);
}
ZLLogger &ZLLogger::Instance() { ZLLogger &ZLLogger::Instance() {
if (ourInstance == 0) { if (ourInstance == 0) {
ourInstance = new ZLLogger(); ourInstance = new ZLLogger();
@ -33,14 +44,6 @@ ZLLogger &ZLLogger::Instance() {
} }
ZLLogger::ZLLogger() { ZLLogger::ZLLogger() {
myEnv = AndroidUtil::getEnv();
mySystemErr = 0;
myPrintStreamClass = 0;
}
ZLLogger::~ZLLogger() {
myEnv->DeleteLocalRef(mySystemErr);
myEnv->DeleteLocalRef(myPrintStreamClass);
} }
void ZLLogger::registerClass(const std::string &className) { void ZLLogger::registerClass(const std::string &className) {
@ -63,20 +66,3 @@ void ZLLogger::print(const std::string &className, const std::string &message) c
void ZLLogger::println(const std::string &className, const std::string &message) const { void ZLLogger::println(const std::string &className, const std::string &message) const {
print(className, message); print(className, message);
} }
void ZLLogger::printInternal(const std::string &message) const {
if (mySystemErr == 0) {
jclass systemClass = myEnv->FindClass("java/lang/System");
jfieldID systemErr = myEnv->GetStaticFieldID(systemClass, "err", "Ljava/io/PrintStream;");
mySystemErr = myEnv->GetStaticObjectField(systemClass, systemErr);
myEnv->DeleteLocalRef(systemClass);
}
if (myPrintStreamClass == 0) {
myPrintStreamClass = myEnv->FindClass("java/io/PrintStream");
}
jmethodID println = myEnv->GetMethodID(myPrintStreamClass, "print", "(Ljava/lang/String;)V");
jstring javaMessage = myEnv->NewStringUTF(message.c_str());
myEnv->CallVoidMethod(mySystemErr, println, javaMessage);
myEnv->DeleteLocalRef(javaMessage);
}

View file

@ -20,8 +20,6 @@
#ifndef __ZLLOGGER_H__ #ifndef __ZLLOGGER_H__
#define __ZLLOGGER_H__ #define __ZLLOGGER_H__
#include <jni.h>
#include <string> #include <string>
#include <set> #include <set>
@ -37,8 +35,6 @@ private:
private: private:
ZLLogger(); ZLLogger();
~ZLLogger();
void printInternal(const std::string &message) const;
public: public:
void registerClass(const std::string &className); void registerClass(const std::string &className);
@ -47,10 +43,6 @@ public:
private: private:
std::set<std::string> myRegisteredClasses; std::set<std::string> myRegisteredClasses;
JNIEnv *myEnv;
mutable jobject mySystemErr;
mutable jclass myPrintStreamClass;
}; };
#endif /* __ZLLOGGER_H__ */ #endif /* __ZLLOGGER_H__ */