refactor(abstractions)!: merge IAsyncParseNodeFactory into IParseNodeFactory#709
Merged
MIchaelMainer merged 9 commits intoMay 5, 2026
Merged
Conversation
…Factory Remove IAsyncParseNodeFactory interface and move GetRootParseNodeAsync into IParseNodeFactory. Remove the obsolete sync GetRootParseNode method from the interface. Simplify ParseNodeProxyFactory and ParseNodeFactoryRegistry to use the unified interface directly. BREAKING CHANGE: IAsyncParseNodeFactory has been removed. Implement IParseNodeFactory.GetRootParseNodeAsync directly instead. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Remove KiotaSerializer.Deserialize, KiotaSerializer.DeserializeCollection, and their KiotaJsonSerializer counterparts. Only the async variants (DeserializeAsync, DeserializeCollectionAsync) remain. BREAKING CHANGE: Sync Deserialize/DeserializeCollection methods have been removed. Use DeserializeAsync/DeserializeCollectionAsync instead. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…nterface Remove obsolete sync GetRootParseNode from JsonParseNodeFactory, FormParseNodeFactory, and TextParseNodeFactory. Simplify HttpClientRequestAdapter to call GetRootParseNodeAsync directly without runtime type checking. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Remove entries for IAsyncParseNodeFactory, sync GetRootParseNode, sync Deserialize/DeserializeCollection methods, and the generic GetFactory<T> method. Add entries for the new GetRootParseNodeAsync on IParseNodeFactory and the non-generic GetFactory method. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace IAsyncParseNodeFactory mocks with IParseNodeFactory. Convert sync GetRootParseNode calls to async GetRootParseNodeAsync. Update deserialization tests to use async DeserializeAsync/DeserializeCollectionAsync. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Coverlet.MTP generates coverage files with a timestamp suffix (e.g., coverage.opencover.040526233344598.xml) rather than a fixed filename. Update the SonarCloud workflow to use a glob pattern that matches the timestamped files. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…odeAsync Verify that the proxy factory: - Delegates to the concrete factory - Invokes onBefore/onAfter callbacks - Preserves original node callbacks alongside proxy callbacks - Throws ArgumentNullException when concrete is null Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… methods Remove GetPartValue<T>(string) and RemovePart(string) overloads that were marked with 'TODO: Remove with next major release'. Callers should use the overloads that accept (partName, fileName) instead. BREAKING CHANGE: GetPartValue<T>(string) and RemovePart(string) removed Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
gavinbarron
reviewed
May 5, 2026
|
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.



Summary
Merges
IAsyncParseNodeFactoryintoParseNodeFactoryand removes all obsolete synchronous deserialization APIs, taking advantageof the major version bump.
Changes
Interface consolidation
IAsyncParseNodeFactoryinterfaceIParseNodeFactory— removed syncGetRootParseNode, addedGetRootParseNodeAsyncParseNodeProxyFactory— calls _concrete.GetRootParseNodeAsync() directly (no runtime type check)ParseNodeFactoryRegistry— removed genericGetFactory<T>, replaced with non-genericGetFactoryRemoved obsolete sync APIs
KiotaSerializer.Deserialize/DeserializeCollectionKiotaJsonSerializer.Deserialize/DeserializeCollectionGetRootParseNodefrom all factory implementationsUpdated factory implementations
JsonParseNodeFactory,FormParseNodeFactory,TextParseNodeFactory— now implementIParseNodeFactorydirectly with only theasync method
HttpClientRequestAdapter— callsGetRootParseNodeAsyncdirectly without isIAsyncParseNodeFactorybranchingPublic API tracking
Tests
Mock<IAsyncParseNodeFactory>withMock<IParseNodeFactory>Breaking Changes
IAsyncParseNodeFactoryremoved — implementIParseNodeFactory.GetRootParseNodeAsyncinsteadDeserialize/DeserializeCollectionmethods removed — useDeserializeAsync/DeserializeCollectionAsyncParseNodeFactoryRegistry.GetFactory<T>()removed — useGetFactory()(non-generic)