예제 #1
0
            public override global::Java.Lang.Object Read(global::Com.Sinch.Gson.Stream.JsonReader p0)
            {
                var localRef = JavaCollection.ToLocalJniHandle(ReadCollection(p0));

                try
                {
                    return(new Java.Lang.Object(localRef, JniHandleOwnership.TransferLocalRef));
                }
                finally
                {
                    JNIEnv.DeleteLocalRef(localRef);
                }
            }
예제 #2
0
        static Func <IntPtr, JniHandleOwnership, object> GetJniHandleConverter(Type target)
        {
            if (target == null)
            {
                return(null);
            }

            Func <IntPtr, JniHandleOwnership, object> converter;

            if (JniHandleConverters.TryGetValue(target, out converter))
            {
                return(converter);
            }
            if (target.IsArray)
            {
                return((h, t) => JNIEnv.GetArray(h, t, target.GetElementType()));
            }
            if (target.IsGenericType && target.GetGenericTypeDefinition() == typeof(IDictionary <,>))
            {
                Type t = typeof(JavaDictionary <,>).MakeGenericType(target.GetGenericArguments());
                return(GetJniHandleConverterForType(t));
            }
            if (typeof(IDictionary).IsAssignableFrom(target))
            {
                return((h, t) => JavaDictionary.FromJniHandle(h, t));
            }
            if (target.IsGenericType && target.GetGenericTypeDefinition() == typeof(IList <>))
            {
                Type t = typeof(JavaList <>).MakeGenericType(target.GetGenericArguments());
                return(GetJniHandleConverterForType(t));
            }
            if (typeof(IList).IsAssignableFrom(target))
            {
                return((h, t) => JavaList.FromJniHandle(h, t));
            }
            if (target.IsGenericType && target.GetGenericTypeDefinition() == typeof(ICollection <>))
            {
                Type t = typeof(JavaCollection <>).MakeGenericType(target.GetGenericArguments());
                return(GetJniHandleConverterForType(t));
            }
            if (typeof(ICollection).IsAssignableFrom(target))
            {
                return((h, t) => JavaCollection.FromJniHandle(h, t));
            }

            return(null);
        }
예제 #3
0
            public override void OnSuccess(Java.Lang.Object jObject)
            {
                s_receipts.Clear();
                JavaCollection <Receipt> receipts = jObject.JavaCast <JavaCollection <Receipt> > ();

                if (null == receipts)
                {
                    m_debugText = string.Format("Receipts are null!");
                }
                else
                {
                    foreach (Receipt receipt in receipts)
                    {
                        s_receipts.Add(receipt);
                    }
                    m_debugText = string.Format("Request Receipts: OnSuccess Count=" + s_receipts.Count);
                    Log.Info(TAG, "OnSuccess");
                }
            }
예제 #4
0
        public void CopyTo()
        {
            using (var al = new Java.Util.ArrayList()) {
                al.Add(1);
                al.Add(2);
                al.Add(3);

                using (var c = new JavaCollection(al.Handle, JniHandleOwnership.DoNotTransfer)) {
                    var to = new int[3];
                    c.CopyTo(to, 0);
                    Assert.IsTrue(new[] { 1, 2, 3 }.SequenceEqual(to));
                }

                using (var c = new JavaCollection <int> (al.Handle, JniHandleOwnership.DoNotTransfer)) {
                    var to = new int[3];
                    c.CopyTo(to, 0);
                    Assert.IsTrue(new[] { 1, 2, 3 }.SequenceEqual(to));
                }
            }
        }
예제 #5
0
 public static JavaCollection CopyOf(JavaCollection repositoryEntriesAll)
 {
     throw new System.NotImplementedException();
 }
예제 #6
0
 public void RemoveAll(JavaCollection var1)
 {
     Utils.Edge.Diagnostic.Internal.NotImplemented();
 }
예제 #7
0
 public void AddAll(JavaCollection other)
 {
     Utils.Edge.Diagnostic.Internal.NotImplemented();
 }
예제 #8
0
        public void Conversions()
        {
            var entries = new [] {
                new { Key = "b", Value = (object)(byte)0x01 },
                new { Key = "c", Value = (object)'c' },
                new { Key = "d", Value = (object)1.0 },
                new { Key = "f", Value = (object)2.0f },
                new { Key = "i", Value = (object)3 },
                new { Key = "j", Value = (object)4L },
                new { Key = "s", Value = (object)(short)5 },
                new { Key = "z", Value = (object)false },
                new { Key = "_", Value = (object)"string" },
                new { Key = "nil", Value = (object)null },
                new { Key = "jlb", Value = (object)new Java.Lang.Byte(10) },
                new { Key = "jlc", Value = (object)new Java.Lang.Character('d') },
                new { Key = "jld", Value = (object)new Java.Lang.Double(12.01) },
                new { Key = "jlf", Value = (object)new Java.Lang.Float(13.02f) },
                new { Key = "jli", Value = (object)new Java.Lang.Integer(14) },
                new { Key = "jlj", Value = (object)new Java.Lang.Long(15L) },
                new { Key = "jls", Value = (object)new Java.Lang.Short(16) },
                new { Key = "jlz", Value = (object)new Java.Lang.Boolean(true) },
                new { Key = "jl_", Value = (object)new Java.Lang.String("JavaString") },
                new { Key = "njo", Value = (object)new NonJavaObject() },
                new { Key = "jo", Value = (object)new MyIntent() },
            };
            Action <object, object, string> compare = (e, a, m) => {
                if (a != null)
                {
                    Assert.AreEqual(e.GetType(), a.GetType(), m);
                }
                Assert.IsTrue(object.Equals(e, a), m);
            };

            using (var d = new JavaDictionary <string, object>()) {
                foreach (var e in entries)
                {
                    d.Add(e.Key, e.Value);
                }
                foreach (var e in entries)
                {
                    object v;
                    Assert.IsTrue(d.TryGetValue(e.Key, out v), "JavaDictionary<string, object>.TryGetValue: " + e.Key);
                    compare(e.Value, v, "JavaDictionary<string, object>: " + e.Key);
                }
            }

            using (var d = new JavaDictionary()) {
                foreach (var e in entries)
                {
                    d.Add(e.Key, e.Value);
                }
                foreach (var e in entries)
                {
                    object v = d [e.Key];
                    if (v == null && e.Value != null)
                    {
                        Assert.Fail("JavaDictionary.this[] returned unexpected value.");
                    }
                    compare(e.Value, v, "JavaDictionary: " + e.Key);
                }
            }

            using (var l = new JavaList <object> (entries.Select(e => e.Value))) {
                for (int i = 0; i < entries.Length; ++i)
                {
                    compare(entries [i].Value, l [i], "JavaList<object>: " + entries [i].Key);
                }
            }

            using (var l = new JavaList(entries.Select(e => e.Value))) {
                for (int i = 0; i < entries.Length; ++i)
                {
                    compare(entries [i].Value, l [i], "JavaList: " + entries [i].Key);
                }
            }

            do
            {
                var c = JavaCollection <object> .FromJniHandle(
                    JavaCollection <object> .ToLocalJniHandle(entries.Select(e => e.Value).ToArray()),
                    JniHandleOwnership.TransferLocalRef);

                int i = 0;
                foreach (object v in c)
                {
                    compare(entries [i].Value, v, "JavaCollection<object> through lref: " + entries [i].Key);
                    i++;
                }
                ((IDisposable)c).Dispose();
            } while (false);

            do
            {
                var c = JavaCollection.FromJniHandle(
                    JavaCollection.ToLocalJniHandle(entries.Select(e => e.Value).ToArray()),
                    JniHandleOwnership.TransferLocalRef);
                int i = 0;
                foreach (object v in c)
                {
                    compare(entries [i].Value, v, "JavaCollection through lref: " + entries [i].Key);
                    i++;
                }
                ((IDisposable)c).Dispose();
            } while (false);
        }