diff --git a/src/Java.Interop/Java.Interop/JniEnvironment.cs b/src/Java.Interop/Java.Interop/JniEnvironment.cs index 2b1bd5cdd..4f70963b4 100644 --- a/src/Java.Interop/Java.Interop/JniEnvironment.cs +++ b/src/Java.Interop/Java.Interop/JniEnvironment.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; using System.Diagnostics; +using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; @@ -50,6 +51,50 @@ public static bool WithinNewObjectScope { internal set {CurrentInfo.WithinNewObjectScope = value;} } + [global::System.Diagnostics.CodeAnalysis.SuppressMessage ( + "Design", + "CA1031:Do not catch general exception types", + Justification = "Exceptions cannot cross a JNI boundary.")] + public static bool BeginMarshalMethod (IntPtr jnienv, out JniTransition transition, [NotNullWhen (true)] out JniRuntime? runtime) + { + runtime = null; + Exception? ex = null; + try { + runtime = Info.Value?.Runtime; + } + catch (Exception e) { + ex = e; + } + if (runtime == null || ex != null) { + transition = default; + runtime = null; + Console.Error.WriteLine ("JNI Environment Information is not available on this thread."); + if (ex != null) { + Console.Error.WriteLine (ex); + } + return false; + } + + try { + runtime.OnEnterMarshalMethod (); + transition = new JniTransition (jnienv); + } + catch (Exception e) { + runtime = null; + transition = default; + + Console.Error.WriteLine ($"OnEnterMarshalMethod failed: {e}"); + return false; + } + + return true; + } + + public static void EndMarshalMethod (ref JniTransition transition) + { + transition.Dispose (); + } + internal static void SetEnvironmentPointer (IntPtr environmentPointer) { CurrentInfo.EnvironmentPointer = environmentPointer; diff --git a/src/Java.Interop/Java.Interop/JniRuntime.cs b/src/Java.Interop/Java.Interop/JniRuntime.cs index 11c715410..0d004da18 100644 --- a/src/Java.Interop/Java.Interop/JniRuntime.cs +++ b/src/Java.Interop/Java.Interop/JniRuntime.cs @@ -437,6 +437,19 @@ public virtual bool ExceptionShouldTransitionToJni (Exception e) partial class JniRuntime { + public virtual void OnEnterMarshalMethod () + { + ValueManager.WaitForGCBridgeProcessing (); + } + + public virtual void OnUserUnhandledException (ref JniTransition transition, Exception e) + { + transition.SetPendingException (e); + + // TODO: Enable when we move to 'net9.0' + //Debugger.BreakForUserUnhandledException (e); + } + public virtual void RaisePendingException (Exception pendingException) { JniEnvironment.Exceptions.Throw (pendingException); diff --git a/src/Java.Interop/PublicAPI.Unshipped.txt b/src/Java.Interop/PublicAPI.Unshipped.txt index 7dc5c5811..49744f76b 100644 --- a/src/Java.Interop/PublicAPI.Unshipped.txt +++ b/src/Java.Interop/PublicAPI.Unshipped.txt @@ -1 +1,5 @@ #nullable enable +static Java.Interop.JniEnvironment.BeginMarshalMethod(nint jnienv, out Java.Interop.JniTransition transition, out Java.Interop.JniRuntime? runtime) -> bool +static Java.Interop.JniEnvironment.EndMarshalMethod(ref Java.Interop.JniTransition transition) -> void +virtual Java.Interop.JniRuntime.OnEnterMarshalMethod() -> void +virtual Java.Interop.JniRuntime.OnUserUnhandledException(ref Java.Interop.JniTransition transition, System.Exception! e) -> void diff --git a/tests/generator-Tests/SupportFiles/DebuggerDisableUserUnhandledExceptionsAttribute.cs b/tests/generator-Tests/SupportFiles/DebuggerDisableUserUnhandledExceptionsAttribute.cs new file mode 100644 index 000000000..079616b91 --- /dev/null +++ b/tests/generator-Tests/SupportFiles/DebuggerDisableUserUnhandledExceptionsAttribute.cs @@ -0,0 +1,13 @@ +#if !NET9_0_OR_GREATER + +using System; + +namespace System.Diagnostics +{ + // This attribute was added in .NET 9, and we may not be targeting .NET 9 yet. + public class DebuggerDisableUserUnhandledExceptionsAttribute : Attribute + { + } +} + +#endif // !NET9_0_OR_GREATER diff --git a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/Common/WriteDuplicateInterfaceEventArgs.txt b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/Common/WriteDuplicateInterfaceEventArgs.txt index ee71f4428..1a00e3a9e 100644 --- a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/Common/WriteDuplicateInterfaceEventArgs.txt +++ b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/Common/WriteDuplicateInterfaceEventArgs.txt @@ -70,15 +70,24 @@ internal partial class AnimatorListenerInvoker : global::Java.Lang.Object, Anima #pragma warning disable 0169 static Delegate GetOnAnimationEnd_IHandler () { - if (cb_OnAnimationEnd_OnAnimationEnd_I_Z == null) - cb_OnAnimationEnd_OnAnimationEnd_I_Z = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPI_Z (n_OnAnimationEnd_I)); - return cb_OnAnimationEnd_OnAnimationEnd_I_Z; + return cb_OnAnimationEnd_OnAnimationEnd_I_Z ??= new _JniMarshal_PPI_Z (n_OnAnimationEnd_I); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static bool n_OnAnimationEnd_I (IntPtr jnienv, IntPtr native__this, int param1) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return __this.OnAnimationEnd (param1); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return __this.OnAnimationEnd (param1); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -96,15 +105,24 @@ internal partial class AnimatorListenerInvoker : global::Java.Lang.Object, Anima #pragma warning disable 0169 static Delegate GetOnAnimationEnd_IIHandler () { - if (cb_OnAnimationEnd_OnAnimationEnd_II_Z == null) - cb_OnAnimationEnd_OnAnimationEnd_II_Z = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPII_Z (n_OnAnimationEnd_II)); - return cb_OnAnimationEnd_OnAnimationEnd_II_Z; + return cb_OnAnimationEnd_OnAnimationEnd_II_Z ??= new _JniMarshal_PPII_Z (n_OnAnimationEnd_II); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static bool n_OnAnimationEnd_II (IntPtr jnienv, IntPtr native__this, int param1, int param2) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return __this.OnAnimationEnd (param1, param2); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return __this.OnAnimationEnd (param1, param2); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/Common/WriteInterfaceRedeclaredDefaultMethod.txt b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/Common/WriteInterfaceRedeclaredDefaultMethod.txt index 67d9e65a3..a0888458a 100644 --- a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/Common/WriteInterfaceRedeclaredDefaultMethod.txt +++ b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/Common/WriteInterfaceRedeclaredDefaultMethod.txt @@ -66,15 +66,23 @@ internal partial class IMyInterface2Invoker : global::Java.Lang.Object, IMyInter #pragma warning disable 0169 static Delegate GetDoSomethingHandler () { - if (cb_DoSomething_DoSomething_V == null) - cb_DoSomething_DoSomething_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_V (n_DoSomething)); - return cb_DoSomething_DoSomething_V; + return cb_DoSomething_DoSomething_V ??= new _JniMarshal_PP_V (n_DoSomething); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_DoSomething (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.DoSomething (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.DoSomething (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1-NRT/WriteClass.txt b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1-NRT/WriteClass.txt index 26dba5fcd..b2eb1827e 100644 --- a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1-NRT/WriteClass.txt +++ b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1-NRT/WriteClass.txt @@ -53,15 +53,24 @@ public partial class MyClass { #pragma warning disable 0169 static Delegate Getget_CountHandler () { - if (cb_get_Count_get_Count_I == null) - cb_get_Count_get_Count_I = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_I (n_get_Count)); - return cb_get_Count_get_Count_I; + return cb_get_Count_get_Count_I ??= new _JniMarshal_PP_I (n_get_Count); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_get_Count (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; - return __this.Count; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; + return __this.Count; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -69,15 +78,23 @@ public partial class MyClass { #pragma warning disable 0169 static Delegate Getset_Count_IHandler () { - if (cb_set_Count_set_Count_I_V == null) - cb_set_Count_set_Count_I_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPI_V (n_set_Count_I)); - return cb_set_Count_set_Count_I_V; + return cb_set_Count_set_Count_I_V ??= new _JniMarshal_PPI_V (n_set_Count_I); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_set_Count_I (IntPtr jnienv, IntPtr native__this, int value) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; - __this.Count = value; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; + __this.Count = value; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -109,15 +126,24 @@ public partial class MyClass { #pragma warning disable 0169 static Delegate Getget_KeyHandler () { - if (cb_get_Key_get_Key_Ljava_lang_String_ == null) - cb_get_Key_get_Key_Ljava_lang_String_ = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_L (n_get_Key)); - return cb_get_Key_get_Key_Ljava_lang_String_; + return cb_get_Key_get_Key_Ljava_lang_String_ ??= new _JniMarshal_PP_L (n_get_Key); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_get_Key (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; - return JNIEnv.NewString (__this.Key); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; + return JNIEnv.NewString (__this.Key); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -125,16 +151,24 @@ public partial class MyClass { #pragma warning disable 0169 static Delegate Getset_Key_Ljava_lang_String_Handler () { - if (cb_set_Key_set_Key_Ljava_lang_String__V == null) - cb_set_Key_set_Key_Ljava_lang_String__V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_V (n_set_Key_Ljava_lang_String_)); - return cb_set_Key_set_Key_Ljava_lang_String__V; + return cb_set_Key_set_Key_Ljava_lang_String__V ??= new _JniMarshal_PPL_V (n_set_Key_Ljava_lang_String_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_set_Key_Ljava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native_value) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; - var value = JNIEnv.GetString (native_value, JniHandleOwnership.DoNotTransfer); - __this.Key = value; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; + var value = JNIEnv.GetString (native_value, JniHandleOwnership.DoNotTransfer); + __this.Key = value; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -192,15 +226,24 @@ public partial class MyClass { #pragma warning disable 0169 static Delegate Getget_AbstractCountHandler () { - if (cb_get_AbstractCount_get_AbstractCount_I == null) - cb_get_AbstractCount_get_AbstractCount_I = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_I (n_get_AbstractCount)); - return cb_get_AbstractCount_get_AbstractCount_I; + return cb_get_AbstractCount_get_AbstractCount_I ??= new _JniMarshal_PP_I (n_get_AbstractCount); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_get_AbstractCount (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; - return __this.AbstractCount; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; + return __this.AbstractCount; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -208,15 +251,23 @@ public partial class MyClass { #pragma warning disable 0169 static Delegate Getset_AbstractCount_IHandler () { - if (cb_set_AbstractCount_set_AbstractCount_I_V == null) - cb_set_AbstractCount_set_AbstractCount_I_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPI_V (n_set_AbstractCount_I)); - return cb_set_AbstractCount_set_AbstractCount_I_V; + return cb_set_AbstractCount_set_AbstractCount_I_V ??= new _JniMarshal_PPI_V (n_set_AbstractCount_I); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_set_AbstractCount_I (IntPtr jnienv, IntPtr native__this, int value) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; - __this.AbstractCount = value; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; + __this.AbstractCount = value; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -234,17 +285,26 @@ public partial class MyClass { #pragma warning disable 0169 static Delegate GetGetCountForKey_Ljava_lang_String_Handler () { - if (cb_GetCountForKey_GetCountForKey_Ljava_lang_String__I == null) - cb_GetCountForKey_GetCountForKey_Ljava_lang_String__I = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_I (n_GetCountForKey_Ljava_lang_String_)); - return cb_GetCountForKey_GetCountForKey_Ljava_lang_String__I; + return cb_GetCountForKey_GetCountForKey_Ljava_lang_String__I ??= new _JniMarshal_PPL_I (n_GetCountForKey_Ljava_lang_String_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_GetCountForKey_Ljava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native_key) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; - var key = JNIEnv.GetString (native_key, JniHandleOwnership.DoNotTransfer); - int __ret = __this.GetCountForKey (key); - return __ret; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; + var key = JNIEnv.GetString (native_key, JniHandleOwnership.DoNotTransfer); + int __ret = __this.GetCountForKey (key); + return __ret; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -268,15 +328,24 @@ public partial class MyClass { #pragma warning disable 0169 static Delegate GetKeyHandler () { - if (cb_Key_Key_Ljava_lang_String_ == null) - cb_Key_Key_Ljava_lang_String_ = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_L (n_Key)); - return cb_Key_Key_Ljava_lang_String_; + return cb_Key_Key_Ljava_lang_String_ ??= new _JniMarshal_PP_L (n_Key); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_Key (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; - return JNIEnv.NewString (__this.Key ()); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; + return JNIEnv.NewString (__this.Key ()); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -307,15 +376,23 @@ public partial class MyClass { #pragma warning disable 0169 static Delegate GetAbstractMethodHandler () { - if (cb_AbstractMethod_AbstractMethod_V == null) - cb_AbstractMethod_AbstractMethod_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_V (n_AbstractMethod)); - return cb_AbstractMethod_AbstractMethod_V; + return cb_AbstractMethod_AbstractMethod_V ??= new _JniMarshal_PP_V (n_AbstractMethod); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_AbstractMethod (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; - __this.AbstractMethod (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; + __this.AbstractMethod (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1-NRT/WriteInterface.txt b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1-NRT/WriteInterface.txt index b5db9ed4f..3bc3a488f 100644 --- a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1-NRT/WriteInterface.txt +++ b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1-NRT/WriteInterface.txt @@ -134,15 +134,24 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf #pragma warning disable 0169 static Delegate Getget_CountHandler () { - if (cb_get_Count_get_Count_I == null) - cb_get_Count_get_Count_I = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_I (n_get_Count)); - return cb_get_Count_get_Count_I; + return cb_get_Count_get_Count_I ??= new _JniMarshal_PP_I (n_get_Count); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_get_Count (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; - return __this.Count; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; + return __this.Count; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -150,15 +159,23 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf #pragma warning disable 0169 static Delegate Getset_Count_IHandler () { - if (cb_set_Count_set_Count_I_V == null) - cb_set_Count_set_Count_I_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPI_V (n_set_Count_I)); - return cb_set_Count_set_Count_I_V; + return cb_set_Count_set_Count_I_V ??= new _JniMarshal_PPI_V (n_set_Count_I); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_set_Count_I (IntPtr jnienv, IntPtr native__this, int value) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; - __this.Count = value; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; + __this.Count = value; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -183,15 +200,24 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf #pragma warning disable 0169 static Delegate Getget_KeyHandler () { - if (cb_get_Key_get_Key_Ljava_lang_String_ == null) - cb_get_Key_get_Key_Ljava_lang_String_ = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_L (n_get_Key)); - return cb_get_Key_get_Key_Ljava_lang_String_; + return cb_get_Key_get_Key_Ljava_lang_String_ ??= new _JniMarshal_PP_L (n_get_Key); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_get_Key (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; - return JNIEnv.NewString (__this.Key); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; + return JNIEnv.NewString (__this.Key); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -199,16 +225,24 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf #pragma warning disable 0169 static Delegate Getset_Key_Ljava_lang_String_Handler () { - if (cb_set_Key_set_Key_Ljava_lang_String__V == null) - cb_set_Key_set_Key_Ljava_lang_String__V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_V (n_set_Key_Ljava_lang_String_)); - return cb_set_Key_set_Key_Ljava_lang_String__V; + return cb_set_Key_set_Key_Ljava_lang_String__V ??= new _JniMarshal_PPL_V (n_set_Key_Ljava_lang_String_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_set_Key_Ljava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native_value) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; - var value = JNIEnv.GetString (native_value, JniHandleOwnership.DoNotTransfer); - __this.Key = value; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; + var value = JNIEnv.GetString (native_value, JniHandleOwnership.DoNotTransfer); + __this.Key = value; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -235,15 +269,24 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf #pragma warning disable 0169 static Delegate Getget_AbstractCountHandler () { - if (cb_get_AbstractCount_get_AbstractCount_I == null) - cb_get_AbstractCount_get_AbstractCount_I = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_I (n_get_AbstractCount)); - return cb_get_AbstractCount_get_AbstractCount_I; + return cb_get_AbstractCount_get_AbstractCount_I ??= new _JniMarshal_PP_I (n_get_AbstractCount); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_get_AbstractCount (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; - return __this.AbstractCount; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; + return __this.AbstractCount; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -251,15 +294,23 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf #pragma warning disable 0169 static Delegate Getset_AbstractCount_IHandler () { - if (cb_set_AbstractCount_set_AbstractCount_I_V == null) - cb_set_AbstractCount_set_AbstractCount_I_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPI_V (n_set_AbstractCount_I)); - return cb_set_AbstractCount_set_AbstractCount_I_V; + return cb_set_AbstractCount_set_AbstractCount_I_V ??= new _JniMarshal_PPI_V (n_set_AbstractCount_I); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_set_AbstractCount_I (IntPtr jnienv, IntPtr native__this, int value) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; - __this.AbstractCount = value; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; + __this.AbstractCount = value; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -284,17 +335,26 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf #pragma warning disable 0169 static Delegate GetGetCountForKey_Ljava_lang_String_Handler () { - if (cb_GetCountForKey_GetCountForKey_Ljava_lang_String__I == null) - cb_GetCountForKey_GetCountForKey_Ljava_lang_String__I = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_I (n_GetCountForKey_Ljava_lang_String_)); - return cb_GetCountForKey_GetCountForKey_Ljava_lang_String__I; + return cb_GetCountForKey_GetCountForKey_Ljava_lang_String__I ??= new _JniMarshal_PPL_I (n_GetCountForKey_Ljava_lang_String_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_GetCountForKey_Ljava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native_key) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; - var key = JNIEnv.GetString (native_key, JniHandleOwnership.DoNotTransfer); - int __ret = __this.GetCountForKey (key); - return __ret; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; + var key = JNIEnv.GetString (native_key, JniHandleOwnership.DoNotTransfer); + int __ret = __this.GetCountForKey (key); + return __ret; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -315,15 +375,24 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf #pragma warning disable 0169 static Delegate GetKeyHandler () { - if (cb_Key_Key_Ljava_lang_String_ == null) - cb_Key_Key_Ljava_lang_String_ = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_L (n_Key)); - return cb_Key_Key_Ljava_lang_String_; + return cb_Key_Key_Ljava_lang_String_ ??= new _JniMarshal_PP_L (n_Key); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_Key (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; - return JNIEnv.NewString (__this.Key ()); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; + return JNIEnv.NewString (__this.Key ()); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -339,15 +408,23 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf #pragma warning disable 0169 static Delegate GetAbstractMethodHandler () { - if (cb_AbstractMethod_AbstractMethod_V == null) - cb_AbstractMethod_AbstractMethod_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_V (n_AbstractMethod)); - return cb_AbstractMethod_AbstractMethod_V; + return cb_AbstractMethod_AbstractMethod_V ??= new _JniMarshal_PP_V (n_AbstractMethod); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_AbstractMethod (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; - __this.AbstractMethod (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; + __this.AbstractMethod (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1-NRT/WriteMethodWithCharSequenceArrays.txt b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1-NRT/WriteMethodWithCharSequenceArrays.txt index 37650f15b..dabc2c6fa 100644 --- a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1-NRT/WriteMethodWithCharSequenceArrays.txt +++ b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1-NRT/WriteMethodWithCharSequenceArrays.txt @@ -33,19 +33,28 @@ public partial class MyClass : Java.Lang.Object { #pragma warning disable 0169 static Delegate GetEcho_arrayLjava_lang_CharSequence_Handler () { - if (cb_echo_Echo_arrayLjava_lang_CharSequence__arrayLjava_lang_CharSequence_ == null) - cb_echo_Echo_arrayLjava_lang_CharSequence__arrayLjava_lang_CharSequence_ = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_L (n_Echo_arrayLjava_lang_CharSequence_)); - return cb_echo_Echo_arrayLjava_lang_CharSequence__arrayLjava_lang_CharSequence_; + return cb_echo_Echo_arrayLjava_lang_CharSequence__arrayLjava_lang_CharSequence_ ??= new _JniMarshal_PPL_L (n_Echo_arrayLjava_lang_CharSequence_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_Echo_arrayLjava_lang_CharSequence_ (IntPtr jnienv, IntPtr native__this, IntPtr native_messages) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; - var messages = (Java.Lang.ICharSequence[]?) JNIEnv.GetArray (native_messages, JniHandleOwnership.DoNotTransfer, typeof (Java.Lang.ICharSequence)); - IntPtr __ret = JNIEnv.NewArray (__this.EchoFormatted (messages)); - if (messages != null) - JNIEnv.CopyArray (messages, native_messages); - return __ret; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!; + var messages = (Java.Lang.ICharSequence[]?) JNIEnv.GetArray (native_messages, JniHandleOwnership.DoNotTransfer, typeof (Java.Lang.ICharSequence)); + IntPtr __ret = JNIEnv.NewArray (__this.EchoFormatted (messages)); + if (messages != null) + JNIEnv.CopyArray (messages, native_messages); + return __ret; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteClass.txt b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteClass.txt index faccd1ed9..890c627d0 100644 --- a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteClass.txt +++ b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteClass.txt @@ -53,15 +53,24 @@ public partial class MyClass { #pragma warning disable 0169 static Delegate Getget_CountHandler () { - if (cb_get_Count_get_Count_I == null) - cb_get_Count_get_Count_I = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_I (n_get_Count)); - return cb_get_Count_get_Count_I; + return cb_get_Count_get_Count_I ??= new _JniMarshal_PP_I (n_get_Count); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_get_Count (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return __this.Count; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return __this.Count; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -69,15 +78,23 @@ public partial class MyClass { #pragma warning disable 0169 static Delegate Getset_Count_IHandler () { - if (cb_set_Count_set_Count_I_V == null) - cb_set_Count_set_Count_I_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPI_V (n_set_Count_I)); - return cb_set_Count_set_Count_I_V; + return cb_set_Count_set_Count_I_V ??= new _JniMarshal_PPI_V (n_set_Count_I); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_set_Count_I (IntPtr jnienv, IntPtr native__this, int value) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.Count = value; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Count = value; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -109,15 +126,24 @@ public partial class MyClass { #pragma warning disable 0169 static Delegate Getget_KeyHandler () { - if (cb_get_Key_get_Key_Ljava_lang_String_ == null) - cb_get_Key_get_Key_Ljava_lang_String_ = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_L (n_get_Key)); - return cb_get_Key_get_Key_Ljava_lang_String_; + return cb_get_Key_get_Key_Ljava_lang_String_ ??= new _JniMarshal_PP_L (n_get_Key); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_get_Key (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return JNIEnv.NewString (__this.Key); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.NewString (__this.Key); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -125,16 +151,24 @@ public partial class MyClass { #pragma warning disable 0169 static Delegate Getset_Key_Ljava_lang_String_Handler () { - if (cb_set_Key_set_Key_Ljava_lang_String__V == null) - cb_set_Key_set_Key_Ljava_lang_String__V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_V (n_set_Key_Ljava_lang_String_)); - return cb_set_Key_set_Key_Ljava_lang_String__V; + return cb_set_Key_set_Key_Ljava_lang_String__V ??= new _JniMarshal_PPL_V (n_set_Key_Ljava_lang_String_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_set_Key_Ljava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native_value) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var value = JNIEnv.GetString (native_value, JniHandleOwnership.DoNotTransfer); - __this.Key = value; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var value = JNIEnv.GetString (native_value, JniHandleOwnership.DoNotTransfer); + __this.Key = value; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -192,15 +226,24 @@ public partial class MyClass { #pragma warning disable 0169 static Delegate Getget_AbstractCountHandler () { - if (cb_get_AbstractCount_get_AbstractCount_I == null) - cb_get_AbstractCount_get_AbstractCount_I = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_I (n_get_AbstractCount)); - return cb_get_AbstractCount_get_AbstractCount_I; + return cb_get_AbstractCount_get_AbstractCount_I ??= new _JniMarshal_PP_I (n_get_AbstractCount); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_get_AbstractCount (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return __this.AbstractCount; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return __this.AbstractCount; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -208,15 +251,23 @@ public partial class MyClass { #pragma warning disable 0169 static Delegate Getset_AbstractCount_IHandler () { - if (cb_set_AbstractCount_set_AbstractCount_I_V == null) - cb_set_AbstractCount_set_AbstractCount_I_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPI_V (n_set_AbstractCount_I)); - return cb_set_AbstractCount_set_AbstractCount_I_V; + return cb_set_AbstractCount_set_AbstractCount_I_V ??= new _JniMarshal_PPI_V (n_set_AbstractCount_I); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_set_AbstractCount_I (IntPtr jnienv, IntPtr native__this, int value) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.AbstractCount = value; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.AbstractCount = value; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -234,17 +285,26 @@ public partial class MyClass { #pragma warning disable 0169 static Delegate GetGetCountForKey_Ljava_lang_String_Handler () { - if (cb_GetCountForKey_GetCountForKey_Ljava_lang_String__I == null) - cb_GetCountForKey_GetCountForKey_Ljava_lang_String__I = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_I (n_GetCountForKey_Ljava_lang_String_)); - return cb_GetCountForKey_GetCountForKey_Ljava_lang_String__I; + return cb_GetCountForKey_GetCountForKey_Ljava_lang_String__I ??= new _JniMarshal_PPL_I (n_GetCountForKey_Ljava_lang_String_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_GetCountForKey_Ljava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native_key) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var key = JNIEnv.GetString (native_key, JniHandleOwnership.DoNotTransfer); - int __ret = __this.GetCountForKey (key); - return __ret; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var key = JNIEnv.GetString (native_key, JniHandleOwnership.DoNotTransfer); + int __ret = __this.GetCountForKey (key); + return __ret; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -268,15 +328,24 @@ public partial class MyClass { #pragma warning disable 0169 static Delegate GetKeyHandler () { - if (cb_Key_Key_Ljava_lang_String_ == null) - cb_Key_Key_Ljava_lang_String_ = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_L (n_Key)); - return cb_Key_Key_Ljava_lang_String_; + return cb_Key_Key_Ljava_lang_String_ ??= new _JniMarshal_PP_L (n_Key); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_Key (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return JNIEnv.NewString (__this.Key ()); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.NewString (__this.Key ()); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -307,15 +376,23 @@ public partial class MyClass { #pragma warning disable 0169 static Delegate GetAbstractMethodHandler () { - if (cb_AbstractMethod_AbstractMethod_V == null) - cb_AbstractMethod_AbstractMethod_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_V (n_AbstractMethod)); - return cb_AbstractMethod_AbstractMethod_V; + return cb_AbstractMethod_AbstractMethod_V ??= new _JniMarshal_PP_V (n_AbstractMethod); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_AbstractMethod (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.AbstractMethod (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.AbstractMethod (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteDefaultInterfaceMethodInvoker.txt b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteDefaultInterfaceMethodInvoker.txt index 5a80ed03b..fce7a3833 100644 --- a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteDefaultInterfaceMethodInvoker.txt +++ b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteDefaultInterfaceMethodInvoker.txt @@ -11,15 +11,23 @@ public partial interface IMyInterface : IJavaObject, IJavaPeerable { #pragma warning disable 0169 private static Delegate GetDoDefaultHandler () { - if (cb_DoDefault_DoDefault_V == null) - cb_DoDefault_DoDefault_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_V (n_DoDefault)); - return cb_DoDefault_DoDefault_V; + return cb_DoDefault_DoDefault_V ??= new _JniMarshal_PP_V (n_DoDefault); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] private static void n_DoDefault (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.DoDefault (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.DoDefault (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -95,15 +103,23 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf #pragma warning disable 0169 static Delegate GetDoDeclarationHandler () { - if (cb_DoDeclaration_DoDeclaration_V == null) - cb_DoDeclaration_DoDeclaration_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_V (n_DoDeclaration)); - return cb_DoDeclaration_DoDeclaration_V; + return cb_DoDeclaration_DoDeclaration_V ??= new _JniMarshal_PP_V (n_DoDeclaration); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_DoDeclaration (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.DoDeclaration (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.DoDeclaration (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteDuplicateInterfaceEventArgs.txt b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteDuplicateInterfaceEventArgs.txt index ee71f4428..1a00e3a9e 100644 --- a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteDuplicateInterfaceEventArgs.txt +++ b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteDuplicateInterfaceEventArgs.txt @@ -70,15 +70,24 @@ internal partial class AnimatorListenerInvoker : global::Java.Lang.Object, Anima #pragma warning disable 0169 static Delegate GetOnAnimationEnd_IHandler () { - if (cb_OnAnimationEnd_OnAnimationEnd_I_Z == null) - cb_OnAnimationEnd_OnAnimationEnd_I_Z = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPI_Z (n_OnAnimationEnd_I)); - return cb_OnAnimationEnd_OnAnimationEnd_I_Z; + return cb_OnAnimationEnd_OnAnimationEnd_I_Z ??= new _JniMarshal_PPI_Z (n_OnAnimationEnd_I); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static bool n_OnAnimationEnd_I (IntPtr jnienv, IntPtr native__this, int param1) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return __this.OnAnimationEnd (param1); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return __this.OnAnimationEnd (param1); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -96,15 +105,24 @@ internal partial class AnimatorListenerInvoker : global::Java.Lang.Object, Anima #pragma warning disable 0169 static Delegate GetOnAnimationEnd_IIHandler () { - if (cb_OnAnimationEnd_OnAnimationEnd_II_Z == null) - cb_OnAnimationEnd_OnAnimationEnd_II_Z = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPII_Z (n_OnAnimationEnd_II)); - return cb_OnAnimationEnd_OnAnimationEnd_II_Z; + return cb_OnAnimationEnd_OnAnimationEnd_II_Z ??= new _JniMarshal_PPII_Z (n_OnAnimationEnd_II); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static bool n_OnAnimationEnd_II (IntPtr jnienv, IntPtr native__this, int param1, int param2) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return __this.OnAnimationEnd (param1, param2); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return __this.OnAnimationEnd (param1, param2); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterface.txt b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterface.txt index 9a0540855..0d435338b 100644 --- a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterface.txt +++ b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterface.txt @@ -134,15 +134,24 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf #pragma warning disable 0169 static Delegate Getget_CountHandler () { - if (cb_get_Count_get_Count_I == null) - cb_get_Count_get_Count_I = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_I (n_get_Count)); - return cb_get_Count_get_Count_I; + return cb_get_Count_get_Count_I ??= new _JniMarshal_PP_I (n_get_Count); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_get_Count (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return __this.Count; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return __this.Count; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -150,15 +159,23 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf #pragma warning disable 0169 static Delegate Getset_Count_IHandler () { - if (cb_set_Count_set_Count_I_V == null) - cb_set_Count_set_Count_I_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPI_V (n_set_Count_I)); - return cb_set_Count_set_Count_I_V; + return cb_set_Count_set_Count_I_V ??= new _JniMarshal_PPI_V (n_set_Count_I); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_set_Count_I (IntPtr jnienv, IntPtr native__this, int value) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.Count = value; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Count = value; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -183,15 +200,24 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf #pragma warning disable 0169 static Delegate Getget_KeyHandler () { - if (cb_get_Key_get_Key_Ljava_lang_String_ == null) - cb_get_Key_get_Key_Ljava_lang_String_ = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_L (n_get_Key)); - return cb_get_Key_get_Key_Ljava_lang_String_; + return cb_get_Key_get_Key_Ljava_lang_String_ ??= new _JniMarshal_PP_L (n_get_Key); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_get_Key (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return JNIEnv.NewString (__this.Key); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.NewString (__this.Key); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -199,16 +225,24 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf #pragma warning disable 0169 static Delegate Getset_Key_Ljava_lang_String_Handler () { - if (cb_set_Key_set_Key_Ljava_lang_String__V == null) - cb_set_Key_set_Key_Ljava_lang_String__V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_V (n_set_Key_Ljava_lang_String_)); - return cb_set_Key_set_Key_Ljava_lang_String__V; + return cb_set_Key_set_Key_Ljava_lang_String__V ??= new _JniMarshal_PPL_V (n_set_Key_Ljava_lang_String_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_set_Key_Ljava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native_value) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var value = JNIEnv.GetString (native_value, JniHandleOwnership.DoNotTransfer); - __this.Key = value; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var value = JNIEnv.GetString (native_value, JniHandleOwnership.DoNotTransfer); + __this.Key = value; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -235,15 +269,24 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf #pragma warning disable 0169 static Delegate Getget_AbstractCountHandler () { - if (cb_get_AbstractCount_get_AbstractCount_I == null) - cb_get_AbstractCount_get_AbstractCount_I = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_I (n_get_AbstractCount)); - return cb_get_AbstractCount_get_AbstractCount_I; + return cb_get_AbstractCount_get_AbstractCount_I ??= new _JniMarshal_PP_I (n_get_AbstractCount); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_get_AbstractCount (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return __this.AbstractCount; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return __this.AbstractCount; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -251,15 +294,23 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf #pragma warning disable 0169 static Delegate Getset_AbstractCount_IHandler () { - if (cb_set_AbstractCount_set_AbstractCount_I_V == null) - cb_set_AbstractCount_set_AbstractCount_I_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPI_V (n_set_AbstractCount_I)); - return cb_set_AbstractCount_set_AbstractCount_I_V; + return cb_set_AbstractCount_set_AbstractCount_I_V ??= new _JniMarshal_PPI_V (n_set_AbstractCount_I); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_set_AbstractCount_I (IntPtr jnienv, IntPtr native__this, int value) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.AbstractCount = value; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.AbstractCount = value; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -284,17 +335,26 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf #pragma warning disable 0169 static Delegate GetGetCountForKey_Ljava_lang_String_Handler () { - if (cb_GetCountForKey_GetCountForKey_Ljava_lang_String__I == null) - cb_GetCountForKey_GetCountForKey_Ljava_lang_String__I = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_I (n_GetCountForKey_Ljava_lang_String_)); - return cb_GetCountForKey_GetCountForKey_Ljava_lang_String__I; + return cb_GetCountForKey_GetCountForKey_Ljava_lang_String__I ??= new _JniMarshal_PPL_I (n_GetCountForKey_Ljava_lang_String_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_GetCountForKey_Ljava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native_key) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var key = JNIEnv.GetString (native_key, JniHandleOwnership.DoNotTransfer); - int __ret = __this.GetCountForKey (key); - return __ret; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var key = JNIEnv.GetString (native_key, JniHandleOwnership.DoNotTransfer); + int __ret = __this.GetCountForKey (key); + return __ret; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -315,15 +375,24 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf #pragma warning disable 0169 static Delegate GetKeyHandler () { - if (cb_Key_Key_Ljava_lang_String_ == null) - cb_Key_Key_Ljava_lang_String_ = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_L (n_Key)); - return cb_Key_Key_Ljava_lang_String_; + return cb_Key_Key_Ljava_lang_String_ ??= new _JniMarshal_PP_L (n_Key); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_Key (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return JNIEnv.NewString (__this.Key ()); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.NewString (__this.Key ()); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -339,15 +408,23 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf #pragma warning disable 0169 static Delegate GetAbstractMethodHandler () { - if (cb_AbstractMethod_AbstractMethod_V == null) - cb_AbstractMethod_AbstractMethod_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_V (n_AbstractMethod)); - return cb_AbstractMethod_AbstractMethod_V; + return cb_AbstractMethod_AbstractMethod_V ??= new _JniMarshal_PP_V (n_AbstractMethod); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_AbstractMethod (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.AbstractMethod (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.AbstractMethod (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterfaceDefaultMethod.txt b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterfaceDefaultMethod.txt index fd2e7bd28..82f3b0b88 100644 --- a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterfaceDefaultMethod.txt +++ b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterfaceDefaultMethod.txt @@ -7,15 +7,23 @@ public partial interface IMyInterface : IJavaObject, IJavaPeerable { #pragma warning disable 0169 private static Delegate GetDoSomethingHandler () { - if (cb_DoSomething_DoSomething_V == null) - cb_DoSomething_DoSomething_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_V (n_DoSomething)); - return cb_DoSomething_DoSomething_V; + return cb_DoSomething_DoSomething_V ??= new _JniMarshal_PP_V (n_DoSomething); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] private static void n_DoSomething (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.DoSomething (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.DoSomething (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterfaceDefaultProperty.txt b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterfaceDefaultProperty.txt index ad2258f03..6beca372d 100644 --- a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterfaceDefaultProperty.txt +++ b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterfaceDefaultProperty.txt @@ -7,15 +7,24 @@ public partial interface IMyInterface : IJavaObject, IJavaPeerable { #pragma warning disable 0169 private static Delegate Getget_ValueHandler () { - if (cb_get_Value_get_Value_I == null) - cb_get_Value_get_Value_I = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_I (n_get_Value)); - return cb_get_Value_get_Value_I; + return cb_get_Value_get_Value_I ??= new _JniMarshal_PP_I (n_get_Value); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] private static int n_get_Value (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return __this.Value; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return __this.Value; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -23,15 +32,23 @@ public partial interface IMyInterface : IJavaObject, IJavaPeerable { #pragma warning disable 0169 private static Delegate Getset_Value_IHandler () { - if (cb_set_Value_set_Value_I_V == null) - cb_set_Value_set_Value_I_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPI_V (n_set_Value_I)); - return cb_set_Value_set_Value_I_V; + return cb_set_Value_set_Value_I_V ??= new _JniMarshal_PPI_V (n_set_Value_I); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] private static void n_set_Value_I (IntPtr jnienv, IntPtr native__this, int value) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.Value = value; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Value = value; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterfaceDefaultPropertyGetterOnly.txt b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterfaceDefaultPropertyGetterOnly.txt index 321c3ffec..1f91b157c 100644 --- a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterfaceDefaultPropertyGetterOnly.txt +++ b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterfaceDefaultPropertyGetterOnly.txt @@ -7,15 +7,24 @@ public partial interface IMyInterface : IJavaObject, IJavaPeerable { #pragma warning disable 0169 private static Delegate Getget_ValueHandler () { - if (cb_get_Value_get_Value_I == null) - cb_get_Value_get_Value_I = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_I (n_get_Value)); - return cb_get_Value_get_Value_I; + return cb_get_Value_get_Value_I ??= new _JniMarshal_PP_I (n_get_Value); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] private static int n_get_Value (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return __this.Value; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return __this.Value; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterfaceRedeclaredDefaultMethod.txt b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterfaceRedeclaredDefaultMethod.txt index 67d9e65a3..a0888458a 100644 --- a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterfaceRedeclaredDefaultMethod.txt +++ b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterfaceRedeclaredDefaultMethod.txt @@ -66,15 +66,23 @@ internal partial class IMyInterface2Invoker : global::Java.Lang.Object, IMyInter #pragma warning disable 0169 static Delegate GetDoSomethingHandler () { - if (cb_DoSomething_DoSomething_V == null) - cb_DoSomething_DoSomething_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_V (n_DoSomething)); - return cb_DoSomething_DoSomething_V; + return cb_DoSomething_DoSomething_V ??= new _JniMarshal_PP_V (n_DoSomething); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_DoSomething (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.DoSomething (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.DoSomething (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteMethodWithCharSequenceArrays.txt b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteMethodWithCharSequenceArrays.txt index 5ae296955..198f75281 100644 --- a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteMethodWithCharSequenceArrays.txt +++ b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteMethodWithCharSequenceArrays.txt @@ -33,19 +33,28 @@ public partial class MyClass : Java.Lang.Object { #pragma warning disable 0169 static Delegate GetEcho_arrayLjava_lang_CharSequence_Handler () { - if (cb_echo_Echo_arrayLjava_lang_CharSequence__arrayLjava_lang_CharSequence_ == null) - cb_echo_Echo_arrayLjava_lang_CharSequence__arrayLjava_lang_CharSequence_ = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_L (n_Echo_arrayLjava_lang_CharSequence_)); - return cb_echo_Echo_arrayLjava_lang_CharSequence__arrayLjava_lang_CharSequence_; + return cb_echo_Echo_arrayLjava_lang_CharSequence__arrayLjava_lang_CharSequence_ ??= new _JniMarshal_PPL_L (n_Echo_arrayLjava_lang_CharSequence_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_Echo_arrayLjava_lang_CharSequence_ (IntPtr jnienv, IntPtr native__this, IntPtr native_messages) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var messages = (Java.Lang.ICharSequence[]) JNIEnv.GetArray (native_messages, JniHandleOwnership.DoNotTransfer, typeof (Java.Lang.ICharSequence)); - IntPtr __ret = JNIEnv.NewArray (__this.EchoFormatted (messages)); - if (messages != null) - JNIEnv.CopyArray (messages, native_messages); - return __ret; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var messages = (Java.Lang.ICharSequence[]) JNIEnv.GetArray (native_messages, JniHandleOwnership.DoNotTransfer, typeof (Java.Lang.ICharSequence)); + IntPtr __ret = JNIEnv.NewArray (__this.EchoFormatted (messages)); + if (messages != null) + JNIEnv.CopyArray (messages, native_messages); + return __ret; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteNestedInterfaceClass.txt b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteNestedInterfaceClass.txt index 9b6e1b388..a29ac7411 100644 --- a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteNestedInterfaceClass.txt +++ b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteNestedInterfaceClass.txt @@ -101,15 +101,24 @@ internal partial class IParentInvoker : global::Java.Lang.Object, IParent { #pragma warning disable 0169 static Delegate GetGetBarHandler () { - if (cb_getBar_GetBar_I == null) - cb_getBar_GetBar_I = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_I (n_GetBar)); - return cb_getBar_GetBar_I; + return cb_getBar_GetBar_I ??= new _JniMarshal_PP_I (n_GetBar); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_GetBar (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return __this.Bar; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return __this.Bar; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteNestedInterfaceTypes.txt b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteNestedInterfaceTypes.txt index 7cbb6e8ab..317bde11f 100644 --- a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteNestedInterfaceTypes.txt +++ b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteNestedInterfaceTypes.txt @@ -77,15 +77,24 @@ public partial interface IParent : IJavaObject, IJavaPeerable { #pragma warning disable 0169 static Delegate GetGetBarHandler () { - if (cb_getBar_GetBar_I == null) - cb_getBar_GetBar_I = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_I (n_GetBar)); - return cb_getBar_GetBar_I; + return cb_getBar_GetBar_I ??= new _JniMarshal_PP_I (n_GetBar); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_GetBar (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return __this.Bar; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return __this.Bar; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -161,15 +170,24 @@ internal partial class IParentInvoker : global::Java.Lang.Object, IParent { #pragma warning disable 0169 static Delegate GetGetBarHandler () { - if (cb_getBar_GetBar_I == null) - cb_getBar_GetBar_I = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_I (n_GetBar)); - return cb_getBar_GetBar_I; + return cb_getBar_GetBar_I ??= new _JniMarshal_PP_I (n_GetBar); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_GetBar (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return __this.Bar; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return __this.Bar; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteUnnestedInterfaceTypes.txt b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteUnnestedInterfaceTypes.txt index 9cf82ca41..3e2c6f08a 100644 --- a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteUnnestedInterfaceTypes.txt +++ b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteUnnestedInterfaceTypes.txt @@ -68,15 +68,24 @@ internal partial class IParentChildInvoker : global::Java.Lang.Object, IParentCh #pragma warning disable 0169 static Delegate GetGetBarHandler () { - if (cb_getBar_GetBar_I == null) - cb_getBar_GetBar_I = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_I (n_GetBar)); - return cb_getBar_GetBar_I; + return cb_getBar_GetBar_I ??= new _JniMarshal_PP_I (n_GetBar); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_GetBar (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return __this.Bar; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return __this.Bar; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -161,15 +170,24 @@ internal partial class IParentInvoker : global::Java.Lang.Object, IParent { #pragma warning disable 0169 static Delegate GetGetBarHandler () { - if (cb_getBar_GetBar_I == null) - cb_getBar_GetBar_I = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_I (n_GetBar)); - return cb_getBar_GetBar_I; + return cb_getBar_GetBar_I ??= new _JniMarshal_PP_I (n_GetBar); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_GetBar (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return __this.Bar; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return __this.Bar; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.BasePublicClass.cs b/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.BasePublicClass.cs index d5a5f220a..b69bb0ca2 100644 --- a/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.BasePublicClass.cs +++ b/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.BasePublicClass.cs @@ -50,15 +50,23 @@ protected BasePublicClass (IntPtr javaReference, JniHandleOwnership transfer) : #pragma warning disable 0169 static Delegate GetBaseMethodHandler () { - if (cb_baseMethod_BaseMethod_V == null) - cb_baseMethod_BaseMethod_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_V (n_BaseMethod)); - return cb_baseMethod_BaseMethod_V; + return cb_baseMethod_BaseMethod_V ??= new _JniMarshal_PP_V (n_BaseMethod); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_BaseMethod (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.BaseMethod (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.BaseMethod (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.ExtendPublicClass.cs b/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.ExtendPublicClass.cs index 6220f72d3..e47fcc3fd 100644 --- a/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.ExtendPublicClass.cs +++ b/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.ExtendPublicClass.cs @@ -67,15 +67,23 @@ public unsafe ExtendPublicClass () : base (IntPtr.Zero, JniHandleOwnership.DoNot #pragma warning disable 0169 static Delegate GetFooHandler () { - if (cb_foo_Foo_V == null) - cb_foo_Foo_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_V (n_Foo)); - return cb_foo_Foo_V; + return cb_foo_Foo_V ??= new _JniMarshal_PP_V (n_Foo); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Foo (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.Foo (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Foo (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.IExtendedInterface.cs b/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.IExtendedInterface.cs index b569b5075..b678796a6 100644 --- a/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.IExtendedInterface.cs +++ b/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.IExtendedInterface.cs @@ -54,15 +54,23 @@ public IExtendedInterfaceInvoker (IntPtr handle, JniHandleOwnership transfer) : #pragma warning disable 0169 static Delegate GetExtendedMethodHandler () { - if (cb_extendedMethod_ExtendedMethod_V == null) - cb_extendedMethod_ExtendedMethod_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_V (n_ExtendedMethod)); - return cb_extendedMethod_ExtendedMethod_V; + return cb_extendedMethod_ExtendedMethod_V ??= new _JniMarshal_PP_V (n_ExtendedMethod); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_ExtendedMethod (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.ExtendedMethod (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.ExtendedMethod (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -79,15 +87,23 @@ public unsafe void ExtendedMethod () #pragma warning disable 0169 static Delegate GetBaseMethodHandler () { - if (cb_baseMethod_BaseMethod_V == null) - cb_baseMethod_BaseMethod_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_V (n_BaseMethod)); - return cb_baseMethod_BaseMethod_V; + return cb_baseMethod_BaseMethod_V ??= new _JniMarshal_PP_V (n_BaseMethod); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_BaseMethod (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.BaseMethod (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.BaseMethod (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.PublicClass.cs b/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.PublicClass.cs index 4ae661d76..47bbc8901 100644 --- a/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.PublicClass.cs +++ b/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.PublicClass.cs @@ -61,15 +61,23 @@ public IProtectedInterfaceInvoker (IntPtr handle, JniHandleOwnership transfer) : #pragma warning disable 0169 static Delegate GetFooHandler () { - if (cb_foo_Foo_V == null) - cb_foo_Foo_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_V (n_Foo)); - return cb_foo_Foo_V; + return cb_foo_Foo_V ??= new _JniMarshal_PP_V (n_Foo); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Foo (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.Foo (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Foo (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -133,15 +141,23 @@ public unsafe PublicClass () : base (IntPtr.Zero, JniHandleOwnership.DoNotTransf #pragma warning disable 0169 static Delegate GetFooHandler () { - if (cb_foo_Foo_V == null) - cb_foo_Foo_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_V (n_Foo)); - return cb_foo_Foo_V; + return cb_foo_Foo_V ??= new _JniMarshal_PP_V (n_Foo); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Foo (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.Foo (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Foo (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.TestClass.cs b/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.TestClass.cs index 921dab094..9e576a2cd 100644 --- a/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.TestClass.cs +++ b/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.TestClass.cs @@ -67,15 +67,23 @@ public unsafe TestClass () : base (IntPtr.Zero, JniHandleOwnership.DoNotTransfer #pragma warning disable 0169 static Delegate GetBaseMethodHandler () { - if (cb_baseMethod_BaseMethod_V == null) - cb_baseMethod_BaseMethod_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_V (n_BaseMethod)); - return cb_baseMethod_BaseMethod_V; + return cb_baseMethod_BaseMethod_V ??= new _JniMarshal_PP_V (n_BaseMethod); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_BaseMethod (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.BaseMethod (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.BaseMethod (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/Adapters/Xamarin.Test.AbsSpinner.cs b/tests/generator-Tests/expected.xaji/Adapters/Xamarin.Test.AbsSpinner.cs index 9d42336df..98acbff49 100644 --- a/tests/generator-Tests/expected.xaji/Adapters/Xamarin.Test.AbsSpinner.cs +++ b/tests/generator-Tests/expected.xaji/Adapters/Xamarin.Test.AbsSpinner.cs @@ -50,15 +50,24 @@ protected AbsSpinner (IntPtr javaReference, JniHandleOwnership transfer) : base #pragma warning disable 0169 static Delegate GetGetAdapterHandler () { - if (cb_getAdapter_GetAdapter_Lxamarin_test_SpinnerAdapter_ == null) - cb_getAdapter_GetAdapter_Lxamarin_test_SpinnerAdapter_ = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_L (n_GetAdapter)); - return cb_getAdapter_GetAdapter_Lxamarin_test_SpinnerAdapter_; + return cb_getAdapter_GetAdapter_Lxamarin_test_SpinnerAdapter_ ??= new _JniMarshal_PP_L (n_GetAdapter); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_GetAdapter (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return JNIEnv.ToLocalJniHandle (__this.Adapter); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.ToLocalJniHandle (__this.Adapter); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -66,16 +75,24 @@ static IntPtr n_GetAdapter (IntPtr jnienv, IntPtr native__this) #pragma warning disable 0169 static Delegate GetSetAdapter_Lxamarin_test_SpinnerAdapter_Handler () { - if (cb_setAdapter_SetAdapter_Lxamarin_test_SpinnerAdapter__V == null) - cb_setAdapter_SetAdapter_Lxamarin_test_SpinnerAdapter__V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_V (n_SetAdapter_Lxamarin_test_SpinnerAdapter_)); - return cb_setAdapter_SetAdapter_Lxamarin_test_SpinnerAdapter__V; + return cb_setAdapter_SetAdapter_Lxamarin_test_SpinnerAdapter__V ??= new _JniMarshal_PPL_V (n_SetAdapter_Lxamarin_test_SpinnerAdapter_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_SetAdapter_Lxamarin_test_SpinnerAdapter_ (IntPtr jnienv, IntPtr native__this, IntPtr native_adapter) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var adapter = (global::Xamarin.Test.ISpinnerAdapter)global::Java.Lang.Object.GetObject (native_adapter, JniHandleOwnership.DoNotTransfer); - __this.Adapter = adapter; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var adapter = (global::Xamarin.Test.ISpinnerAdapter)global::Java.Lang.Object.GetObject (native_adapter, JniHandleOwnership.DoNotTransfer); + __this.Adapter = adapter; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/Adapters/Xamarin.Test.AdapterView.cs b/tests/generator-Tests/expected.xaji/Adapters/Xamarin.Test.AdapterView.cs index a0603b282..275b36add 100644 --- a/tests/generator-Tests/expected.xaji/Adapters/Xamarin.Test.AdapterView.cs +++ b/tests/generator-Tests/expected.xaji/Adapters/Xamarin.Test.AdapterView.cs @@ -51,15 +51,24 @@ protected AdapterView (IntPtr javaReference, JniHandleOwnership transfer) : base #pragma warning disable 0169 static Delegate GetGetAdapterHandler () { - if (cb_getAdapter_GetAdapter_Lxamarin_test_Adapter_ == null) - cb_getAdapter_GetAdapter_Lxamarin_test_Adapter_ = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_L (n_GetAdapter)); - return cb_getAdapter_GetAdapter_Lxamarin_test_Adapter_; + return cb_getAdapter_GetAdapter_Lxamarin_test_Adapter_ ??= new _JniMarshal_PP_L (n_GetAdapter); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_GetAdapter (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return JNIEnv.ToLocalJniHandle (__this.RawAdapter); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.ToLocalJniHandle (__this.RawAdapter); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -67,16 +76,24 @@ static IntPtr n_GetAdapter (IntPtr jnienv, IntPtr native__this) #pragma warning disable 0169 static Delegate GetSetAdapter_Lxamarin_test_Adapter_Handler () { - if (cb_setAdapter_SetAdapter_Lxamarin_test_Adapter__V == null) - cb_setAdapter_SetAdapter_Lxamarin_test_Adapter__V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_V (n_SetAdapter_Lxamarin_test_Adapter_)); - return cb_setAdapter_SetAdapter_Lxamarin_test_Adapter__V; + return cb_setAdapter_SetAdapter_Lxamarin_test_Adapter__V ??= new _JniMarshal_PPL_V (n_SetAdapter_Lxamarin_test_Adapter_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_SetAdapter_Lxamarin_test_Adapter_ (IntPtr jnienv, IntPtr native__this, IntPtr native_adapter) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var adapter = global::Java.Lang.Object.GetObject (native_adapter, JniHandleOwnership.DoNotTransfer); - __this.RawAdapter = adapter; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var adapter = global::Java.Lang.Object.GetObject (native_adapter, JniHandleOwnership.DoNotTransfer); + __this.RawAdapter = adapter; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/Adapters/Xamarin.Test.GenericReturnObject.cs b/tests/generator-Tests/expected.xaji/Adapters/Xamarin.Test.GenericReturnObject.cs index a15152c8a..b3e67e297 100644 --- a/tests/generator-Tests/expected.xaji/Adapters/Xamarin.Test.GenericReturnObject.cs +++ b/tests/generator-Tests/expected.xaji/Adapters/Xamarin.Test.GenericReturnObject.cs @@ -50,15 +50,24 @@ protected GenericReturnObject (IntPtr javaReference, JniHandleOwnership transfer #pragma warning disable 0169 static Delegate GetGenericReturnHandler () { - if (cb_GenericReturn_GenericReturn_Lxamarin_test_AdapterView_ == null) - cb_GenericReturn_GenericReturn_Lxamarin_test_AdapterView_ = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_L (n_GenericReturn)); - return cb_GenericReturn_GenericReturn_Lxamarin_test_AdapterView_; + return cb_GenericReturn_GenericReturn_Lxamarin_test_AdapterView_ ??= new _JniMarshal_PP_L (n_GenericReturn); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_GenericReturn (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return JNIEnv.ToLocalJniHandle (__this.GenericReturn ()); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.ToLocalJniHandle (__this.GenericReturn ()); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/Android.Graphics.Color/Xamarin.Test.SomeObject.cs b/tests/generator-Tests/expected.xaji/Android.Graphics.Color/Xamarin.Test.SomeObject.cs index 18df6af7a..648d81135 100644 --- a/tests/generator-Tests/expected.xaji/Android.Graphics.Color/Xamarin.Test.SomeObject.cs +++ b/tests/generator-Tests/expected.xaji/Android.Graphics.Color/Xamarin.Test.SomeObject.cs @@ -70,15 +70,24 @@ protected SomeObject (IntPtr javaReference, JniHandleOwnership transfer) : base #pragma warning disable 0169 static Delegate GetGetSomeColorHandler () { - if (cb_getSomeColor_GetSomeColor_I == null) - cb_getSomeColor_GetSomeColor_I = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_I (n_GetSomeColor)); - return cb_getSomeColor_GetSomeColor_I; + return cb_getSomeColor_GetSomeColor_I ??= new _JniMarshal_PP_I (n_GetSomeColor); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_GetSomeColor (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return __this.SomeColor.ToArgb (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return __this.SomeColor.ToArgb (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -86,16 +95,24 @@ static int n_GetSomeColor (IntPtr jnienv, IntPtr native__this) #pragma warning disable 0169 static Delegate GetSetSomeColor_IHandler () { - if (cb_setSomeColor_SetSomeColor_I_V == null) - cb_setSomeColor_SetSomeColor_I_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPI_V (n_SetSomeColor_I)); - return cb_setSomeColor_SetSomeColor_I_V; + return cb_setSomeColor_SetSomeColor_I_V ??= new _JniMarshal_PPI_V (n_SetSomeColor_I); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_SetSomeColor_I (IntPtr jnienv, IntPtr native__this, int native_newvalue) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var newvalue = new global::Android.Graphics.Color (native_newvalue); - __this.SomeColor = newvalue; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var newvalue = new global::Android.Graphics.Color (native_newvalue); + __this.SomeColor = newvalue; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/CSharpKeywords/Java.Lang.Throwable.cs b/tests/generator-Tests/expected.xaji/CSharpKeywords/Java.Lang.Throwable.cs index 3485bf63c..6f0b2d774 100644 --- a/tests/generator-Tests/expected.xaji/CSharpKeywords/Java.Lang.Throwable.cs +++ b/tests/generator-Tests/expected.xaji/CSharpKeywords/Java.Lang.Throwable.cs @@ -28,15 +28,24 @@ internal static IntPtr class_ref { #pragma warning disable 0169 static Delegate GetGetMessageHandler () { - if (cb_getMessage_GetMessage_Ljava_lang_String_ == null) - cb_getMessage_GetMessage_Ljava_lang_String_ = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_L (n_GetMessage)); - return cb_getMessage_GetMessage_Ljava_lang_String_; + return cb_getMessage_GetMessage_Ljava_lang_String_ ??= new _JniMarshal_PP_L (n_GetMessage); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_GetMessage (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return JNIEnv.NewString (__this.Message); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.NewString (__this.Message); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/CSharpKeywords/Xamarin.Test.CSharpKeywords.cs b/tests/generator-Tests/expected.xaji/CSharpKeywords/Xamarin.Test.CSharpKeywords.cs index 0b7497e00..eb5c47ff6 100644 --- a/tests/generator-Tests/expected.xaji/CSharpKeywords/Xamarin.Test.CSharpKeywords.cs +++ b/tests/generator-Tests/expected.xaji/CSharpKeywords/Xamarin.Test.CSharpKeywords.cs @@ -50,15 +50,24 @@ protected CSharpKeywords (IntPtr javaReference, JniHandleOwnership transfer) : b #pragma warning disable 0169 static Delegate GetUsePartial_IHandler () { - if (cb_usePartial_UsePartial_I_Ljava_lang_String_ == null) - cb_usePartial_UsePartial_I_Ljava_lang_String_ = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPI_L (n_UsePartial_I)); - return cb_usePartial_UsePartial_I_Ljava_lang_String_; + return cb_usePartial_UsePartial_I_Ljava_lang_String_ ??= new _JniMarshal_PPI_L (n_UsePartial_I); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_UsePartial_I (IntPtr jnienv, IntPtr native__this, int partial) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return JNIEnv.NewString (__this.UsePartial (partial)); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.NewString (__this.UsePartial (partial)); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Text.ISpannable.cs b/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Text.ISpannable.cs index fe7575e43..79811c119 100644 --- a/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Text.ISpannable.cs +++ b/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Text.ISpannable.cs @@ -46,17 +46,26 @@ public ISpannableInvoker (IntPtr handle, JniHandleOwnership transfer) : base (ha #pragma warning disable 0169 static Delegate GetGetSpanFlags_Ljava_lang_Object_Handler () { - if (cb_getSpanFlags_GetSpanFlags_Ljava_lang_Object__I == null) - cb_getSpanFlags_GetSpanFlags_Ljava_lang_Object__I = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_I (n_GetSpanFlags_Ljava_lang_Object_)); - return cb_getSpanFlags_GetSpanFlags_Ljava_lang_Object__I; + return cb_getSpanFlags_GetSpanFlags_Ljava_lang_Object__I ??= new _JniMarshal_PPL_I (n_GetSpanFlags_Ljava_lang_Object_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_GetSpanFlags_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_tag) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var tag = global::Java.Lang.Object.GetObject (native_tag, JniHandleOwnership.DoNotTransfer); - int __ret = (int) __this.GetSpanFlags (tag); - return __ret; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var tag = global::Java.Lang.Object.GetObject (native_tag, JniHandleOwnership.DoNotTransfer); + int __ret = (int) __this.GetSpanFlags (tag); + return __ret; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Text.ISpanned.cs b/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Text.ISpanned.cs index 9e29c945d..9eecc9a55 100644 --- a/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Text.ISpanned.cs +++ b/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Text.ISpanned.cs @@ -49,17 +49,26 @@ public ISpannedInvoker (IntPtr handle, JniHandleOwnership transfer) : base (hand #pragma warning disable 0169 static Delegate GetGetSpanFlags_Ljava_lang_Object_Handler () { - if (cb_getSpanFlags_GetSpanFlags_Ljava_lang_Object__I == null) - cb_getSpanFlags_GetSpanFlags_Ljava_lang_Object__I = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_I (n_GetSpanFlags_Ljava_lang_Object_)); - return cb_getSpanFlags_GetSpanFlags_Ljava_lang_Object__I; + return cb_getSpanFlags_GetSpanFlags_Ljava_lang_Object__I ??= new _JniMarshal_PPL_I (n_GetSpanFlags_Ljava_lang_Object_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_GetSpanFlags_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_tag) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var tag = global::Java.Lang.Object.GetObject (native_tag, JniHandleOwnership.DoNotTransfer); - int __ret = (int) __this.GetSpanFlags (tag); - return __ret; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var tag = global::Java.Lang.Object.GetObject (native_tag, JniHandleOwnership.DoNotTransfer); + int __ret = (int) __this.GetSpanFlags (tag); + return __ret; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Text.SpannableString.cs b/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Text.SpannableString.cs index 355cc043d..a9f56e7d8 100644 --- a/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Text.SpannableString.cs +++ b/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Text.SpannableString.cs @@ -93,17 +93,26 @@ public unsafe SpannableString (string source) : base (IntPtr.Zero, JniHandleOwne #pragma warning disable 0169 static Delegate GetGetSpanFlags_Ljava_lang_Object_Handler () { - if (cb_getSpanFlags_GetSpanFlags_Ljava_lang_Object__I == null) - cb_getSpanFlags_GetSpanFlags_Ljava_lang_Object__I = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_I (n_GetSpanFlags_Ljava_lang_Object_)); - return cb_getSpanFlags_GetSpanFlags_Ljava_lang_Object__I; + return cb_getSpanFlags_GetSpanFlags_Ljava_lang_Object__I ??= new _JniMarshal_PPL_I (n_GetSpanFlags_Ljava_lang_Object_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_GetSpanFlags_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_what) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var what = global::Java.Lang.Object.GetObject (native_what, JniHandleOwnership.DoNotTransfer); - int __ret = (int) __this.GetSpanFlags (what); - return __ret; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var what = global::Java.Lang.Object.GetObject (native_what, JniHandleOwnership.DoNotTransfer); + int __ret = (int) __this.GetSpanFlags (what); + return __ret; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Text.SpannableStringInternal.cs b/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Text.SpannableStringInternal.cs index 177673a96..9523897f3 100644 --- a/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Text.SpannableStringInternal.cs +++ b/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Text.SpannableStringInternal.cs @@ -50,17 +50,26 @@ protected SpannableStringInternal (IntPtr javaReference, JniHandleOwnership tran #pragma warning disable 0169 static Delegate GetGetSpanFlags_Ljava_lang_Object_Handler () { - if (cb_getSpanFlags_GetSpanFlags_Ljava_lang_Object__I == null) - cb_getSpanFlags_GetSpanFlags_Ljava_lang_Object__I = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_I (n_GetSpanFlags_Ljava_lang_Object_)); - return cb_getSpanFlags_GetSpanFlags_Ljava_lang_Object__I; + return cb_getSpanFlags_GetSpanFlags_Ljava_lang_Object__I ??= new _JniMarshal_PPL_I (n_GetSpanFlags_Ljava_lang_Object_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_GetSpanFlags_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_p0) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var p0 = global::Java.Lang.Object.GetObject (native_p0, JniHandleOwnership.DoNotTransfer); - int __ret = (int) __this.GetSpanFlags (p0); - return __ret; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var p0 = global::Java.Lang.Object.GetObject (native_p0, JniHandleOwnership.DoNotTransfer); + int __ret = (int) __this.GetSpanFlags (p0); + return __ret; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Views.View.cs b/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Views.View.cs index 5f63c2559..3ad3484f1 100644 --- a/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Views.View.cs +++ b/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Views.View.cs @@ -61,16 +61,24 @@ public IOnClickListenerInvoker (IntPtr handle, JniHandleOwnership transfer) : ba #pragma warning disable 0169 static Delegate GetOnClick_Landroid_view_View_Handler () { - if (cb_onClick_OnClick_Landroid_view_View__V == null) - cb_onClick_OnClick_Landroid_view_View__V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_V (n_OnClick_Landroid_view_View_)); - return cb_onClick_OnClick_Landroid_view_View__V; + return cb_onClick_OnClick_Landroid_view_View__V ??= new _JniMarshal_PPL_V (n_OnClick_Landroid_view_View_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_OnClick_Landroid_view_View_ (IntPtr jnienv, IntPtr native__this, IntPtr native_v) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var v = global::Java.Lang.Object.GetObject (native_v, JniHandleOwnership.DoNotTransfer); - __this.OnClick (v); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var v = global::Java.Lang.Object.GetObject (native_v, JniHandleOwnership.DoNotTransfer); + __this.OnClick (v); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -150,16 +158,24 @@ protected View (IntPtr javaReference, JniHandleOwnership transfer) : base (javaR #pragma warning disable 0169 static Delegate GetSetOnClickListener_Landroid_view_View_OnClickListener_Handler () { - if (cb_setOnClickListener_SetOnClickListener_Landroid_view_View_OnClickListener__V == null) - cb_setOnClickListener_SetOnClickListener_Landroid_view_View_OnClickListener__V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_V (n_SetOnClickListener_Landroid_view_View_OnClickListener_)); - return cb_setOnClickListener_SetOnClickListener_Landroid_view_View_OnClickListener__V; + return cb_setOnClickListener_SetOnClickListener_Landroid_view_View_OnClickListener__V ??= new _JniMarshal_PPL_V (n_SetOnClickListener_Landroid_view_View_OnClickListener_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_SetOnClickListener_Landroid_view_View_OnClickListener_ (IntPtr jnienv, IntPtr native__this, IntPtr native_l) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var l = (global::Android.Views.View.IOnClickListener)global::Java.Lang.Object.GetObject (native_l, JniHandleOwnership.DoNotTransfer); - __this.SetOnClickListener (l); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var l = (global::Android.Views.View.IOnClickListener)global::Java.Lang.Object.GetObject (native_l, JniHandleOwnership.DoNotTransfer); + __this.SetOnClickListener (l); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -181,16 +197,24 @@ public virtual unsafe void SetOnClickListener (global::Android.Views.View.IOnCli #pragma warning disable 0169 static Delegate GetSetOn123Listener_Landroid_view_View_OnClickListener_Handler () { - if (cb_setOn123Listener_SetOn123Listener_Landroid_view_View_OnClickListener__V == null) - cb_setOn123Listener_SetOn123Listener_Landroid_view_View_OnClickListener__V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_V (n_SetOn123Listener_Landroid_view_View_OnClickListener_)); - return cb_setOn123Listener_SetOn123Listener_Landroid_view_View_OnClickListener__V; + return cb_setOn123Listener_SetOn123Listener_Landroid_view_View_OnClickListener__V ??= new _JniMarshal_PPL_V (n_SetOn123Listener_Landroid_view_View_OnClickListener_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_SetOn123Listener_Landroid_view_View_OnClickListener_ (IntPtr jnienv, IntPtr native__this, IntPtr native_l) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var l = (global::Android.Views.View.IOnClickListener)global::Java.Lang.Object.GetObject (native_l, JniHandleOwnership.DoNotTransfer); - __this.SetOn123Listener (l); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var l = (global::Android.Views.View.IOnClickListener)global::Java.Lang.Object.GetObject (native_l, JniHandleOwnership.DoNotTransfer); + __this.SetOn123Listener (l); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -212,16 +236,24 @@ public virtual unsafe void SetOn123Listener (global::Android.Views.View.IOnClick #pragma warning disable 0169 static Delegate GetAddTouchables_Ljava_util_ArrayList_Handler () { - if (cb_addTouchables_AddTouchables_Ljava_util_ArrayList__V == null) - cb_addTouchables_AddTouchables_Ljava_util_ArrayList__V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_V (n_AddTouchables_Ljava_util_ArrayList_)); - return cb_addTouchables_AddTouchables_Ljava_util_ArrayList__V; + return cb_addTouchables_AddTouchables_Ljava_util_ArrayList__V ??= new _JniMarshal_PPL_V (n_AddTouchables_Ljava_util_ArrayList_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_AddTouchables_Ljava_util_ArrayList_ (IntPtr jnienv, IntPtr native__this, IntPtr native_views) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var views = global::Android.Runtime.JavaList.FromJniHandle (native_views, JniHandleOwnership.DoNotTransfer); - __this.AddTouchables (views); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var views = global::Android.Runtime.JavaList.FromJniHandle (native_views, JniHandleOwnership.DoNotTransfer); + __this.AddTouchables (views); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/GenericArguments/Com.Google.Android.Exoplayer.Drm.IExoMediaCrypto.cs b/tests/generator-Tests/expected.xaji/GenericArguments/Com.Google.Android.Exoplayer.Drm.IExoMediaCrypto.cs index 4108d414d..52ec10374 100644 --- a/tests/generator-Tests/expected.xaji/GenericArguments/Com.Google.Android.Exoplayer.Drm.IExoMediaCrypto.cs +++ b/tests/generator-Tests/expected.xaji/GenericArguments/Com.Google.Android.Exoplayer.Drm.IExoMediaCrypto.cs @@ -48,17 +48,26 @@ public IExoMediaCryptoInvoker (IntPtr handle, JniHandleOwnership transfer) : bas #pragma warning disable 0169 static Delegate GetRequiresSecureDecoderComponent_Ljava_lang_String_Handler () { - if (cb_requiresSecureDecoderComponent_RequiresSecureDecoderComponent_Ljava_lang_String__Z == null) - cb_requiresSecureDecoderComponent_RequiresSecureDecoderComponent_Ljava_lang_String__Z = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_Z (n_RequiresSecureDecoderComponent_Ljava_lang_String_)); - return cb_requiresSecureDecoderComponent_RequiresSecureDecoderComponent_Ljava_lang_String__Z; + return cb_requiresSecureDecoderComponent_RequiresSecureDecoderComponent_Ljava_lang_String__Z ??= new _JniMarshal_PPL_Z (n_RequiresSecureDecoderComponent_Ljava_lang_String_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static bool n_RequiresSecureDecoderComponent_Ljava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native_p0) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var p0 = JNIEnv.GetString (native_p0, JniHandleOwnership.DoNotTransfer); - bool __ret = __this.RequiresSecureDecoderComponent (p0); - return __ret; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var p0 = JNIEnv.GetString (native_p0, JniHandleOwnership.DoNotTransfer); + bool __ret = __this.RequiresSecureDecoderComponent (p0); + return __ret; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/GenericArguments/Com.Google.Android.Exoplayer.Drm.IExoMediaDrm.cs b/tests/generator-Tests/expected.xaji/GenericArguments/Com.Google.Android.Exoplayer.Drm.IExoMediaDrm.cs index cfef94267..605ab3eba 100644 --- a/tests/generator-Tests/expected.xaji/GenericArguments/Com.Google.Android.Exoplayer.Drm.IExoMediaDrm.cs +++ b/tests/generator-Tests/expected.xaji/GenericArguments/Com.Google.Android.Exoplayer.Drm.IExoMediaDrm.cs @@ -49,22 +49,30 @@ public IExoMediaDrmOnEventListenerInvoker (IntPtr handle, JniHandleOwnership tra #pragma warning disable 0169 static Delegate GetOnEvent_Lcom_google_android_exoplayer_drm_ExoMediaDrm_arrayBIIarrayBHandler () { - if (cb_onEvent_OnEvent_Lcom_google_android_exoplayer_drm_ExoMediaDrm_arrayBIIarrayB_V == null) - cb_onEvent_OnEvent_Lcom_google_android_exoplayer_drm_ExoMediaDrm_arrayBIIarrayB_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPLLIIL_V (n_OnEvent_Lcom_google_android_exoplayer_drm_ExoMediaDrm_arrayBIIarrayB)); - return cb_onEvent_OnEvent_Lcom_google_android_exoplayer_drm_ExoMediaDrm_arrayBIIarrayB_V; + return cb_onEvent_OnEvent_Lcom_google_android_exoplayer_drm_ExoMediaDrm_arrayBIIarrayB_V ??= new _JniMarshal_PPLLIIL_V (n_OnEvent_Lcom_google_android_exoplayer_drm_ExoMediaDrm_arrayBIIarrayB); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_OnEvent_Lcom_google_android_exoplayer_drm_ExoMediaDrm_arrayBIIarrayB (IntPtr jnienv, IntPtr native__this, IntPtr native_p0, IntPtr native_p1, int p2, int p3, IntPtr native_p4) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var p0 = (global::Com.Google.Android.Exoplayer.Drm.IExoMediaDrm)global::Java.Lang.Object.GetObject (native_p0, JniHandleOwnership.DoNotTransfer); - var p1 = (byte[]) JNIEnv.GetArray (native_p1, JniHandleOwnership.DoNotTransfer, typeof (byte)); - var p4 = (byte[]) JNIEnv.GetArray (native_p4, JniHandleOwnership.DoNotTransfer, typeof (byte)); - __this.OnEvent (p0, p1, p2, p3, p4); - if (p1 != null) - JNIEnv.CopyArray (p1, native_p1); - if (p4 != null) - JNIEnv.CopyArray (p4, native_p4); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var p0 = (global::Com.Google.Android.Exoplayer.Drm.IExoMediaDrm)global::Java.Lang.Object.GetObject (native_p0, JniHandleOwnership.DoNotTransfer); + var p1 = (byte[]) JNIEnv.GetArray (native_p1, JniHandleOwnership.DoNotTransfer, typeof (byte)); + var p4 = (byte[]) JNIEnv.GetArray (native_p4, JniHandleOwnership.DoNotTransfer, typeof (byte)); + __this.OnEvent (p0, p1, p2, p3, p4); + if (p1 != null) + JNIEnv.CopyArray (p1, native_p1); + if (p4 != null) + JNIEnv.CopyArray (p4, native_p4); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -219,16 +227,24 @@ public IExoMediaDrmInvoker (IntPtr handle, JniHandleOwnership transfer) : base ( #pragma warning disable 0169 static Delegate GetSetOnEventListener_Lcom_google_android_exoplayer_drm_ExoMediaDrm_OnEventListener_Handler () { - if (cb_setOnEventListener_SetOnEventListener_Lcom_google_android_exoplayer_drm_ExoMediaDrm_OnEventListener__V == null) - cb_setOnEventListener_SetOnEventListener_Lcom_google_android_exoplayer_drm_ExoMediaDrm_OnEventListener__V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_V (n_SetOnEventListener_Lcom_google_android_exoplayer_drm_ExoMediaDrm_OnEventListener_)); - return cb_setOnEventListener_SetOnEventListener_Lcom_google_android_exoplayer_drm_ExoMediaDrm_OnEventListener__V; + return cb_setOnEventListener_SetOnEventListener_Lcom_google_android_exoplayer_drm_ExoMediaDrm_OnEventListener__V ??= new _JniMarshal_PPL_V (n_SetOnEventListener_Lcom_google_android_exoplayer_drm_ExoMediaDrm_OnEventListener_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_SetOnEventListener_Lcom_google_android_exoplayer_drm_ExoMediaDrm_OnEventListener_ (IntPtr jnienv, IntPtr native__this, IntPtr native_p0) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var p0 = (global::Com.Google.Android.Exoplayer.Drm.IExoMediaDrmOnEventListener)global::Java.Lang.Object.GetObject (native_p0, JniHandleOwnership.DoNotTransfer); - __this.SetOnEventListener (p0); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var p0 = (global::Com.Google.Android.Exoplayer.Drm.IExoMediaDrmOnEventListener)global::Java.Lang.Object.GetObject (native_p0, JniHandleOwnership.DoNotTransfer); + __this.SetOnEventListener (p0); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/InterfaceMethodsConflict/Xamarin.Test.II1.cs b/tests/generator-Tests/expected.xaji/InterfaceMethodsConflict/Xamarin.Test.II1.cs index 3d923cf68..614c71dcb 100644 --- a/tests/generator-Tests/expected.xaji/InterfaceMethodsConflict/Xamarin.Test.II1.cs +++ b/tests/generator-Tests/expected.xaji/InterfaceMethodsConflict/Xamarin.Test.II1.cs @@ -48,15 +48,23 @@ public II1Invoker (IntPtr handle, JniHandleOwnership transfer) : base (handle, t #pragma warning disable 0169 static Delegate GetCloseHandler () { - if (cb_close_Close_V == null) - cb_close_Close_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_V (n_Close)); - return cb_close_Close_V; + return cb_close_Close_V ??= new _JniMarshal_PP_V (n_Close); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Close (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.Close (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Close (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/InterfaceMethodsConflict/Xamarin.Test.II2.cs b/tests/generator-Tests/expected.xaji/InterfaceMethodsConflict/Xamarin.Test.II2.cs index 6926b1bc3..263a7c111 100644 --- a/tests/generator-Tests/expected.xaji/InterfaceMethodsConflict/Xamarin.Test.II2.cs +++ b/tests/generator-Tests/expected.xaji/InterfaceMethodsConflict/Xamarin.Test.II2.cs @@ -48,15 +48,23 @@ public II2Invoker (IntPtr handle, JniHandleOwnership transfer) : base (handle, t #pragma warning disable 0169 static Delegate GetCloseHandler () { - if (cb_close_Close_V == null) - cb_close_Close_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_V (n_Close)); - return cb_close_Close_V; + return cb_close_Close_V ??= new _JniMarshal_PP_V (n_Close); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Close (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.Close (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Close (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/InterfaceMethodsConflict/Xamarin.Test.SomeObject.cs b/tests/generator-Tests/expected.xaji/InterfaceMethodsConflict/Xamarin.Test.SomeObject.cs index 0a7fcc09e..64097f765 100644 --- a/tests/generator-Tests/expected.xaji/InterfaceMethodsConflict/Xamarin.Test.SomeObject.cs +++ b/tests/generator-Tests/expected.xaji/InterfaceMethodsConflict/Xamarin.Test.SomeObject.cs @@ -50,15 +50,23 @@ protected SomeObject (IntPtr javaReference, JniHandleOwnership transfer) : base #pragma warning disable 0169 static Delegate GetCloseHandler () { - if (cb_close_Close_V == null) - cb_close_Close_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_V (n_Close)); - return cb_close_Close_V; + return cb_close_Close_V ??= new _JniMarshal_PP_V (n_Close); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Close (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.Close (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Close (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/InterfaceMethodsConflict/Xamarin.Test.SomeObject2.cs b/tests/generator-Tests/expected.xaji/InterfaceMethodsConflict/Xamarin.Test.SomeObject2.cs index ea751b19e..d90526cfb 100644 --- a/tests/generator-Tests/expected.xaji/InterfaceMethodsConflict/Xamarin.Test.SomeObject2.cs +++ b/tests/generator-Tests/expected.xaji/InterfaceMethodsConflict/Xamarin.Test.SomeObject2.cs @@ -50,15 +50,23 @@ protected SomeObject2 (IntPtr javaReference, JniHandleOwnership transfer) : base #pragma warning disable 0169 static Delegate GetIrrelevantHandler () { - if (cb_irrelevant_Irrelevant_V == null) - cb_irrelevant_Irrelevant_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_V (n_Irrelevant)); - return cb_irrelevant_Irrelevant_V; + return cb_irrelevant_Irrelevant_V ??= new _JniMarshal_PP_V (n_Irrelevant); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Irrelevant (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.Irrelevant (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Irrelevant (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -77,15 +85,23 @@ public virtual unsafe void Irrelevant () #pragma warning disable 0169 static Delegate GetCloseHandler () { - if (cb_close_Close_V == null) - cb_close_Close_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_V (n_Close)); - return cb_close_Close_V; + return cb_close_Close_V ??= new _JniMarshal_PP_V (n_Close); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Close (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.Close (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Close (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/NestedTypes/Xamarin.Test.NotificationCompatBase.cs b/tests/generator-Tests/expected.xaji/NestedTypes/Xamarin.Test.NotificationCompatBase.cs index 0b72d3b9c..f0d3dc4cf 100644 --- a/tests/generator-Tests/expected.xaji/NestedTypes/Xamarin.Test.NotificationCompatBase.cs +++ b/tests/generator-Tests/expected.xaji/NestedTypes/Xamarin.Test.NotificationCompatBase.cs @@ -64,15 +64,24 @@ public IFactoryInvoker (IntPtr handle, JniHandleOwnership transfer) : base (hand #pragma warning disable 0169 static Delegate GetBuild_IHandler () { - if (cb_build_Build_I_Lxamarin_test_NotificationCompatBase_Action_ == null) - cb_build_Build_I_Lxamarin_test_NotificationCompatBase_Action_ = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPI_L (n_Build_I)); - return cb_build_Build_I_Lxamarin_test_NotificationCompatBase_Action_; + return cb_build_Build_I_Lxamarin_test_NotificationCompatBase_Action_ ??= new _JniMarshal_PPI_L (n_Build_I); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_Build_I (IntPtr jnienv, IntPtr native__this, int p0) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return JNIEnv.ToLocalJniHandle (__this.Build (p0)); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.ToLocalJniHandle (__this.Build (p0)); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/NormalMethods/Xamarin.Test.A.cs b/tests/generator-Tests/expected.xaji/NormalMethods/Xamarin.Test.A.cs index a7b3cf65b..b4bbca942 100644 --- a/tests/generator-Tests/expected.xaji/NormalMethods/Xamarin.Test.A.cs +++ b/tests/generator-Tests/expected.xaji/NormalMethods/Xamarin.Test.A.cs @@ -54,15 +54,24 @@ protected B (IntPtr javaReference, JniHandleOwnership transfer) : base (javaRefe #pragma warning disable 0169 static Delegate GetSetCustomDimension_IHandler () { - if (cb_setCustomDimension_SetCustomDimension_I_Lxamarin_test_A_B_ == null) - cb_setCustomDimension_SetCustomDimension_I_Lxamarin_test_A_B_ = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPI_L (n_SetCustomDimension_I)); - return cb_setCustomDimension_SetCustomDimension_I_Lxamarin_test_A_B_; + return cb_setCustomDimension_SetCustomDimension_I_Lxamarin_test_A_B_ ??= new _JniMarshal_PPI_L (n_SetCustomDimension_I); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_SetCustomDimension_I (IntPtr jnienv, IntPtr native__this, int index) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return JNIEnv.ToLocalJniHandle (__this.SetCustomDimension (index)); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.ToLocalJniHandle (__this.SetCustomDimension (index)); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -114,15 +123,24 @@ protected A (IntPtr javaReference, JniHandleOwnership transfer) : base (javaRefe #pragma warning disable 0169 static Delegate GetGetHandleHandler () { - if (cb_getHandle_GetHandle_I == null) - cb_getHandle_GetHandle_I = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_I (n_GetHandle)); - return cb_getHandle_GetHandle_I; + return cb_getHandle_GetHandle_I ??= new _JniMarshal_PP_I (n_GetHandle); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_GetHandle (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return __this.GetHandle (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return __this.GetHandle (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/NormalMethods/Xamarin.Test.C.cs b/tests/generator-Tests/expected.xaji/NormalMethods/Xamarin.Test.C.cs index 3a26d8276..e5d76dff4 100644 --- a/tests/generator-Tests/expected.xaji/NormalMethods/Xamarin.Test.C.cs +++ b/tests/generator-Tests/expected.xaji/NormalMethods/Xamarin.Test.C.cs @@ -51,15 +51,24 @@ protected C (IntPtr javaReference, JniHandleOwnership transfer) : base (javaRefe #pragma warning disable 0169 static Delegate GetSetCustomDimension_IHandler () { - if (cb_setCustomDimension_SetCustomDimension_I_Lxamarin_test_C_ == null) - cb_setCustomDimension_SetCustomDimension_I_Lxamarin_test_C_ = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPI_L (n_SetCustomDimension_I)); - return cb_setCustomDimension_SetCustomDimension_I_Lxamarin_test_C_; + return cb_setCustomDimension_SetCustomDimension_I_Lxamarin_test_C_ ??= new _JniMarshal_PPI_L (n_SetCustomDimension_I); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_SetCustomDimension_I (IntPtr jnienv, IntPtr native__this, int index) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return JNIEnv.ToLocalJniHandle (__this.SetCustomDimension (index)); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.ToLocalJniHandle (__this.SetCustomDimension (index)); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/NormalMethods/Xamarin.Test.SomeObject.cs b/tests/generator-Tests/expected.xaji/NormalMethods/Xamarin.Test.SomeObject.cs index 4a0ffc6f5..482ac4608 100644 --- a/tests/generator-Tests/expected.xaji/NormalMethods/Xamarin.Test.SomeObject.cs +++ b/tests/generator-Tests/expected.xaji/NormalMethods/Xamarin.Test.SomeObject.cs @@ -70,15 +70,24 @@ public unsafe SomeObject (global::Java.Lang.Class c) : base (IntPtr.Zero, JniHan #pragma warning disable 0169 static Delegate GetGetTypeHandler () { - if (cb_getType_GetType_arrayI == null) - cb_getType_GetType_arrayI = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_L (n_GetType)); - return cb_getType_GetType_arrayI; + return cb_getType_GetType_arrayI ??= new _JniMarshal_PP_L (n_GetType); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_GetType (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return JNIEnv.NewArray (__this.GetType ()); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.NewArray (__this.GetType ()); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -98,18 +107,27 @@ static IntPtr n_GetType (IntPtr jnienv, IntPtr native__this) #pragma warning disable 0169 static Delegate GetHandle_Ljava_lang_Object_Ljava_lang_Throwable_Handler () { - if (cb_handle_Handle_Ljava_lang_Object_Ljava_lang_Throwable__I == null) - cb_handle_Handle_Ljava_lang_Object_Ljava_lang_Throwable__I = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPLL_I (n_Handle_Ljava_lang_Object_Ljava_lang_Throwable_)); - return cb_handle_Handle_Ljava_lang_Object_Ljava_lang_Throwable__I; + return cb_handle_Handle_Ljava_lang_Object_Ljava_lang_Throwable__I ??= new _JniMarshal_PPLL_I (n_Handle_Ljava_lang_Object_Ljava_lang_Throwable_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_Handle_Ljava_lang_Object_Ljava_lang_Throwable_ (IntPtr jnienv, IntPtr native__this, IntPtr native_o, IntPtr native_t) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var o = global::Java.Lang.Object.GetObject (native_o, JniHandleOwnership.DoNotTransfer); - var t = global::Java.Lang.Object.GetObject (native_t, JniHandleOwnership.DoNotTransfer); - int __ret = __this.Handle (o, t); - return __ret; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var o = global::Java.Lang.Object.GetObject (native_o, JniHandleOwnership.DoNotTransfer); + var t = global::Java.Lang.Object.GetObject (native_t, JniHandleOwnership.DoNotTransfer); + int __ret = __this.Handle (o, t); + return __ret; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -134,15 +152,24 @@ static int n_Handle_Ljava_lang_Object_Ljava_lang_Throwable_ (IntPtr jnienv, IntP #pragma warning disable 0169 static Delegate GetIntegerMethodHandler () { - if (cb_IntegerMethod_IntegerMethod_I == null) - cb_IntegerMethod_IntegerMethod_I = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_I (n_IntegerMethod)); - return cb_IntegerMethod_IntegerMethod_I; + return cb_IntegerMethod_IntegerMethod_I ??= new _JniMarshal_PP_I (n_IntegerMethod); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_IntegerMethod (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return __this.IntegerMethod (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return __this.IntegerMethod (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -162,15 +189,23 @@ public virtual unsafe int IntegerMethod () #pragma warning disable 0169 static Delegate GetVoidMethodHandler () { - if (cb_VoidMethod_VoidMethod_V == null) - cb_VoidMethod_VoidMethod_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_V (n_VoidMethod)); - return cb_VoidMethod_VoidMethod_V; + return cb_VoidMethod_VoidMethod_V ??= new _JniMarshal_PP_V (n_VoidMethod); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_VoidMethod (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.VoidMethod (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.VoidMethod (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -189,15 +224,24 @@ public virtual unsafe void VoidMethod () #pragma warning disable 0169 static Delegate GetStringMethodHandler () { - if (cb_StringMethod_StringMethod_Ljava_lang_String_ == null) - cb_StringMethod_StringMethod_Ljava_lang_String_ = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_L (n_StringMethod)); - return cb_StringMethod_StringMethod_Ljava_lang_String_; + return cb_StringMethod_StringMethod_Ljava_lang_String_ ??= new _JniMarshal_PP_L (n_StringMethod); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_StringMethod (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return JNIEnv.NewString (__this.StringMethod ()); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.NewString (__this.StringMethod ()); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -217,15 +261,24 @@ public virtual unsafe string StringMethod () #pragma warning disable 0169 static Delegate GetObjectMethodHandler () { - if (cb_ObjectMethod_ObjectMethod_Ljava_lang_Object_ == null) - cb_ObjectMethod_ObjectMethod_Ljava_lang_Object_ = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_L (n_ObjectMethod)); - return cb_ObjectMethod_ObjectMethod_Ljava_lang_Object_; + return cb_ObjectMethod_ObjectMethod_Ljava_lang_Object_ ??= new _JniMarshal_PP_L (n_ObjectMethod); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_ObjectMethod (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return JNIEnv.ToLocalJniHandle (__this.ObjectMethod ()); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.ToLocalJniHandle (__this.ObjectMethod ()); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -245,17 +298,25 @@ static IntPtr n_ObjectMethod (IntPtr jnienv, IntPtr native__this) #pragma warning disable 0169 static Delegate GetVoidMethodWithParams_Ljava_lang_String_ILjava_lang_Object_Handler () { - if (cb_VoidMethodWithParams_VoidMethodWithParams_Ljava_lang_String_ILjava_lang_Object__V == null) - cb_VoidMethodWithParams_VoidMethodWithParams_Ljava_lang_String_ILjava_lang_Object__V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPLIL_V (n_VoidMethodWithParams_Ljava_lang_String_ILjava_lang_Object_)); - return cb_VoidMethodWithParams_VoidMethodWithParams_Ljava_lang_String_ILjava_lang_Object__V; + return cb_VoidMethodWithParams_VoidMethodWithParams_Ljava_lang_String_ILjava_lang_Object__V ??= new _JniMarshal_PPLIL_V (n_VoidMethodWithParams_Ljava_lang_String_ILjava_lang_Object_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_VoidMethodWithParams_Ljava_lang_String_ILjava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_astring, int anint, IntPtr native_anObject) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var astring = JNIEnv.GetString (native_astring, JniHandleOwnership.DoNotTransfer); - var anObject = global::Java.Lang.Object.GetObject (native_anObject, JniHandleOwnership.DoNotTransfer); - __this.VoidMethodWithParams (astring, anint, anObject); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var astring = JNIEnv.GetString (native_astring, JniHandleOwnership.DoNotTransfer); + var anObject = global::Java.Lang.Object.GetObject (native_anObject, JniHandleOwnership.DoNotTransfer); + __this.VoidMethodWithParams (astring, anint, anObject); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -282,16 +343,25 @@ public virtual unsafe void VoidMethodWithParams (string astring, int anint, glob [global::System.Obsolete] static Delegate GetObsoleteMethodHandler () { - if (cb_ObsoleteMethod_ObsoleteMethod_I == null) - cb_ObsoleteMethod_ObsoleteMethod_I = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_I (n_ObsoleteMethod)); - return cb_ObsoleteMethod_ObsoleteMethod_I; + return cb_ObsoleteMethod_ObsoleteMethod_I ??= new _JniMarshal_PP_I (n_ObsoleteMethod); } [global::System.Obsolete] + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_ObsoleteMethod (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return __this.ObsoleteMethod (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return __this.ObsoleteMethod (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -312,16 +382,24 @@ public virtual unsafe int ObsoleteMethod () #pragma warning disable 0169 static Delegate GetArrayListTest_Ljava_util_ArrayList_Handler () { - if (cb_ArrayListTest_ArrayListTest_Ljava_util_ArrayList__V == null) - cb_ArrayListTest_ArrayListTest_Ljava_util_ArrayList__V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_V (n_ArrayListTest_Ljava_util_ArrayList_)); - return cb_ArrayListTest_ArrayListTest_Ljava_util_ArrayList__V; + return cb_ArrayListTest_ArrayListTest_Ljava_util_ArrayList__V ??= new _JniMarshal_PPL_V (n_ArrayListTest_Ljava_util_ArrayList_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_ArrayListTest_Ljava_util_ArrayList_ (IntPtr jnienv, IntPtr native__this, IntPtr native_p0) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var p0 = global::Android.Runtime.JavaList.FromJniHandle (native_p0, JniHandleOwnership.DoNotTransfer); - __this.ArrayListTest (p0); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var p0 = global::Android.Runtime.JavaList.FromJniHandle (native_p0, JniHandleOwnership.DoNotTransfer); + __this.ArrayListTest (p0); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/NormalProperties/Xamarin.Test.SomeObject.cs b/tests/generator-Tests/expected.xaji/NormalProperties/Xamarin.Test.SomeObject.cs index 4b2071473..9fe0940b6 100644 --- a/tests/generator-Tests/expected.xaji/NormalProperties/Xamarin.Test.SomeObject.cs +++ b/tests/generator-Tests/expected.xaji/NormalProperties/Xamarin.Test.SomeObject.cs @@ -50,15 +50,24 @@ protected SomeObject (IntPtr javaReference, JniHandleOwnership transfer) : base #pragma warning disable 0169 static Delegate GetGetSomeIntegerHandler () { - if (cb_getSomeInteger_GetSomeInteger_I == null) - cb_getSomeInteger_GetSomeInteger_I = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_I (n_GetSomeInteger)); - return cb_getSomeInteger_GetSomeInteger_I; + return cb_getSomeInteger_GetSomeInteger_I ??= new _JniMarshal_PP_I (n_GetSomeInteger); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_GetSomeInteger (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return __this.SomeInteger; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return __this.SomeInteger; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -66,15 +75,23 @@ static int n_GetSomeInteger (IntPtr jnienv, IntPtr native__this) #pragma warning disable 0169 static Delegate GetSetSomeInteger_IHandler () { - if (cb_setSomeInteger_SetSomeInteger_I_V == null) - cb_setSomeInteger_SetSomeInteger_I_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPI_V (n_SetSomeInteger_I)); - return cb_setSomeInteger_SetSomeInteger_I_V; + return cb_setSomeInteger_SetSomeInteger_I_V ??= new _JniMarshal_PPI_V (n_SetSomeInteger_I); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_SetSomeInteger_I (IntPtr jnienv, IntPtr native__this, int newvalue) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.SomeInteger = newvalue; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.SomeInteger = newvalue; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -92,15 +109,24 @@ public abstract int SomeInteger { #pragma warning disable 0169 static Delegate GetGetSomeObjectPropertyHandler () { - if (cb_getSomeObjectProperty_GetSomeObjectProperty_Ljava_lang_Object_ == null) - cb_getSomeObjectProperty_GetSomeObjectProperty_Ljava_lang_Object_ = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_L (n_GetSomeObjectProperty)); - return cb_getSomeObjectProperty_GetSomeObjectProperty_Ljava_lang_Object_; + return cb_getSomeObjectProperty_GetSomeObjectProperty_Ljava_lang_Object_ ??= new _JniMarshal_PP_L (n_GetSomeObjectProperty); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_GetSomeObjectProperty (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return JNIEnv.ToLocalJniHandle (__this.SomeObjectProperty); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.ToLocalJniHandle (__this.SomeObjectProperty); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -108,16 +134,24 @@ static IntPtr n_GetSomeObjectProperty (IntPtr jnienv, IntPtr native__this) #pragma warning disable 0169 static Delegate GetSetSomeObjectProperty_Ljava_lang_Object_Handler () { - if (cb_setSomeObjectProperty_SetSomeObjectProperty_Ljava_lang_Object__V == null) - cb_setSomeObjectProperty_SetSomeObjectProperty_Ljava_lang_Object__V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_V (n_SetSomeObjectProperty_Ljava_lang_Object_)); - return cb_setSomeObjectProperty_SetSomeObjectProperty_Ljava_lang_Object__V; + return cb_setSomeObjectProperty_SetSomeObjectProperty_Ljava_lang_Object__V ??= new _JniMarshal_PPL_V (n_SetSomeObjectProperty_Ljava_lang_Object_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_SetSomeObjectProperty_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_newvalue) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var newvalue = global::Java.Lang.Object.GetObject (native_newvalue, JniHandleOwnership.DoNotTransfer); - __this.SomeObjectProperty = newvalue; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var newvalue = global::Java.Lang.Object.GetObject (native_newvalue, JniHandleOwnership.DoNotTransfer); + __this.SomeObjectProperty = newvalue; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -135,15 +169,24 @@ static void n_SetSomeObjectProperty_Ljava_lang_Object_ (IntPtr jnienv, IntPtr na #pragma warning disable 0169 static Delegate GetGetSomeStringHandler () { - if (cb_getSomeString_GetSomeString_Ljava_lang_String_ == null) - cb_getSomeString_GetSomeString_Ljava_lang_String_ = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_L (n_GetSomeString)); - return cb_getSomeString_GetSomeString_Ljava_lang_String_; + return cb_getSomeString_GetSomeString_Ljava_lang_String_ ??= new _JniMarshal_PP_L (n_GetSomeString); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_GetSomeString (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return JNIEnv.NewString (__this.SomeString); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.NewString (__this.SomeString); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -151,16 +194,24 @@ static IntPtr n_GetSomeString (IntPtr jnienv, IntPtr native__this) #pragma warning disable 0169 static Delegate GetSetSomeString_Ljava_lang_String_Handler () { - if (cb_setSomeString_SetSomeString_Ljava_lang_String__V == null) - cb_setSomeString_SetSomeString_Ljava_lang_String__V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_V (n_SetSomeString_Ljava_lang_String_)); - return cb_setSomeString_SetSomeString_Ljava_lang_String__V; + return cb_setSomeString_SetSomeString_Ljava_lang_String__V ??= new _JniMarshal_PPL_V (n_SetSomeString_Ljava_lang_String_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_SetSomeString_Ljava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native_newvalue) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var newvalue = JNIEnv.GetString (native_newvalue, JniHandleOwnership.DoNotTransfer); - __this.SomeString = newvalue; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var newvalue = JNIEnv.GetString (native_newvalue, JniHandleOwnership.DoNotTransfer); + __this.SomeString = newvalue; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/ParameterXPath/Xamarin.Test.A.cs b/tests/generator-Tests/expected.xaji/ParameterXPath/Xamarin.Test.A.cs index f0f2dfd85..8e30fc67a 100644 --- a/tests/generator-Tests/expected.xaji/ParameterXPath/Xamarin.Test.A.cs +++ b/tests/generator-Tests/expected.xaji/ParameterXPath/Xamarin.Test.A.cs @@ -51,16 +51,24 @@ protected A (IntPtr javaReference, JniHandleOwnership transfer) : base (javaRefe #pragma warning disable 0169 static Delegate GetSetA_Ljava_lang_Object_Handler () { - if (cb_setA_SetA_Ljava_lang_Object__V == null) - cb_setA_SetA_Ljava_lang_Object__V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_V (n_SetA_Ljava_lang_Object_)); - return cb_setA_SetA_Ljava_lang_Object__V; + return cb_setA_SetA_Ljava_lang_Object__V ??= new _JniMarshal_PPL_V (n_SetA_Ljava_lang_Object_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_SetA_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_adapter) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var adapter = global::Java.Lang.Object.GetObject (native_adapter, JniHandleOwnership.DoNotTransfer); - __this.SetA (adapter); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var adapter = global::Java.Lang.Object.GetObject (native_adapter, JniHandleOwnership.DoNotTransfer); + __this.SetA (adapter); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -84,16 +92,24 @@ public virtual unsafe void SetA (global::Java.Lang.Object adapter) #pragma warning disable 0169 static Delegate GetListTest_Ljava_util_List_Handler () { - if (cb_listTest_ListTest_Ljava_util_List__V == null) - cb_listTest_ListTest_Ljava_util_List__V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_V (n_ListTest_Ljava_util_List_)); - return cb_listTest_ListTest_Ljava_util_List__V; + return cb_listTest_ListTest_Ljava_util_List__V ??= new _JniMarshal_PPL_V (n_ListTest_Ljava_util_List_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_ListTest_Ljava_util_List_ (IntPtr jnienv, IntPtr native__this, IntPtr native_p0) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var p0 = global::Android.Runtime.JavaList.FromJniHandle (native_p0, JniHandleOwnership.DoNotTransfer); - __this.ListTest (p0); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var p0 = global::Android.Runtime.JavaList.FromJniHandle (native_p0, JniHandleOwnership.DoNotTransfer); + __this.ListTest (p0); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/Streams/Java.IO.FilterOutputStream.cs b/tests/generator-Tests/expected.xaji/Streams/Java.IO.FilterOutputStream.cs index f2ff5e0e8..d7a6eaab4 100644 --- a/tests/generator-Tests/expected.xaji/Streams/Java.IO.FilterOutputStream.cs +++ b/tests/generator-Tests/expected.xaji/Streams/Java.IO.FilterOutputStream.cs @@ -72,15 +72,23 @@ public unsafe FilterOutputStream (global::System.IO.Stream @out) : base (IntPtr. #pragma warning disable 0169 static Delegate GetWrite_IHandler () { - if (cb_write_Write_I_V == null) - cb_write_Write_I_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPI_V (n_Write_I)); - return cb_write_Write_I_V; + return cb_write_Write_I_V ??= new _JniMarshal_PPI_V (n_Write_I); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Write_I (IntPtr jnienv, IntPtr native__this, int oneByte) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.Write (oneByte); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Write (oneByte); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/Streams/Java.IO.IOException.cs b/tests/generator-Tests/expected.xaji/Streams/Java.IO.IOException.cs index b9777d674..6078b58ac 100644 --- a/tests/generator-Tests/expected.xaji/Streams/Java.IO.IOException.cs +++ b/tests/generator-Tests/expected.xaji/Streams/Java.IO.IOException.cs @@ -50,15 +50,23 @@ protected IOException (IntPtr javaReference, JniHandleOwnership transfer) : base #pragma warning disable 0169 static Delegate GetPrintStackTraceHandler () { - if (cb_printStackTrace_PrintStackTrace_V == null) - cb_printStackTrace_PrintStackTrace_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_V (n_PrintStackTrace)); - return cb_printStackTrace_PrintStackTrace_V; + return cb_printStackTrace_PrintStackTrace_V ??= new _JniMarshal_PP_V (n_PrintStackTrace); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_PrintStackTrace (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.PrintStackTrace (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.PrintStackTrace (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/Streams/Java.IO.InputStream.cs b/tests/generator-Tests/expected.xaji/Streams/Java.IO.InputStream.cs index c33b5fe16..b785e84ae 100644 --- a/tests/generator-Tests/expected.xaji/Streams/Java.IO.InputStream.cs +++ b/tests/generator-Tests/expected.xaji/Streams/Java.IO.InputStream.cs @@ -67,15 +67,24 @@ public unsafe InputStream () : base (IntPtr.Zero, JniHandleOwnership.DoNotTransf #pragma warning disable 0169 static Delegate GetAvailableHandler () { - if (cb_available_Available_I == null) - cb_available_Available_I = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_I (n_Available)); - return cb_available_Available_I; + return cb_available_Available_I ??= new _JniMarshal_PP_I (n_Available); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_Available (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return __this.Available (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return __this.Available (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -95,15 +104,23 @@ public virtual unsafe int Available () #pragma warning disable 0169 static Delegate GetCloseHandler () { - if (cb_close_Close_V == null) - cb_close_Close_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_V (n_Close)); - return cb_close_Close_V; + return cb_close_Close_V ??= new _JniMarshal_PP_V (n_Close); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Close (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.Close (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Close (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -122,15 +139,23 @@ public virtual unsafe void Close () #pragma warning disable 0169 static Delegate GetMark_IHandler () { - if (cb_mark_Mark_I_V == null) - cb_mark_Mark_I_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPI_V (n_Mark_I)); - return cb_mark_Mark_I_V; + return cb_mark_Mark_I_V ??= new _JniMarshal_PPI_V (n_Mark_I); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Mark_I (IntPtr jnienv, IntPtr native__this, int readlimit) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.Mark (readlimit); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Mark (readlimit); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -151,15 +176,24 @@ public virtual unsafe void Mark (int readlimit) #pragma warning disable 0169 static Delegate GetMarkSupportedHandler () { - if (cb_markSupported_MarkSupported_Z == null) - cb_markSupported_MarkSupported_Z = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_Z (n_MarkSupported)); - return cb_markSupported_MarkSupported_Z; + return cb_markSupported_MarkSupported_Z ??= new _JniMarshal_PP_Z (n_MarkSupported); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static bool n_MarkSupported (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return __this.MarkSupported (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return __this.MarkSupported (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -179,15 +213,24 @@ public virtual unsafe bool MarkSupported () #pragma warning disable 0169 static Delegate GetReadHandler () { - if (cb_read_Read_I == null) - cb_read_Read_I = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_I (n_Read)); - return cb_read_Read_I; + return cb_read_Read_I ??= new _JniMarshal_PP_I (n_Read); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_Read (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return __this.Read (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return __this.Read (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -199,19 +242,28 @@ static int n_Read (IntPtr jnienv, IntPtr native__this) #pragma warning disable 0169 static Delegate GetRead_arrayBHandler () { - if (cb_read_Read_arrayB_I == null) - cb_read_Read_arrayB_I = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_I (n_Read_arrayB)); - return cb_read_Read_arrayB_I; + return cb_read_Read_arrayB_I ??= new _JniMarshal_PPL_I (n_Read_arrayB); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_Read_arrayB (IntPtr jnienv, IntPtr native__this, IntPtr native_buffer) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var buffer = (byte[]) JNIEnv.GetArray (native_buffer, JniHandleOwnership.DoNotTransfer, typeof (byte)); - int __ret = __this.Read (buffer); - if (buffer != null) - JNIEnv.CopyArray (buffer, native_buffer); - return __ret; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var buffer = (byte[]) JNIEnv.GetArray (native_buffer, JniHandleOwnership.DoNotTransfer, typeof (byte)); + int __ret = __this.Read (buffer); + if (buffer != null) + JNIEnv.CopyArray (buffer, native_buffer); + return __ret; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -239,19 +291,28 @@ public virtual unsafe int Read (byte[] buffer) #pragma warning disable 0169 static Delegate GetRead_arrayBIIHandler () { - if (cb_read_Read_arrayBII_I == null) - cb_read_Read_arrayBII_I = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPLII_I (n_Read_arrayBII)); - return cb_read_Read_arrayBII_I; + return cb_read_Read_arrayBII_I ??= new _JniMarshal_PPLII_I (n_Read_arrayBII); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_Read_arrayBII (IntPtr jnienv, IntPtr native__this, IntPtr native_buffer, int byteOffset, int byteCount) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var buffer = (byte[]) JNIEnv.GetArray (native_buffer, JniHandleOwnership.DoNotTransfer, typeof (byte)); - int __ret = __this.Read (buffer, byteOffset, byteCount); - if (buffer != null) - JNIEnv.CopyArray (buffer, native_buffer); - return __ret; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var buffer = (byte[]) JNIEnv.GetArray (native_buffer, JniHandleOwnership.DoNotTransfer, typeof (byte)); + int __ret = __this.Read (buffer, byteOffset, byteCount); + if (buffer != null) + JNIEnv.CopyArray (buffer, native_buffer); + return __ret; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -281,15 +342,23 @@ public virtual unsafe int Read (byte[] buffer, int byteOffset, int byteCount) #pragma warning disable 0169 static Delegate GetResetHandler () { - if (cb_reset_Reset_V == null) - cb_reset_Reset_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_V (n_Reset)); - return cb_reset_Reset_V; + return cb_reset_Reset_V ??= new _JniMarshal_PP_V (n_Reset); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Reset (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.Reset (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Reset (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -308,15 +377,24 @@ public virtual unsafe void Reset () #pragma warning disable 0169 static Delegate GetSkip_JHandler () { - if (cb_skip_Skip_J_J == null) - cb_skip_Skip_J_J = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPJ_J (n_Skip_J)); - return cb_skip_Skip_J_J; + return cb_skip_Skip_J_J ??= new _JniMarshal_PPJ_J (n_Skip_J); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static long n_Skip_J (IntPtr jnienv, IntPtr native__this, long byteCount) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return __this.Skip (byteCount); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return __this.Skip (byteCount); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/Streams/Java.IO.OutputStream.cs b/tests/generator-Tests/expected.xaji/Streams/Java.IO.OutputStream.cs index 125cb5ce3..0fe6cb911 100644 --- a/tests/generator-Tests/expected.xaji/Streams/Java.IO.OutputStream.cs +++ b/tests/generator-Tests/expected.xaji/Streams/Java.IO.OutputStream.cs @@ -67,15 +67,23 @@ public unsafe OutputStream () : base (IntPtr.Zero, JniHandleOwnership.DoNotTrans #pragma warning disable 0169 static Delegate GetCloseHandler () { - if (cb_close_Close_V == null) - cb_close_Close_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_V (n_Close)); - return cb_close_Close_V; + return cb_close_Close_V ??= new _JniMarshal_PP_V (n_Close); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Close (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.Close (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Close (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -94,15 +102,23 @@ public virtual unsafe void Close () #pragma warning disable 0169 static Delegate GetFlushHandler () { - if (cb_flush_Flush_V == null) - cb_flush_Flush_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_V (n_Flush)); - return cb_flush_Flush_V; + return cb_flush_Flush_V ??= new _JniMarshal_PP_V (n_Flush); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Flush (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.Flush (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Flush (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -121,18 +137,26 @@ public virtual unsafe void Flush () #pragma warning disable 0169 static Delegate GetWrite_arrayBHandler () { - if (cb_write_Write_arrayB_V == null) - cb_write_Write_arrayB_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_V (n_Write_arrayB)); - return cb_write_Write_arrayB_V; + return cb_write_Write_arrayB_V ??= new _JniMarshal_PPL_V (n_Write_arrayB); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Write_arrayB (IntPtr jnienv, IntPtr native__this, IntPtr native_buffer) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var buffer = (byte[]) JNIEnv.GetArray (native_buffer, JniHandleOwnership.DoNotTransfer, typeof (byte)); - __this.Write (buffer); - if (buffer != null) - JNIEnv.CopyArray (buffer, native_buffer); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var buffer = (byte[]) JNIEnv.GetArray (native_buffer, JniHandleOwnership.DoNotTransfer, typeof (byte)); + __this.Write (buffer); + if (buffer != null) + JNIEnv.CopyArray (buffer, native_buffer); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -159,18 +183,26 @@ public virtual unsafe void Write (byte[] buffer) #pragma warning disable 0169 static Delegate GetWrite_arrayBIIHandler () { - if (cb_write_Write_arrayBII_V == null) - cb_write_Write_arrayBII_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPLII_V (n_Write_arrayBII)); - return cb_write_Write_arrayBII_V; + return cb_write_Write_arrayBII_V ??= new _JniMarshal_PPLII_V (n_Write_arrayBII); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Write_arrayBII (IntPtr jnienv, IntPtr native__this, IntPtr native_buffer, int offset, int count) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var buffer = (byte[]) JNIEnv.GetArray (native_buffer, JniHandleOwnership.DoNotTransfer, typeof (byte)); - __this.Write (buffer, offset, count); - if (buffer != null) - JNIEnv.CopyArray (buffer, native_buffer); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var buffer = (byte[]) JNIEnv.GetArray (native_buffer, JniHandleOwnership.DoNotTransfer, typeof (byte)); + __this.Write (buffer, offset, count); + if (buffer != null) + JNIEnv.CopyArray (buffer, native_buffer); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -199,15 +231,23 @@ public virtual unsafe void Write (byte[] buffer, int offset, int count) #pragma warning disable 0169 static Delegate GetWrite_IHandler () { - if (cb_write_Write_I_V == null) - cb_write_Write_I_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPI_V (n_Write_I)); - return cb_write_Write_I_V; + return cb_write_Write_I_V ??= new _JniMarshal_PPI_V (n_Write_I); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Write_I (IntPtr jnienv, IntPtr native__this, int oneByte) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.Write (oneByte); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Write (oneByte); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/Streams/Java.Lang.Throwable.cs b/tests/generator-Tests/expected.xaji/Streams/Java.Lang.Throwable.cs index 3485bf63c..6f0b2d774 100644 --- a/tests/generator-Tests/expected.xaji/Streams/Java.Lang.Throwable.cs +++ b/tests/generator-Tests/expected.xaji/Streams/Java.Lang.Throwable.cs @@ -28,15 +28,24 @@ internal static IntPtr class_ref { #pragma warning disable 0169 static Delegate GetGetMessageHandler () { - if (cb_getMessage_GetMessage_Ljava_lang_String_ == null) - cb_getMessage_GetMessage_Ljava_lang_String_ = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_L (n_GetMessage)); - return cb_getMessage_GetMessage_Ljava_lang_String_; + return cb_getMessage_GetMessage_Ljava_lang_String_ ??= new _JniMarshal_PP_L (n_GetMessage); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_GetMessage (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return JNIEnv.NewString (__this.Message); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.NewString (__this.Message); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/TestInterface/ClassWithoutNamespace.cs b/tests/generator-Tests/expected.xaji/TestInterface/ClassWithoutNamespace.cs index 42f25f2e4..367167188 100644 --- a/tests/generator-Tests/expected.xaji/TestInterface/ClassWithoutNamespace.cs +++ b/tests/generator-Tests/expected.xaji/TestInterface/ClassWithoutNamespace.cs @@ -65,15 +65,23 @@ public unsafe ClassWithoutNamespace () : base (IntPtr.Zero, JniHandleOwnership.D #pragma warning disable 0169 static Delegate GetFooHandler () { - if (cb_Foo_Foo_V == null) - cb_Foo_Foo_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_V (n_Foo)); - return cb_Foo_Foo_V; + return cb_Foo_Foo_V ??= new _JniMarshal_PP_V (n_Foo); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Foo (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.Foo (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Foo (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/TestInterface/IInterfaceWithoutNamespace.cs b/tests/generator-Tests/expected.xaji/TestInterface/IInterfaceWithoutNamespace.cs index 77e0d32f4..e6740dd09 100644 --- a/tests/generator-Tests/expected.xaji/TestInterface/IInterfaceWithoutNamespace.cs +++ b/tests/generator-Tests/expected.xaji/TestInterface/IInterfaceWithoutNamespace.cs @@ -46,15 +46,23 @@ public IInterfaceWithoutNamespaceInvoker (IntPtr handle, JniHandleOwnership tran #pragma warning disable 0169 static Delegate GetFooHandler () { - if (cb_Foo_Foo_V == null) - cb_Foo_Foo_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_V (n_Foo)); - return cb_Foo_Foo_V; + return cb_Foo_Foo_V ??= new _JniMarshal_PP_V (n_Foo); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Foo (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.Foo (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Foo (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/TestInterface/Java.Util.ICollection.cs b/tests/generator-Tests/expected.xaji/TestInterface/Java.Util.ICollection.cs index d0ecf3c2a..14f70b75d 100644 --- a/tests/generator-Tests/expected.xaji/TestInterface/Java.Util.ICollection.cs +++ b/tests/generator-Tests/expected.xaji/TestInterface/Java.Util.ICollection.cs @@ -53,17 +53,26 @@ public ICollectionInvoker (IntPtr handle, JniHandleOwnership transfer) : base (h #pragma warning disable 0169 static Delegate GetAdd_Ljava_lang_Object_Handler () { - if (cb_add_Add_Ljava_lang_Object__Z == null) - cb_add_Add_Ljava_lang_Object__Z = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_Z (n_Add_Ljava_lang_Object_)); - return cb_add_Add_Ljava_lang_Object__Z; + return cb_add_Add_Ljava_lang_Object__Z ??= new _JniMarshal_PPL_Z (n_Add_Ljava_lang_Object_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static bool n_Add_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_e) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var e = global::Java.Lang.Object.GetObject (native_e, JniHandleOwnership.DoNotTransfer); - bool __ret = __this.Add (e); - return __ret; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var e = global::Java.Lang.Object.GetObject (native_e, JniHandleOwnership.DoNotTransfer); + bool __ret = __this.Add (e); + return __ret; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -86,15 +95,23 @@ public unsafe bool Add (global::Java.Lang.Object e) #pragma warning disable 0169 static Delegate GetClearHandler () { - if (cb_clear_Clear_V == null) - cb_clear_Clear_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_V (n_Clear)); - return cb_clear_Clear_V; + return cb_clear_Clear_V ??= new _JniMarshal_PP_V (n_Clear); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Clear (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.Clear (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Clear (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/TestInterface/Java.Util.IDeque.cs b/tests/generator-Tests/expected.xaji/TestInterface/Java.Util.IDeque.cs index 2253c2480..51deba137 100644 --- a/tests/generator-Tests/expected.xaji/TestInterface/Java.Util.IDeque.cs +++ b/tests/generator-Tests/expected.xaji/TestInterface/Java.Util.IDeque.cs @@ -53,17 +53,26 @@ public IDequeInvoker (IntPtr handle, JniHandleOwnership transfer) : base (handle #pragma warning disable 0169 static Delegate GetAdd_Ljava_lang_Object_Handler () { - if (cb_add_Add_Ljava_lang_Object__Z == null) - cb_add_Add_Ljava_lang_Object__Z = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_Z (n_Add_Ljava_lang_Object_)); - return cb_add_Add_Ljava_lang_Object__Z; + return cb_add_Add_Ljava_lang_Object__Z ??= new _JniMarshal_PPL_Z (n_Add_Ljava_lang_Object_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static bool n_Add_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_e) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var e = global::Java.Lang.Object.GetObject (native_e, JniHandleOwnership.DoNotTransfer); - bool __ret = __this.Add (e); - return __ret; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var e = global::Java.Lang.Object.GetObject (native_e, JniHandleOwnership.DoNotTransfer); + bool __ret = __this.Add (e); + return __ret; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -86,15 +95,23 @@ public unsafe bool Add (global::Java.Lang.Object e) #pragma warning disable 0169 static Delegate GetClearHandler () { - if (cb_clear_Clear_V == null) - cb_clear_Clear_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_V (n_Clear)); - return cb_clear_Clear_V; + return cb_clear_Clear_V ??= new _JniMarshal_PP_V (n_Clear); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Clear (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.Clear (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Clear (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/TestInterface/Java.Util.IQueue.cs b/tests/generator-Tests/expected.xaji/TestInterface/Java.Util.IQueue.cs index 22715da9e..f17456d61 100644 --- a/tests/generator-Tests/expected.xaji/TestInterface/Java.Util.IQueue.cs +++ b/tests/generator-Tests/expected.xaji/TestInterface/Java.Util.IQueue.cs @@ -51,17 +51,26 @@ public IQueueInvoker (IntPtr handle, JniHandleOwnership transfer) : base (handle #pragma warning disable 0169 static Delegate GetAdd_Ljava_lang_Object_Handler () { - if (cb_add_Add_Ljava_lang_Object__Z == null) - cb_add_Add_Ljava_lang_Object__Z = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_Z (n_Add_Ljava_lang_Object_)); - return cb_add_Add_Ljava_lang_Object__Z; + return cb_add_Add_Ljava_lang_Object__Z ??= new _JniMarshal_PPL_Z (n_Add_Ljava_lang_Object_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static bool n_Add_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_e) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var e = global::Java.Lang.Object.GetObject (native_e, JniHandleOwnership.DoNotTransfer); - bool __ret = __this.Add (e); - return __ret; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var e = global::Java.Lang.Object.GetObject (native_e, JniHandleOwnership.DoNotTransfer); + bool __ret = __this.Add (e); + return __ret; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -84,15 +93,23 @@ public unsafe bool Add (global::Java.Lang.Object e) #pragma warning disable 0169 static Delegate GetClearHandler () { - if (cb_clear_Clear_V == null) - cb_clear_Clear_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_V (n_Clear)); - return cb_clear_Clear_V; + return cb_clear_Clear_V ??= new _JniMarshal_PP_V (n_Clear); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Clear (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - __this.Clear (); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Clear (); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.GenericImplementation.cs b/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.GenericImplementation.cs index bb9ad3ab3..fb80be61d 100644 --- a/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.GenericImplementation.cs +++ b/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.GenericImplementation.cs @@ -67,18 +67,26 @@ public unsafe GenericImplementation () : base (IntPtr.Zero, JniHandleOwnership.D #pragma warning disable 0169 static Delegate GetSetObject_arrayBHandler () { - if (cb_SetObject_SetObject_arrayB_V == null) - cb_SetObject_SetObject_arrayB_V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_V (n_SetObject_arrayB)); - return cb_SetObject_SetObject_arrayB_V; + return cb_SetObject_SetObject_arrayB_V ??= new _JniMarshal_PPL_V (n_SetObject_arrayB); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_SetObject_arrayB (IntPtr jnienv, IntPtr native__this, IntPtr native_value) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var value = (byte[]) JNIEnv.GetArray (native_value, JniHandleOwnership.DoNotTransfer, typeof (byte)); - __this.SetObject (value); - if (value != null) - JNIEnv.CopyArray (value, native_value); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var value = (byte[]) JNIEnv.GetArray (native_value, JniHandleOwnership.DoNotTransfer, typeof (byte)); + __this.SetObject (value); + if (value != null) + JNIEnv.CopyArray (value, native_value); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.GenericObjectPropertyImplementation.cs b/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.GenericObjectPropertyImplementation.cs index f3b3ad260..62641c523 100644 --- a/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.GenericObjectPropertyImplementation.cs +++ b/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.GenericObjectPropertyImplementation.cs @@ -67,15 +67,24 @@ public unsafe GenericObjectPropertyImplementation () : base (IntPtr.Zero, JniHan #pragma warning disable 0169 static Delegate GetGetObjectHandler () { - if (cb_getObject_GetObject_Ljava_lang_Object_ == null) - cb_getObject_GetObject_Ljava_lang_Object_ = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_L (n_GetObject)); - return cb_getObject_GetObject_Ljava_lang_Object_; + return cb_getObject_GetObject_Ljava_lang_Object_ ??= new _JniMarshal_PP_L (n_GetObject); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_GetObject (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return JNIEnv.ToLocalJniHandle (__this.Object); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.ToLocalJniHandle (__this.Object); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -83,16 +92,24 @@ static IntPtr n_GetObject (IntPtr jnienv, IntPtr native__this) #pragma warning disable 0169 static Delegate GetSetObject_Ljava_lang_Object_Handler () { - if (cb_setObject_SetObject_Ljava_lang_Object__V == null) - cb_setObject_SetObject_Ljava_lang_Object__V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_V (n_SetObject_Ljava_lang_Object_)); - return cb_setObject_SetObject_Ljava_lang_Object__V; + return cb_setObject_SetObject_Ljava_lang_Object__V ??= new _JniMarshal_PPL_V (n_SetObject_Ljava_lang_Object_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_SetObject_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native__object) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var @object = global::Java.Lang.Object.GetObject (native__object, JniHandleOwnership.DoNotTransfer); - __this.Object = @object; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var @object = global::Java.Lang.Object.GetObject (native__object, JniHandleOwnership.DoNotTransfer); + __this.Object = @object; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.GenericStringImplementation.cs b/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.GenericStringImplementation.cs index 8b302fdf1..9475a4226 100644 --- a/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.GenericStringImplementation.cs +++ b/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.GenericStringImplementation.cs @@ -67,18 +67,26 @@ public unsafe GenericStringImplementation () : base (IntPtr.Zero, JniHandleOwner #pragma warning disable 0169 static Delegate GetSetObject_arrayLjava_lang_String_Handler () { - if (cb_SetObject_SetObject_arrayLjava_lang_String__V == null) - cb_SetObject_SetObject_arrayLjava_lang_String__V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_V (n_SetObject_arrayLjava_lang_String_)); - return cb_SetObject_SetObject_arrayLjava_lang_String__V; + return cb_SetObject_SetObject_arrayLjava_lang_String__V ??= new _JniMarshal_PPL_V (n_SetObject_arrayLjava_lang_String_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_SetObject_arrayLjava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native_value) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var value = (string[]) JNIEnv.GetArray (native_value, JniHandleOwnership.DoNotTransfer, typeof (string)); - __this.SetObject (value); - if (value != null) - JNIEnv.CopyArray (value, native_value); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var value = (string[]) JNIEnv.GetArray (native_value, JniHandleOwnership.DoNotTransfer, typeof (string)); + __this.SetObject (value); + if (value != null) + JNIEnv.CopyArray (value, native_value); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.GenericStringPropertyImplementation.cs b/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.GenericStringPropertyImplementation.cs index 87c092a78..5670c9cfa 100644 --- a/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.GenericStringPropertyImplementation.cs +++ b/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.GenericStringPropertyImplementation.cs @@ -67,15 +67,24 @@ public unsafe GenericStringPropertyImplementation () : base (IntPtr.Zero, JniHan #pragma warning disable 0169 static Delegate GetGetObjectHandler () { - if (cb_getObject_GetObject_Ljava_lang_String_ == null) - cb_getObject_GetObject_Ljava_lang_String_ = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_L (n_GetObject)); - return cb_getObject_GetObject_Ljava_lang_String_; + return cb_getObject_GetObject_Ljava_lang_String_ ??= new _JniMarshal_PP_L (n_GetObject); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_GetObject (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return JNIEnv.NewString (__this.Object); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.NewString (__this.Object); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -83,16 +92,24 @@ static IntPtr n_GetObject (IntPtr jnienv, IntPtr native__this) #pragma warning disable 0169 static Delegate GetSetObject_Ljava_lang_String_Handler () { - if (cb_SetObject_SetObject_Ljava_lang_String__V == null) - cb_SetObject_SetObject_Ljava_lang_String__V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_V (n_SetObject_Ljava_lang_String_)); - return cb_SetObject_SetObject_Ljava_lang_String__V; + return cb_SetObject_SetObject_Ljava_lang_String__V ??= new _JniMarshal_PPL_V (n_SetObject_Ljava_lang_String_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_SetObject_Ljava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native__object) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var @object = JNIEnv.GetString (native__object, JniHandleOwnership.DoNotTransfer); - __this.Object = @object; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var @object = JNIEnv.GetString (native__object, JniHandleOwnership.DoNotTransfer); + __this.Object = @object; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.IGenericInterface.cs b/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.IGenericInterface.cs index 30efa1d2d..d415fb62e 100644 --- a/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.IGenericInterface.cs +++ b/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.IGenericInterface.cs @@ -49,16 +49,24 @@ public IGenericInterfaceInvoker (IntPtr handle, JniHandleOwnership transfer) : b #pragma warning disable 0169 static Delegate GetSetObject_Ljava_lang_Object_Handler () { - if (cb_SetObject_SetObject_Ljava_lang_Object__V == null) - cb_SetObject_SetObject_Ljava_lang_Object__V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_V (n_SetObject_Ljava_lang_Object_)); - return cb_SetObject_SetObject_Ljava_lang_Object__V; + return cb_SetObject_SetObject_Ljava_lang_Object__V ??= new _JniMarshal_PPL_V (n_SetObject_Ljava_lang_Object_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_SetObject_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_value) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var value = global::Java.Lang.Object.GetObject (native_value, JniHandleOwnership.DoNotTransfer); - __this.SetObject (value); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var value = global::Java.Lang.Object.GetObject (native_value, JniHandleOwnership.DoNotTransfer); + __this.SetObject (value); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.IGenericPropertyInterface.cs b/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.IGenericPropertyInterface.cs index 71666dfe8..0ea2d290e 100644 --- a/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.IGenericPropertyInterface.cs +++ b/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.IGenericPropertyInterface.cs @@ -55,15 +55,24 @@ public IGenericPropertyInterfaceInvoker (IntPtr handle, JniHandleOwnership trans #pragma warning disable 0169 static Delegate GetGetObjectHandler () { - if (cb_getObject_GetObject_Ljava_lang_Object_ == null) - cb_getObject_GetObject_Ljava_lang_Object_ = JNINativeWrapper.CreateDelegate (new _JniMarshal_PP_L (n_GetObject)); - return cb_getObject_GetObject_Ljava_lang_Object_; + return cb_getObject_GetObject_Ljava_lang_Object_ ??= new _JniMarshal_PP_L (n_GetObject); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_GetObject (IntPtr jnienv, IntPtr native__this) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - return JNIEnv.ToLocalJniHandle (__this.Object); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.ToLocalJniHandle (__this.Object); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -71,16 +80,24 @@ static IntPtr n_GetObject (IntPtr jnienv, IntPtr native__this) #pragma warning disable 0169 static Delegate GetSetObject_Ljava_lang_Object_Handler () { - if (cb_setObject_SetObject_Ljava_lang_Object__V == null) - cb_setObject_SetObject_Ljava_lang_Object__V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_V (n_SetObject_Ljava_lang_Object_)); - return cb_setObject_SetObject_Ljava_lang_Object__V; + return cb_setObject_SetObject_Ljava_lang_Object__V ??= new _JniMarshal_PPL_V (n_SetObject_Ljava_lang_Object_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_SetObject_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native__object) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var @object = global::Java.Lang.Object.GetObject (native__object, JniHandleOwnership.DoNotTransfer); - __this.Object = @object; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var @object = global::Java.Lang.Object.GetObject (native__object, JniHandleOwnership.DoNotTransfer); + __this.Object = @object; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.ITestInterface.cs b/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.ITestInterface.cs index e82e59ef6..af8a333ee 100644 --- a/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.ITestInterface.cs +++ b/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.ITestInterface.cs @@ -110,17 +110,26 @@ public ITestInterfaceInvoker (IntPtr handle, JniHandleOwnership transfer) : base #pragma warning disable 0169 static Delegate GetGetSpanFlags_Ljava_lang_Object_Handler () { - if (cb_getSpanFlags_GetSpanFlags_Ljava_lang_Object__I == null) - cb_getSpanFlags_GetSpanFlags_Ljava_lang_Object__I = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_I (n_GetSpanFlags_Ljava_lang_Object_)); - return cb_getSpanFlags_GetSpanFlags_Ljava_lang_Object__I; + return cb_getSpanFlags_GetSpanFlags_Ljava_lang_Object__I ??= new _JniMarshal_PPL_I (n_GetSpanFlags_Ljava_lang_Object_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_GetSpanFlags_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_tag) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var tag = global::Java.Lang.Object.GetObject (native_tag, JniHandleOwnership.DoNotTransfer); - int __ret = __this.GetSpanFlags (tag); - return __ret; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var tag = global::Java.Lang.Object.GetObject (native_tag, JniHandleOwnership.DoNotTransfer); + int __ret = __this.GetSpanFlags (tag); + return __ret; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -141,16 +150,24 @@ public unsafe int GetSpanFlags (global::Java.Lang.Object tag) #pragma warning disable 0169 static Delegate GetAppend_Ljava_lang_CharSequence_Handler () { - if (cb_append_Append_Ljava_lang_CharSequence__V == null) - cb_append_Append_Ljava_lang_CharSequence__V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_V (n_Append_Ljava_lang_CharSequence_)); - return cb_append_Append_Ljava_lang_CharSequence__V; + return cb_append_Append_Ljava_lang_CharSequence__V ??= new _JniMarshal_PPL_V (n_Append_Ljava_lang_CharSequence_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Append_Ljava_lang_CharSequence_ (IntPtr jnienv, IntPtr native__this, IntPtr native_value) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var value = global::Java.Lang.Object.GetObject (native_value, JniHandleOwnership.DoNotTransfer); - __this.Append (value); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var value = global::Java.Lang.Object.GetObject (native_value, JniHandleOwnership.DoNotTransfer); + __this.Append (value); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -172,17 +189,26 @@ public unsafe void Append (global::Java.Lang.ICharSequence value) #pragma warning disable 0169 static Delegate GetIdentity_Ljava_lang_CharSequence_Handler () { - if (cb_identity_Identity_Ljava_lang_CharSequence__Ljava_lang_CharSequence_ == null) - cb_identity_Identity_Ljava_lang_CharSequence__Ljava_lang_CharSequence_ = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_L (n_Identity_Ljava_lang_CharSequence_)); - return cb_identity_Identity_Ljava_lang_CharSequence__Ljava_lang_CharSequence_; + return cb_identity_Identity_Ljava_lang_CharSequence__Ljava_lang_CharSequence_ ??= new _JniMarshal_PPL_L (n_Identity_Ljava_lang_CharSequence_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_Identity_Ljava_lang_CharSequence_ (IntPtr jnienv, IntPtr native__this, IntPtr native_value) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var value = global::Java.Lang.Object.GetObject (native_value, JniHandleOwnership.DoNotTransfer); - IntPtr __ret = CharSequence.ToLocalJniHandle (__this.IdentityFormatted (value)); - return __ret; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var value = global::Java.Lang.Object.GetObject (native_value, JniHandleOwnership.DoNotTransfer); + IntPtr __ret = CharSequence.ToLocalJniHandle (__this.IdentityFormatted (value)); + return __ret; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.TestInterfaceImplementation.cs b/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.TestInterfaceImplementation.cs index 9dec6d285..9e636b809 100644 --- a/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.TestInterfaceImplementation.cs +++ b/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.TestInterfaceImplementation.cs @@ -88,17 +88,26 @@ public unsafe TestInterfaceImplementation () : base (IntPtr.Zero, JniHandleOwner #pragma warning disable 0169 static Delegate GetGetSpanFlags_Ljava_lang_Object_Handler () { - if (cb_getSpanFlags_GetSpanFlags_Ljava_lang_Object__I == null) - cb_getSpanFlags_GetSpanFlags_Ljava_lang_Object__I = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_I (n_GetSpanFlags_Ljava_lang_Object_)); - return cb_getSpanFlags_GetSpanFlags_Ljava_lang_Object__I; + return cb_getSpanFlags_GetSpanFlags_Ljava_lang_Object__I ??= new _JniMarshal_PPL_I (n_GetSpanFlags_Ljava_lang_Object_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_GetSpanFlags_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_tag) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var tag = global::Java.Lang.Object.GetObject (native_tag, JniHandleOwnership.DoNotTransfer); - int __ret = __this.GetSpanFlags (tag); - return __ret; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var tag = global::Java.Lang.Object.GetObject (native_tag, JniHandleOwnership.DoNotTransfer); + int __ret = __this.GetSpanFlags (tag); + return __ret; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -110,16 +119,24 @@ static int n_GetSpanFlags_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this #pragma warning disable 0169 static Delegate GetAppend_Ljava_lang_CharSequence_Handler () { - if (cb_append_Append_Ljava_lang_CharSequence__V == null) - cb_append_Append_Ljava_lang_CharSequence__V = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_V (n_Append_Ljava_lang_CharSequence_)); - return cb_append_Append_Ljava_lang_CharSequence__V; + return cb_append_Append_Ljava_lang_CharSequence__V ??= new _JniMarshal_PPL_V (n_Append_Ljava_lang_CharSequence_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Append_Ljava_lang_CharSequence_ (IntPtr jnienv, IntPtr native__this, IntPtr native_value) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var value = global::Java.Lang.Object.GetObject (native_value, JniHandleOwnership.DoNotTransfer); - __this.Append (value); + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var value = global::Java.Lang.Object.GetObject (native_value, JniHandleOwnership.DoNotTransfer); + __this.Append (value); + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 @@ -138,17 +155,26 @@ public void Append (string value) #pragma warning disable 0169 static Delegate GetIdentity_Ljava_lang_CharSequence_Handler () { - if (cb_identity_Identity_Ljava_lang_CharSequence__Ljava_lang_CharSequence_ == null) - cb_identity_Identity_Ljava_lang_CharSequence__Ljava_lang_CharSequence_ = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_L (n_Identity_Ljava_lang_CharSequence_)); - return cb_identity_Identity_Ljava_lang_CharSequence__Ljava_lang_CharSequence_; + return cb_identity_Identity_Ljava_lang_CharSequence__Ljava_lang_CharSequence_ ??= new _JniMarshal_PPL_L (n_Identity_Ljava_lang_CharSequence_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_Identity_Ljava_lang_CharSequence_ (IntPtr jnienv, IntPtr native__this, IntPtr native_value) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var value = global::Java.Lang.Object.GetObject (native_value, JniHandleOwnership.DoNotTransfer); - IntPtr __ret = CharSequence.ToLocalJniHandle (__this.IdentityFormatted (value)); - return __ret; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var value = global::Java.Lang.Object.GetObject (native_value, JniHandleOwnership.DoNotTransfer); + IntPtr __ret = CharSequence.ToLocalJniHandle (__this.IdentityFormatted (value)); + return __ret; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tests/generator-Tests/expected.xaji/java.lang.Enum/Java.Lang.IComparable.cs b/tests/generator-Tests/expected.xaji/java.lang.Enum/Java.Lang.IComparable.cs index 96f2d33c1..94257a811 100644 --- a/tests/generator-Tests/expected.xaji/java.lang.Enum/Java.Lang.IComparable.cs +++ b/tests/generator-Tests/expected.xaji/java.lang.Enum/Java.Lang.IComparable.cs @@ -49,17 +49,26 @@ public IComparableInvoker (IntPtr handle, JniHandleOwnership transfer) : base (h #pragma warning disable 0169 static Delegate GetCompareTo_Ljava_lang_Object_Handler () { - if (cb_compareTo_CompareTo_Ljava_lang_Object__I == null) - cb_compareTo_CompareTo_Ljava_lang_Object__I = JNINativeWrapper.CreateDelegate (new _JniMarshal_PPL_I (n_CompareTo_Ljava_lang_Object_)); - return cb_compareTo_CompareTo_Ljava_lang_Object__I; + return cb_compareTo_CompareTo_Ljava_lang_Object__I ??= new _JniMarshal_PPL_I (n_CompareTo_Ljava_lang_Object_); } + [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_CompareTo_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_another) { - var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); - var another = global::Java.Lang.Object.GetObject (native_another, JniHandleOwnership.DoNotTransfer); - int __ret = __this.CompareTo (another); - return __ret; + if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r)) + return default; + + try { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var another = global::Java.Lang.Object.GetObject (native_another, JniHandleOwnership.DoNotTransfer); + int __ret = __this.CompareTo (another); + return __ret; + } catch (global::System.Exception __e) { + __r.OnUserUnhandledException (ref __envp, __e); + return default; + } finally { + global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp); + } } #pragma warning restore 0169 diff --git a/tools/generator/SourceWriters/Attributes/DebuggerDisableUserUnhandledExceptionsAttributeAttr.cs b/tools/generator/SourceWriters/Attributes/DebuggerDisableUserUnhandledExceptionsAttributeAttr.cs new file mode 100644 index 000000000..0f7a6ace1 --- /dev/null +++ b/tools/generator/SourceWriters/Attributes/DebuggerDisableUserUnhandledExceptionsAttributeAttr.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Xamarin.SourceWriter; + +namespace generator.SourceWriters +{ + public class DebuggerDisableUserUnhandledExceptionsAttributeAttr : AttributeWriter + { + public override void WriteAttribute (CodeWriter writer) + { + writer.WriteLine ("[global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]"); + } + } +} diff --git a/tools/generator/SourceWriters/MethodCallback.cs b/tools/generator/SourceWriters/MethodCallback.cs index 161a5e53c..21efefc70 100644 --- a/tools/generator/SourceWriters/MethodCallback.cs +++ b/tools/generator/SourceWriters/MethodCallback.cs @@ -47,6 +47,8 @@ public MethodCallback (GenBase type, Method method, CodeGenerationOptions option SourceWriterExtensions.AddSupportedOSPlatform (Attributes, method, opt); + Attributes.Add (new DebuggerDisableUserUnhandledExceptionsAttributeAttr ()); + Parameters.Add (new MethodParameterWriter ("jnienv", TypeReferenceWriter.IntPtr)); Parameters.Add (new MethodParameterWriter ("native__this", TypeReferenceWriter.IntPtr)); @@ -56,6 +58,15 @@ public MethodCallback (GenBase type, Method method, CodeGenerationOptions option protected override void WriteBody (CodeWriter writer) { + writer.WriteLine ("if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))"); + writer.Indent (); + writer.WriteLine (method.IsVoid ? "return;" : "return default;"); + writer.Unindent (); + + writer.WriteLine (); + writer.WriteLine ("try {"); + + writer.Indent (); writer.WriteLine ($"var __this = global::Java.Lang.Object.GetObject<{opt.GetOutputName (type.FullName)}> (jnienv, native__this, JniHandleOwnership.DoNotTransfer){opt.NullForgivingOperator};"); foreach (var s in method.Parameters.GetCallbackPrep (opt)) @@ -79,6 +90,24 @@ protected override void WriteBody (CodeWriter writer) if (!method.IsVoid && method.Parameters.HasCleanup) writer.WriteLine ("return __ret;"); + + writer.Unindent (); + + writer.WriteLine ("} catch (global::System.Exception __e) {"); + writer.Indent (); + writer.WriteLine ("__r.OnUserUnhandledException (ref __envp, __e);"); + + if (!method.IsVoid) + writer.WriteLine ("return default;"); + + writer.Unindent (); + writer.WriteLine ("} finally {"); + writer.Indent (); + writer.WriteLine ("global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);"); + writer.Unindent (); + writer.WriteLine ("}"); + + } public override void Write (CodeWriter writer) @@ -143,10 +172,7 @@ public GetDelegateHandlerMethod (Method method, CodeGenerationOptions opt) protected override void WriteBody (CodeWriter writer) { var callback_name = method.EscapedCallbackName; - - writer.WriteLine ($"if ({callback_name} == null)"); - writer.WriteLine ($"\t{callback_name} = JNINativeWrapper.CreateDelegate (new {method.GetDelegateType (opt)} (n_{method.Name + method.IDSignature}));"); - writer.WriteLine ($"return {callback_name};"); + writer.WriteLine ($"return {callback_name} ??= new {method.GetDelegateType (opt)} (n_{method.Name + method.IDSignature});"); } } }