Remove Java.Interop.Dynamic#1449
Conversation
Remove the standalone C# dynamic JNI provider and its dedicated tests from the solution and CI template. Update docs that referenced the removed component. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Removes the legacy Java.Interop.Dynamic C# dynamic JNI provider and its dedicated test suite as part of repository reduction work for dotnet/android (issue #1448), and cleans up CI/docs references to the removed component.
Changes:
- Deleted the
src/Java.Interop.Dynamicproject and all of its source files. - Deleted the
tests/Java.Interop.Dynamic-Teststest project and removed it from the solution/CI. - Updated documentation and GitHub agent metadata to remove references to the deleted component.
Show a summary per file
| File | Description |
|---|---|
| tests/Java.Interop.Dynamic-Tests/Java.Interop/JavaVMFixture.cs | Removes dynamic test JVM fixture. |
| tests/Java.Interop.Dynamic-Tests/Java.Interop/DynamicJavaInstanceTests.cs | Removes DynamicJavaInstance test coverage (project deleted). |
| tests/Java.Interop.Dynamic-Tests/Java.Interop/DynamicJavaClassTests.cs | Removes DynamicJavaClass test coverage (project deleted). |
| tests/Java.Interop.Dynamic-Tests/Java.Interop.Dynamic-Tests.csproj | Removes the Dynamic test project definition and references. |
| tests/invocation-overhead/README.md | Removes a mention of Java.Interop.Dynamic-related commits. |
| src/Java.Interop.Dynamic/Java.Interop.Dynamic/JniMetaObject.cs | Deletes dynamic metaobject implementation (project deleted). |
| src/Java.Interop.Dynamic/Java.Interop.Dynamic/JavaMethodInfo.cs | Deletes dynamic invocation method wrapper (project deleted). |
| src/Java.Interop.Dynamic/Java.Interop.Dynamic/JavaMethodBase.cs | Deletes dynamic invocation base type (project deleted). |
| src/Java.Interop.Dynamic/Java.Interop.Dynamic/JavaMemberInfo.cs | Deletes dynamic member info abstraction (project deleted). |
| src/Java.Interop.Dynamic/Java.Interop.Dynamic/JavaInstanceProxy.cs | Deletes proxy type used for dynamic instance creation (project deleted). |
| src/Java.Interop.Dynamic/Java.Interop.Dynamic/JavaFieldInfo.cs | Deletes dynamic field wrapper (project deleted). |
| src/Java.Interop.Dynamic/Java.Interop.Dynamic/JavaConstructorInfo.cs | Deletes dynamic constructor wrapper (project deleted). |
| src/Java.Interop.Dynamic/Java.Interop.Dynamic/JavaClassInfo.cs | Deletes reflection-based class info cache for dynamic binding (project deleted). |
| src/Java.Interop.Dynamic/Java.Interop.Dynamic/DynamicJavaInstance.cs | Deletes public dynamic instance API (project deleted). |
| src/Java.Interop.Dynamic/Java.Interop.Dynamic/DynamicJavaClass.cs | Deletes public dynamic class API (project deleted). |
| src/Java.Interop.Dynamic/Java.Interop.Dynamic.csproj | Removes the Dynamic library project definition. |
| Java.Interop.sln | Removes Dynamic library + Dynamic tests from the solution and build configurations. |
| Documentation/BuildConfiguration.md | Updates example to reference remaining core test assembly. |
| Documentation/Architecture.md | Removes Architecture.md references/links to Java.Interop.Dynamic. |
| build-tools/automation/templates/core-tests.yaml | Removes Dynamic test run from CI template. |
| .github/skills/build-and-test/SKILL.md | Removes Dynamic tests from the “common test projects” list. |
| .github/copilot-instructions.md | Removes Dynamic component from repo structure list. |
Copilot's findings
- Files reviewed: 22/22 changed files
- Comments generated: 0
|
@copilot resolve the merge conflicts in this pull request |
…ove-java-interop-dynamic # Conflicts: # tests/invocation-overhead/README.md Co-authored-by: simonrozsival <374616+simonrozsival@users.noreply.github.com>
Done — I resolved the merge conflict and merged |
|
/review |
|
✅ Java.Interop PR Reviewer completed successfully! |
|
@copilot address the reviewer's comments: |
Co-authored-by: simonrozsival <374616+simonrozsival@users.noreply.github.com>
... Fixed in |
|
/review |
|
✅ Java.Interop PR Reviewer completed successfully! |
There was a problem hiding this comment.
✅ LGTM — Clean removal
This is a thorough and well-executed removal of Java.Interop.Dynamic. All references across the solution file, Makefile, CI templates, documentation, and agent metadata have been cleaned up. The grep for Java\.Interop\.Dynamic across the entire repo returns zero hits — nothing was missed.
Checklist
| Area | Status |
|---|---|
| Solution file | ✅ Project entries, build configs, and nesting entries removed |
| Makefile | ✅ Test DLL and TestAssemblyTemplate call removed |
CI pipeline (core-tests.yaml) |
✅ Dynamic test step removed |
| Documentation | ✅ Architecture.md, BuildConfiguration.md, copilot-instructions.md updated |
Agent metadata (SKILL.md) |
✅ Dynamic-Tests entry removed |
Minor follow-ups (not blocking)
-
Stale
dynamicreference in Architecture.md line 163 — The text still lists "C# 4dynamic" as a use case for the centralized marshaling infrastructure. See inline comment. -
Dead code:
JniPeerMembers.CreatePeerMembers— Thestatic CreatePeerMembers()method atsrc/Java.Interop/Java.Interop/JniPeerMembers.cs:68was only invoked via reflection from the now-deletedJavaClassInfo.cs. It's now unreferenced dead code. Consider removing it as a follow-up (possibly in the parent issue #1448).
Positive callouts
- Bonus fix of the missing
EndProjectline forMaven-Testsin the.slnfile — good to catch. - Documentation rewrite in Architecture.md preserves the logical flow without the dynamic provider motivation.
Generated by Java.Interop PR Reviewer for issue #1449 · ● 5.4M
Part of #1448.
This removes the standalone C#
dynamicJNI provider and its dedicated tests. It also removes the Dynamic test entry from the core CI template and updates docs/agent metadata that referenced the deleted component.Validation:
SDKROOT=$(xcrun --sdk macosx --show-sdk-path) dotnet test tests/Java.Interop-Tests/Java.Interop-Tests.csproj