Merge: Misc AST
[nit.git] / lib / android / bundle / bundle.nit
index 5a083d2..3678cbc 100644 (file)
 # Android API for various data exchange purposes
 module bundle
 
-import native_app_glue
 import serialization
 import json_serialization
 
+import platform
+import activities
+
 in "Java" `{
        import android.os.Bundle;
        import android.app.Activity;
@@ -32,6 +34,8 @@ in "Java" `{
 extern class NativeBundle in "Java" `{ android.os.Bundle `}
        super JavaObject
 
+       new in "Java" `{ return new Bundle(); `}
+
        fun clone: JavaObject in "Java" `{ return recv.clone(); `}
        fun size: Int in "Java" `{ return recv.size(); `}
        fun is_empty: Bool in "Java" `{ return recv.isEmpty(); `}
@@ -421,26 +425,10 @@ end
 
 # A class mapping `String` keys to various value types
 class Bundle
-       private var native_bundle: NativeBundle
-       private var context: NativeActivity
-
-       init(app: App)
-       do
-               self.context = app.native_activity
-               setup
-       end
+       private var native_bundle: NativeBundle = new NativeBundle is lazy
 
-       private fun set_vars(native_bundle: NativeBundle)
-       do
-               self.native_bundle = native_bundle.new_global_ref
-       end
-
-       private fun setup import context, set_vars in "Java" `{
-               Activity context = (Activity) Bundle_context(recv);
-               Bundle bundle = new Bundle();
-               
-               Bundle_set_vars(recv, bundle);
-       `}
+       # Get a new `Bundle` wrapping `native_bundle`
+       init from(native_bundle: NativeBundle) do self.native_bundle = native_bundle
 
        # Returns `true` if the Bundle contains this key
        fun has(key: String): Bool
@@ -665,7 +653,6 @@ class Bundle
        # Returns the `null` if none or if it's the wrong value type
        fun array_of_string(key: String): nullable Array[String]
        do
-               var string_array = new Array[String]
                sys.jni_env.push_local_frame(1)
 
                var return_value = native_bundle.get_string_array(key.to_java_string)
@@ -685,7 +672,7 @@ redef class Serializable
        protected fun add_to_bundle(bundle: NativeBundle, key: JavaString)
        do
                sys.jni_env.push_local_frame(1)
-               var serialized_string = new StringOStream
+               var serialized_string = new StringWriter
                var serializer = new JsonSerializer(serialized_string)
                serializer.serialize(self)
 
@@ -753,7 +740,7 @@ redef class Array[E]
                        var java_string_array = new Array[JavaString]
 
                        for element in self do
-                       var serialized_string = new StringOStream
+                       var serialized_string = new StringWriter
                                var serializer = new JsonSerializer(serialized_string)
                                serializer.serialize(element)
                                java_string_array.add(serialized_string.to_s.to_java_string)