misc/vim: inform the user when no results are found
[nit.git] / lib / android / dalvik.nit
index a795154..48603dc 100644 (file)
 # Java related services specific to Android and its Dalvik VM
 module dalvik
 
-import native_app_glue
+import activities
+
+redef class App
+       # The main Java Activity of this application
+       fun native_activity: NativeActivity is abstract
+end
 
 extern class JavaClassLoader in "Java" `{java.lang.ClassLoader`}
        super JavaObject
 end
 
 redef class Sys
-       # Get the running JVM
-       redef fun create_default_jvm
-       do
-               var jvm = app.native_app_glue.ndk_native_activity.vm
-               var jni_env = jvm.attach_current_thread
-               if jni_env.address_is_null then jni_env = jvm.env
+       # We cannot create a JVM on Android
+       #
+       # This method is not reachable on this platform anyway.
+       # `Sys::jvm` is implemented by the main activity modules.
+       redef fun create_default_jvm do abort
 
-               self.jvm = jvm
-               self.jni_env = jni_env
-       end
+       redef fun jni_env do return jvm.attach_current_thread
 
        private var class_loader: nullable JavaObject = null
        private var class_loader_method: nullable JMethodID = null
@@ -41,7 +43,7 @@ redef class Sys
        do
                var class_loader = self.class_loader
                if class_loader == null then
-                       find_class_loader(app.native_app_glue.ndk_native_activity.java_native_activity)
+                       find_class_loader app.native_activity
                        class_loader = self.class_loader
                        assert class_loader != null
                end
@@ -58,14 +60,14 @@ redef class Sys
                // Retrieve main activity
                jclass class_activity = (*env)->GetObjectClass(env, native_activity);
                if (class_activity == NULL) {
-                       __android_log_print(ANDROID_LOG_ERROR, "Nit", "retreiving activity class");
+                       __android_log_print(ANDROID_LOG_ERROR, "Nit", "Failed retrieving activity class");
                        (*env)->ExceptionDescribe(env);
                        exit(1);
                }
 
                jmethodID class_activity_getClassLoader = (*env)->GetMethodID(env, class_activity, "getClassLoader", "()Ljava/lang/ClassLoader;");
                if (class_activity_getClassLoader == NULL) {
-                       __android_log_print(ANDROID_LOG_ERROR, "Nit", "retreiving 'getClassLoader' method");
+                       __android_log_print(ANDROID_LOG_ERROR, "Nit", "Failed retrieving 'getClassLoader' method");
                        (*env)->ExceptionDescribe(env);
                        exit(1);
                }
@@ -73,14 +75,14 @@ redef class Sys
                // Call activity.getClassLoader
                jobject instance_class_loader = (*env)->CallObjectMethod(env, native_activity, class_activity_getClassLoader);
                if (instance_class_loader == NULL) {
-                       __android_log_print(ANDROID_LOG_ERROR, "Nit", "retreiving class loader instance");
+                       __android_log_print(ANDROID_LOG_ERROR, "Nit", "Failed retrieving class loader instance");
                        (*env)->ExceptionDescribe(env);
                        exit(1);
                }
 
                jclass class_class_loader = (*env)->GetObjectClass(env, instance_class_loader);
                if (class_class_loader == NULL) {
-                       __android_log_print(ANDROID_LOG_ERROR, "Nit", "retreiving class of class loader");
+                       __android_log_print(ANDROID_LOG_ERROR, "Nit", "Failed retrieving class of class loader");
                        (*env)->ExceptionDescribe(env);
                        exit(1);
                }
@@ -88,7 +90,7 @@ redef class Sys
                // Get the method ClassLoader.findClass
                jmethodID class_class_loader_findClass = (*env)->GetMethodID(env, class_class_loader, "findClass", "(Ljava/lang/String;)Ljava/lang/Class;");
                if (class_class_loader_findClass == NULL) {
-                       __android_log_print(ANDROID_LOG_ERROR, "Nit", "retreiving 'findClass' method");
+                       __android_log_print(ANDROID_LOG_ERROR, "Nit", "Failed retrieving 'findClass' method");
                        (*env)->ExceptionDescribe(env);
                        exit(1);
                }
@@ -109,7 +111,7 @@ redef class Sys
 
                jclass java_class = (*env)->CallObjectMethod(env, instance_class_loader, class_loader_findClass, class_name);
                if (java_class == NULL) {
-                       __android_log_print(ANDROID_LOG_ERROR, "Nit", "loading targetted class");
+                       __android_log_print(ANDROID_LOG_ERROR, "Nit", "Failed loading targeted class");
                        (*env)->ExceptionDescribe(env);
                        exit(1);
                }