You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[Java.Runtime.Environment] Partial support for .NET Core
Enable C#8 [Nullable Reference Types][0] for
`Java.Runtime.Environment.dll`.
Add partial support for a "non-bridged backend", so that a
`JniRuntime.JniValueManager` exists for .NET Core. This new
"managed" backed is used if the Mono runtime is *not* used.
To work, `ManagedValueManager` holds *strong* references to
`IJavaPeerable` instances. As such, tests which required the use of
GC integration are now "optional", conditional on the
`!NO_GC_BRIDGE_SUPPORT` define.
The `ManagedValueManager.CollectPeers()` method calls
`IJavaPeerable.Dispose()` on all currently referenced peers, then
stops referencing the managed peers.
This causes all GREFs to be dropped, allowing Java peers to be
collected, and then allows the .NET GC to collect the `IJavaPeerable`
values.
Any and all exceptions thrown by `IJavaPeerable.Dispose()` are
caught and re-thrown by an `AggregateException`.
Update `Java.Interop-Tests.csproj` to define `NO_GC_BRIDGE_SUPPORT`
and `NO_MARSHAL_MEMBER_BUILDER_SUPPORT` when building for .NET Core.
This excludes all currently "troublesome"/non-passing tests.
These changes allow all remaining `Java.Interop-Tests` unit tests to
execute under .NET Core:
% dotnet test -v diag '--logger:trx;verbosity=detailed' bin/TestDebug-netcoreapp3.1/Java.Interop-Tests.dll
Passed! - Failed: 0, Passed: 617, Skipped: 1, Total: 618, Duration: 1 s
Other changes:
* The attempt to retain useful Java-side exceptions in 89a5a22
proved to be incomplete. Add a comment to invoke
[`JNIEnv::ExceptionDescribe()`][1]. We don't always want this
to be present, but when we do want it…
* While `NO_MARSHAL_MEMBER_BUILDER_SUPPORT` is set -- which means
that `Java.Interop.Export`-related tests aren't run -- there are
some fixes for `Java.Interop.Export` & related unit tests for
.NET Core, to avoid the use of generic delegate types and to
avoid a `Type.GetType()` which is no longer needed.
[0]: https://docs.microsoft.com/dotnet/csharp/nullable-references
[1]: https://docs.oracle.com/javase/8/docs/technotes/guides/jni/spec/functions.html#ExceptionDescribe
0 commit comments