Fix JNI android integration

This commit is contained in:
mhutti1 2017-10-01 21:03:50 +01:00 committed by Matthieu Gautier
parent d2f7503cfa
commit 520c1edf31
4 changed files with 28 additions and 24 deletions

View File

@ -21,6 +21,7 @@
#include <zim/file.h> #include <zim/file.h>
#include "org_kiwix_kiwixlib_JNIKiwixSearcher.h" #include "org_kiwix_kiwixlib_JNIKiwixSearcher.h"
#include "org_kiwix_kiwixlib_JNIKiwixSearcher_Result.h"
#include "reader.h" #include "reader.h"
#include "searcher.h" #include "searcher.h"
@ -29,6 +30,7 @@
#define SEARCHER (Handle<kiwix::Searcher>::getHandle(env, obj)) #define SEARCHER (Handle<kiwix::Searcher>::getHandle(env, obj))
#define RESULT (Handle<kiwix::Result>::getHandle(env, obj)) #define RESULT (Handle<kiwix::Result>::getHandle(env, obj))
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_org_kiwix_kiwixlib_JNIKiwixSearcher_dispose(JNIEnv* env, jobject obj) Java_org_kiwix_kiwixlib_JNIKiwixSearcher_dispose(JNIEnv* env, jobject obj)
{ {
@ -37,18 +39,19 @@ Java_org_kiwix_kiwixlib_JNIKiwixSearcher_dispose(JNIEnv* env, jobject obj)
/* Kiwix Reader JNI functions */ /* Kiwix Reader JNI functions */
JNIEXPORT jlong JNICALL JNIEXPORT jlong JNICALL
Java_org_kiwix_kiwixlib_JNIKiwixSearcher_get_nativeHandle(JNIEnv* env, Java_org_kiwix_kiwixlib_JNIKiwixSearcher_getNativeHandle(JNIEnv* env,
jobject obj) jobject obj)
{ {
kiwix::Searcher* searcher = new kiwix::Searcher("", nullptr); kiwix::Searcher* searcher = new kiwix::Searcher();
return reinterpret_cast<jlong>(new Handle<kiwix::Searcher>(searcher)); return reinterpret_cast<jlong>(new Handle<kiwix::Searcher>(searcher));
} }
/* Kiwix library functions */ /* Kiwix library functions */
JNIEXPORT void JNICALL Java_org_kiwix_kiwixlib_JNIKiwixSearcher__add_reader( JNIEXPORT void JNICALL Java_org_kiwix_kiwixlib_JNIKiwixSearcher_addReader(
JNIEnv* env, jobject obj, jobject reader) JNIEnv* env, jobject obj, jobject reader)
{ {
auto searcher = SEARCHER; auto searcher = SEARCHER;
searcher->add_reader(*(Handle<kiwix::Reader>::getHandle(env, reader)), ""); searcher->add_reader(*(Handle<kiwix::Reader>::getHandle(env, reader)), "");
} }
@ -62,7 +65,7 @@ JNIEXPORT void JNICALL Java_org_kiwix_kiwixlib_JNIKiwixSearcher_search(
} }
JNIEXPORT jobject JNICALL JNIEXPORT jobject JNICALL
Java_org_kiwix_kiwixlib_JNIKiwixSearcher_get_next_result(JNIEnv* env, Java_org_kiwix_kiwixlib_JNIKiwixSearcher_getNextResult(JNIEnv* env,
jobject obj) jobject obj)
{ {
jobject result = nullptr; jobject result = nullptr;
@ -70,22 +73,22 @@ Java_org_kiwix_kiwixlib_JNIKiwixSearcher_get_next_result(JNIEnv* env,
kiwix::Result* cresult = SEARCHER->getNextResult(); kiwix::Result* cresult = SEARCHER->getNextResult();
if (cresult != nullptr) { if (cresult != nullptr) {
jclass resultclass jclass resultclass
= env->FindClass("org/kiwix/kiwixlib/JNIKiwixSearcher/Result"); = env->FindClass("org/kiwix/kiwixlib/JNIKiwixSearcher$Result");
jmethodID ctor = env->GetMethodID( jmethodID ctor = env->GetMethodID(
resultclass, "<init>", "(JLorg/kiwix/kiwixlib/JNIKiwixSearcher;)V"); resultclass, "<init>", "(Lorg/kiwix/kiwixlib/JNIKiwixSearcher;JLorg/kiwix/kiwixlib/JNIKiwixSearcher;)V");
result = env->NewObject(resultclass, ctor, cresult, obj); result = env->NewObject(resultclass, ctor, obj, reinterpret_cast<jlong>(new Handle<kiwix::Result>(cresult)), obj);
} }
return result; return result;
} }
JNIEXPORT void JNICALL Java_org_kiwix_kiwixlib_JNIKiwixSearcher_Result_dispose( JNIEXPORT void JNICALL Java_org_kiwix_kiwixlib_JNIKiwixSearcher_00024Result_dispose(
JNIEnv* env, jobject obj) JNIEnv* env, jobject obj)
{ {
Handle<kiwix::Result>::dispose(env, obj); Handle<kiwix::Result>::dispose(env, obj);
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_org_kiwix_kiwixlib_JNIKiwixSearcher_Result_get_url(JNIEnv* env, Java_org_kiwix_kiwixlib_JNIKiwixSearcher_00024Result_getUrl(JNIEnv* env,
jobject obj) jobject obj)
{ {
try { try {
@ -96,7 +99,7 @@ Java_org_kiwix_kiwixlib_JNIKiwixSearcher_Result_get_url(JNIEnv* env,
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_org_kiwix_kiwixlib_JNIKiwixSearcher_Result_get_title(JNIEnv* env, Java_org_kiwix_kiwixlib_JNIKiwixSearcher_00024Result_getTitle(JNIEnv* env,
jobject obj) jobject obj)
{ {
try { try {
@ -107,14 +110,14 @@ Java_org_kiwix_kiwixlib_JNIKiwixSearcher_Result_get_title(JNIEnv* env,
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_org_kiwix_kiwixlib_JNIKiwixSearcher_Result_get_snippet(JNIEnv* env, Java_org_kiwix_kiwixlib_JNIKiwixSearcher_00024Result_getSnippet(JNIEnv* env,
jobject obj) jobject obj)
{ {
return c2jni(RESULT->get_snippet(), env); return c2jni(RESULT->get_snippet(), env);
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_org_kiwix_kiwixlib_JNIKiwixSearcher_Result_get_content(JNIEnv* env, Java_org_kiwix_kiwixlib_JNIKiwixSearcher_00024Result_getContent(JNIEnv* env,
jobject obj) jobject obj)
{ {
return c2jni(RESULT->get_content(), env); return c2jni(RESULT->get_content(), env);

View File

@ -10,7 +10,8 @@ kiwix_jni = custom_target('jni',
'org/kiwix/kiwixlib/JNIKiwixBool.java'], 'org/kiwix/kiwixlib/JNIKiwixBool.java'],
output: ['org_kiwix_kiwixlib_JNIKiwix.h', output: ['org_kiwix_kiwixlib_JNIKiwix.h',
'org_kiwix_kiwixlib_JNIKiwixReader.h', 'org_kiwix_kiwixlib_JNIKiwixReader.h',
'org_kiwix_kiwixlib_JNIKiwixSearcher.h'], 'org_kiwix_kiwixlib_JNIKiwixSearcher.h',
'org_kiwix_kiwixlib_JNIKiwixSearcher_Result.h'],
command:[jni_generator, '@INPUT@'] command:[jni_generator, '@INPUT@']
) )

View File

@ -70,7 +70,7 @@ public class JNIKiwixReader
public JNIKiwixSearcher search(String query, int count) public JNIKiwixSearcher search(String query, int count)
{ {
JNIKiwixSearcher searcher = new JNIKiwixSearcher(); JNIKiwixSearcher searcher = new JNIKiwixSearcher();
searcher.add_reader(this); searcher.addKiwixReader(this);
searcher.search(query, count); searcher.search(query, count);
return searcher; return searcher;
} }

View File

@ -35,32 +35,32 @@ public class JNIKiwixSearcher
nativeHandle = handle; nativeHandle = handle;
searcher = _searcher; searcher = _searcher;
} }
public native String get_url(); public native String getUrl();
public native String get_title(); public native String getTitle();
public native String get_content(); public native String getContent();
public native void dispose(); public native void dispose();
} }
public JNIKiwixSearcher() public JNIKiwixSearcher()
{ {
nativeHandle = get_nativeHandle(); nativeHandle = getNativeHandle();
usedReaders = new Vector(); usedReaders = new Vector();
} }
public native void dispose(); public native void dispose();
private native long get_nativeHandle(); private native long getNativeHandle();
private long nativeHandle; private long nativeHandle;
private Vector usedReaders; private Vector usedReaders;
public native void _add_reader(JNIKiwixReader reader); public native void addReader(JNIKiwixReader reader);
public void add_reader(JNIKiwixReader reader) public void addKiwixReader(JNIKiwixReader reader)
{ {
_add_reader(reader); addReader(reader);
usedReaders.addElement(reader); usedReaders.addElement(reader);
}; };
public native void search(String query, int count); public native void search(String query, int count);
public native Result get_next_result(); public native Result getNextResult();
public native boolean has_more_result(); public native boolean hasMoreResult();
} }