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); }
public override unsafe IDictionary <string, global::CZ.Msebera.Android.Httpclient.IHeader> GetChallenges(global::CZ.Msebera.Android.Httpclient.HttpHost p0, global::CZ.Msebera.Android.Httpclient.IHttpResponse p1, global::CZ.Msebera.Android.Httpclient.Protocol.IHttpContext p2) { if (id_getChallenges_Lcz_msebera_android_httpclient_HttpHost_Lcz_msebera_android_httpclient_HttpResponse_Lcz_msebera_android_httpclient_protocol_HttpContext_ == IntPtr.Zero) { id_getChallenges_Lcz_msebera_android_httpclient_HttpHost_Lcz_msebera_android_httpclient_HttpResponse_Lcz_msebera_android_httpclient_protocol_HttpContext_ = JNIEnv.GetMethodID(class_ref, "getChallenges", "(Lcz/msebera/android/httpclient/HttpHost;Lcz/msebera/android/httpclient/HttpResponse;Lcz/msebera/android/httpclient/protocol/HttpContext;)Ljava/util/Map;"); } try { JValue *__args = stackalloc JValue[3]; __args[0] = new JValue(p0); __args[1] = new JValue(p1); __args[2] = new JValue(p2); IDictionary <string, global::CZ.Msebera.Android.Httpclient.IHeader> __ret; if (((object)this).GetType() == ThresholdType) { __ret = (IDictionary <string, global::CZ.Msebera.Android.Httpclient.IHeader>)JavaDictionary.FromJniHandle(JNIEnv.CallObjectMethod(Handle, id_getChallenges_Lcz_msebera_android_httpclient_HttpHost_Lcz_msebera_android_httpclient_HttpResponse_Lcz_msebera_android_httpclient_protocol_HttpContext_, __args), JniHandleOwnership.TransferLocalRef); } else { __ret = (IDictionary <string, global::CZ.Msebera.Android.Httpclient.IHeader>)JavaDictionary.FromJniHandle(JNIEnv.CallNonvirtualObjectMethod(Handle, ThresholdClass, JNIEnv.GetMethodID(ThresholdClass, "getChallenges", "(Lcz/msebera/android/httpclient/HttpHost;Lcz/msebera/android/httpclient/HttpResponse;Lcz/msebera/android/httpclient/protocol/HttpContext;)Ljava/util/Map;"), __args), JniHandleOwnership.TransferLocalRef); } return(__ret); } finally { } }