Support reading selected fields from DOM instances - #60
Merged
Merged
Conversation
Add support for the DataMiner 10.6.0/10.6.1 'reading selected fields' API, which reads only a subset of fields from DomInstance objects instead of the full instances. - Bump Skyline.DataMiner.Dev.Common to 10.6.1 - Handle ManagerStoreSelectReadRequest, ManagerStoreSelectStartPagingRequest and ManagerStoreSelectNextPagingRequest in DomSLNetMessageHandler, so partial reads can be mocked in unit tests - Add SelectedFieldsEvaluator which executes the selected exposers on the in-memory instances and builds the PartialObjectData results - Add ReadPaged extension methods for ISelectHelperComponent - Document the feature in the README Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Cover additional cases for reading selected fields from DOM instances: FieldValues exposer rejection, list-typed base exposers, explicit Id selection, an empty SelectedFields collection, sorted queries and filtering on a field value combined with a selection. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Mirror the fail-safe behavior of a real DataMiner Agent and of CoercingFilterEvaluator: a selected field that cannot be read from an instance is reported as having no value instead of failing the read. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Bind a generic factory method once per value type instead of creating the instance and setting its properties through reflection on every call. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…dAll Also strengthen the selected fields tests: assert that the sort order of a query is applied, that a definition filter is applied and that fields that weren't selected are not returned. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Updated MSTest.Sdk from 3.9.1 to 4.4.0. Updated FluentAssertions from 7.2.0 to 7.2.2. Updated Moq from 4.18.4 to 4.20.72.
There was a problem hiding this comment.
🟡 Changes recommended
There is at least one confirmed compile-time issue in the new GetByID(..., SelectedFields<DomInstance>) overload (Guid compared to null) that must be corrected before approval.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
Adds support for DataMiner 10.6.x “reading selected fields” for DOM instance reads, including unit-test mocking behavior and new helper extensions for paged partial reads.
Changes:
- Bumps
Skyline.DataMiner.Dev.Commonto10.6.1and updates test dependencies. - Extends the unit-testing SLNet handler to support select-read and select-paging messages, backed by an in-memory selected-fields evaluator.
- Adds new extensions and documentation for selected-fields reads (including paged reads) plus new test coverage.
File summaries
| File | Description |
|---|---|
| Utils.DOM/Utils.DOM.csproj | Updates dependency version to enable the 10.6.x selected-fields API surface. |
| Utils.DOM/UnitTesting/Querying/SelectedFieldsEvaluator.cs | New evaluator to produce PartialObjectData from in-memory DomInstance objects based on selected exposers. |
| Utils.DOM/UnitTesting/DomSLNetMessageHandler.cs | Adds handling for select-read and select-paging SLNet messages for unit-test mocking. |
| Utils.DOM/Extensions/DomInstanceExtensions.cs | Adds overloads to read partial DOM instances by ID and by definition. |
| Utils.DOM/Extensions/CrudHelperComponentExtensions.cs | Adds ReadPaged/ReadAllPaged overloads for ISelectHelperComponent to return partial objects. |
| Utils.DOM.Tests/Utils.DOM.Tests.csproj | Updates test SDK and package references. |
| Utils.DOM.Tests/DomInstanceSelectedFieldsTests.cs | Adds tests validating selected-fields reads and paging behavior. |
| README.md | Documents the selected-fields feature and usage patterns. |
Review details
- Files reviewed: 8/8 changed files
- Comments generated: 2
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Updated entity retrieval methods to check for Guid.Empty instead of null in DomDefinitionExtensions.cs, DomInstanceExtensions.cs, and SectionDefinitionExtensions.cs. Also applied minor formatting changes to the ReadPagedIterator method signature in CrudHelperComponentExtensions.cs.
JensVandewalle
approved these changes
Sep 8, 2026
This was referenced Sep 8, 2026
Bump Skyline.DataMiner.Utils.DOM from 10.5.2.8 to 10.6.1.1
SkylineCommunications/dataminer-docs#6800
Merged
Closed
This was referenced Sep 16, 2026
Closed
This was referenced Sep 29, 2026
Open
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
AB#46696
Add support for the DataMiner 10.6.0/10.6.1 'reading selected fields' API, which reads only a subset of fields from DomInstance objects instead of the full instances.