diff options
Diffstat (limited to 'akono/src/main')
-rw-r--r-- | akono/src/main/cpp/akono-jni.cpp | 40 | ||||
-rw-r--r-- | akono/src/main/java/akono/AkonoJni.kt | 11 | ||||
-rw-r--r-- | akono/src/main/java/akono/Library.kt | 10 |
3 files changed, 41 insertions, 20 deletions
diff --git a/akono/src/main/cpp/akono-jni.cpp b/akono/src/main/cpp/akono-jni.cpp index 804a364a..0480eea5 100644 --- a/akono/src/main/cpp/akono-jni.cpp +++ b/akono/src/main/cpp/akono-jni.cpp @@ -132,8 +132,9 @@ static const char *main_code = "global.__akono_run = (x) => {" " if (res !== false) return res;" " const args = JSON.stringify({ request, paths});" " const loadResult = JSON.parse(global.__akono_loadModule(args));" - " console.log('got loadModule result', loadResult);" + " console.log('got loadModule result');" " if (!loadResult) return false;" + " console.log('loadModule path is', loadResult.path);" " mod._akonoMods[loadResult.path] = loadResult;" " console.log('returning path', loadResult.path);" " return loadResult.path;" @@ -151,13 +152,34 @@ static const char *main_code = "global.__akono_run = (x) => {" " console.log('handling js extension', [module, filename]);" " if (mod._akonoMods.hasOwnProperty(filename)) {" " const akmod = mod._akonoMods[filename];" - " console.log('found mod', akmod);" + " console.log('found mod');" " const content = akmod.content;" - " return module._compile(stripBOM(content), filename);" + " module._compile(stripBOM(content), filename);" + " return;" " }" " console.log('falling back');" " return mod._saved_js_extension(module, filename);" - "};"; + "};" + "" + "mod._saved_json_extension = mod._extensions[\".json\"];" + "mod._extensions[\".json\"] = (module, filename) => {" + " console.log('handling json extension', [module, filename]);" + " if (mod._akonoMods.hasOwnProperty(filename)) {" + " const akmod = mod._akonoMods[filename];" + " console.log('found mod');" + " const content = akmod.content;" + " try {" + " module.exports = JSON.parse(stripBOM(content));" + " return;" + " } catch (err) {" + " err.message = filename + ': ' + err.message;" + " throw err;" + " }" + " }" + " console.log('falling back');" + " return mod._saved_json_extension(module, filename);" + "};" + ""; class NativeAkonoInstance { @@ -223,7 +245,7 @@ public: // Arguments for the script run by node std::vector<const char *> nodeExecArgv{}; - mylog("entering global scopt"); + mylog("entering global scope"); v8::Context::Scope context_scope(globalContext.Get(isolate)); @@ -283,6 +305,10 @@ public: * @param env JNI env of the thread we're running in. */ void runNode() { + v8::Isolate::Scope isolate_scope(isolate); + v8::HandleScope handle_scope(isolate); + v8::Local<v8::Context> context = globalContext.Get(isolate); + v8::Context::Scope context_scope(context); this->breakRequested = false; while (1) { uv_run(uv_default_loop(), UV_RUN_ONCE); @@ -476,8 +502,6 @@ static void loadModuleCallback(const v8::FunctionCallbackInfo<v8::Value> &args) JStringValue resultStringValue(env, jresult); - printf("before creating string, res %s\n", *resultStringValue); - // Create a string containing the JavaScript source code. v8::Local<v8::String> rs = v8::String::NewFromUtf8(isolate, *resultStringValue, @@ -532,8 +556,6 @@ static void getDataCallback(const v8::FunctionCallbackInfo<v8::Value> &args) { JStringValue resultStringValue(env, jresult); - printf("before creating string, res %s\n", *resultStringValue); - // Create a string containing the JavaScript source code. v8::Local<v8::String> rs = v8::String::NewFromUtf8(isolate, *resultStringValue, diff --git a/akono/src/main/java/akono/AkonoJni.kt b/akono/src/main/java/akono/AkonoJni.kt index 4a89a3f6..b3636031 100644 --- a/akono/src/main/java/akono/AkonoJni.kt +++ b/akono/src/main/java/akono/AkonoJni.kt @@ -67,9 +67,18 @@ class AkonoJni(vararg nodeArgv: String) { val loadInfo = JSONObject(loadInfoStr) val request: String = loadInfo.getString("request") Log.i("myapp", "request is $request") + val paths = ArrayList<String>() + val pathsJson = loadInfo.getJSONArray("paths") + for (i in 0 until pathsJson.length()) { + val path = pathsJson.getString(i) + if (path.startsWith("/vmodroot/")) { + paths.add(path) + } + } + paths.add("/vmodroot") val handler = loadModuleHandler if (handler != null) { - val modResult = handler.loadModule(request, arrayOf()) ?: return "null" + val modResult = handler.loadModule(request, paths.toTypedArray()) ?: return "null" val result = JSONObject() result.put("path", modResult.path) result.put("content", modResult.contents) diff --git a/akono/src/main/java/akono/Library.kt b/akono/src/main/java/akono/Library.kt deleted file mode 100644 index 920648fd..00000000 --- a/akono/src/main/java/akono/Library.kt +++ /dev/null @@ -1,10 +0,0 @@ -/* - * This Kotlin source file was generated by the Gradle 'init' task. - */ -package akono - -class Library { - fun someLibraryMethod(): Boolean { - return true - } -} |