-
-
Notifications
You must be signed in to change notification settings - Fork 404
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
BeginEdit Throws Exception When Using MobileFormatter in .NET Framework #1080
Comments
A struct can't actually implement If you are going to use MobileFormatter you must live within its limitations. |
Rocky, Did you even read the entire post or did you just skip to the part you didn't like? The comment about the struct was listed as an additional consideration, not the source of the problem. The problem is that FieldDataManager tries to serialize an array of IFieldData when serialized using .NET Framework. The type IFieldData[] does not implement IMobileObject and thus throws an exception when using the MobileFormatter. This is a bug. For what it's worth though, I had zero issues implementing the IMobileObject interface on this struct and serializing and deserializing it using the MobileFormatter. I'm not sure why you jumped on this to dismiss the entire issue. |
Hi @Hadronicus ,
Did deserialization work? |
Deserialization works fine. I created a repo with a simple demonstration that can be found here. |
I'm pretty sure the issue in your sample code is because MobileFormatter can't serialize a custom enum. Your GetState/SetState code needs to convert/parse the value as a string.
Update: Nope, enums work too. I'm trying to base some unit tests on your sample repro - thus far unsuccessful. I'll check it into a branch so you can collaborate and help me figure out what I'm doing that isn't triggering your issue. See the commit (c68235e) to review the new unit test code I've added trying to replicate your issue. |
I've added two ways to reproduce the original issue. One is a bare bones project that I hosted here. I was also able to reproduce it using the ProjectTracker sample, but it required a little manipulation because the App.config file still has a reference to MobileProxy which was removed. ProjectTracker Reproduction Steps
Resulting Call Stack Edit: I forgot to include the actual exception.
|
I'm trying to get a failing unit test, that's the current goal. Did you look at the diff I linked to? It has basically the same code as your example, but doesn’t fail for some reason.
Get Outlook for Android<https://aka.ms/ghei36>
…________________________________
From: Hadronicus <notifications@github.com>
Sent: Monday, March 11, 2019 4:10:42 PM
To: MarimerLLC/csla
Cc: Rockford Lhotka; State change
Subject: Re: [MarimerLLC/csla] MobileFormatter Unusable in .NET Framework (#1080)
I've added two ways to reproduce the original issue. One is a bare bones project that I hosted here<https://github.com/Hadronicus/CslaMobileFormatterBug>.
I was also able to reproduce it using the ProjectTracker sample, but it required a little manipulation because the App.config file still has a reference to MobileProxy which was removed.
ProjectTracker Reproduction Steps
1. Add reference to ProjectTracker.DalMock to ProjectTracker.Ui.WPF. Note: I just wanted to set the project to use the local Data Portal for a quick setup, I was having trouble getting the proxy to communicate with the app server host project.
2. Replace the contents of the App.config file in the .\Samples\ProjectTracker\ProjectTracker.Ui.WPF directory with the following code:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="DalManagerType" value="ProjectTracker.DalMock.DalManager,ProjectTracker.DalMock" />
<add key="CslaSerializationFormatter" value="MobileFormatter"/>
</appSettings>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/></startup>
</configuration>
1. Build and launch ProjectTracker.Ui.WPF.
2. Log in as Username: manager Password: manager.
3. Click on Project List.
4. Click the Edit button for the first entry in the list.
Resulting Call Stack
at Csla.Serialization.Mobile.MobileFormatter.SerializeObject(Object obj) in E:\src\rdl\csla\Source\Csla.Shared\Serialization\Mobile\MobileFormatter.cs:line 138
at Csla.Serialization.Mobile.MobileFormatter.SerializeAsDTO(Object graph) in E:\src\rdl\csla\Source\Csla.Shared\Serialization\Mobile\MobileFormatter.cs:line 63
at Csla.Serialization.Mobile.MobileFormatter.Serialize(Stream serializationStream, Object graph) in E:\src\rdl\csla\Source\Csla.Shared\Serialization\Mobile\MobileFormatter.cs:line 48
at Csla.Core.FieldManager.FieldDataManager.Csla.Core.IUndoableObject.CopyState(Int32 parentEditLevel, Boolean parentBindingEdit) in E:\src\rdl\csla\Source\Csla.Shared\Core\FieldManager\FieldDataManager.cs:line 525
at Csla.Core.UndoableBase.CopyState(Int32 parentEditLevel) in E:\src\rdl\csla\Source\Csla.Shared\Core\UndoableBase.cs:line 468
at Csla.Core.UndoableBase.Csla.Core.IUndoableObject.CopyState(Int32 parentEditLevel, Boolean parentBindingEdit) in E:\src\rdl\csla\Source\Csla.Shared\Core\UndoableBase.cs:line 400
at Csla.BusinessListBase`2.CopyState(Int32 parentEditLevel) in E:\src\rdl\csla\Source\Csla.Shared\BusinessListBase.cs:line 515
at Csla.BusinessListBase`2.Csla.Core.IUndoableObject.CopyState(Int32 parentEditLevel, Boolean parentBindingEdit) in E:\src\rdl\csla\Source\Csla.Shared\BusinessListBase.cs:line 480
at Csla.Core.FieldManager.FieldDataManager.Csla.Core.IUndoableObject.CopyState(Int32 parentEditLevel, Boolean parentBindingEdit) in E:\src\rdl\csla\Source\Csla.Shared\Core\FieldManager\FieldDataManager.cs:line 509
at Csla.Core.UndoableBase.CopyState(Int32 parentEditLevel) in E:\src\rdl\csla\Source\Csla.Shared\Core\UndoableBase.cs:line 468
at Csla.Core.BusinessBase.BeginEdit() in E:\src\rdl\csla\Source\Csla.Shared\Core\BusinessBase.cs:line 891
at Csla.Xaml.ViewModelBase`1.<>c.<.cctor>b__111_0(DependencyObject o, DependencyPropertyChangedEventArgs e) in E:\src\rdl\csla\Source\Csla.Xaml.Shared\ViewModelBase.cs:line 143
at System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)
at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)
at System.Windows.DependencyObject.SetValueCommon(DependencyProperty dp, Object value, PropertyMetadata metadata, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType, Boolean isInternal)
at System.Windows.DependencyObject.SetValue(DependencyProperty dp, Object value)
at Csla.Xaml.ViewModelBase`1.set_Model(T value) in E:\src\rdl\csla\Source\Csla.Xaml.Shared\ViewModelBase.cs:line 162
at WpfUI.ViewModels.ProjectGetter.ProjectEdit..ctor(ProjectGetter parent, ProjectEdit project) in D:\csla-master\Samples\ProjectTracker\ProjectTracker.Ui.WPF\ViewModels\ProjectEdit.cs:line 62
at WpfUI.ViewModels.ProjectGetter.get_ProjectEditViewModel() in D:\csla-master\Samples\ProjectTracker\ProjectTracker.Ui.WPF\ViewModels\ProjectEdit.cs:line 39
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub<#1080 (comment)>, or mute the thread<https://github.com/notifications/unsubscribe-auth/ACOZzn8kLrd0BLYMiAlWocuWiBxjeHyrks5vVsZSgaJpZM4bnseC>.
|
I think I chose the title poorly and it’s causing some confusion. The unit tests that you created are based on the sample I made to demonstrate that the MobileFormatter can successfully serializer and deserialize a custom struct I’m response to @GillesBer’s question. The problem that I am seeing is similar to the issue described in #897, but for different reasons under different conditions. The code in the the two reproduction steps that I listed in my previous post would be a better starting point for a unit test to target this issue. |
Rocky, I am new to Git and GitHub, so I'm sorry if I didn't get this part 100% correct, but I forked the CSLA repository and created a branch with a unit test that fails for the exact issue that I'm experiencing. Take a look at it here 950f5d5. |
Added unit test for BeginEdit while using MobileFormatter.
I have looked into multiple ways of trying to solve this issue, and I ultimately came up with one that is actually quite simple, but I want to explain the thought process here to provide context to why I chose the solution that I did. Considerations
Assumptions
Unsuccessful Approaches
Occam's Razor I created a new method on the SerializationFormatterFactory called GetNativeFormatter. The purpose of this method is to provide a formatter that can be used for serialization and deserialization in a format that is native to the environment in which a given process is running. In other words, Android, iOS, net-core, etc. processes will all use the MobileFormatter and .NET Framework processes will use the NetDataContractSerializerWrapper. This is why the Data Portal boundary assumption is critical. As long as we are not trying to do a BeginEdit in one process and then an UndoChanges in another process on the other side of a data portal, this solution will remain completely transparent to any calling code. In my description of this assumption, I mentioned that in at least one place in the CSLA code, there is an explicit guarantee that this assumption would be correct. That occurs in the OnSetState implementation in UndoableBase. Because, this method explicitly clears the state stack during deserialization, it is guaranteed that the state cannot be undone on the other side of a Data Portal boundary when using the MobileFormatter. We do not quite have the same level of guarantee when using other implementations of ISerializationFormatter. This does leave us with one potential breaking change if all of the following conditions are true:
A bonus bug To resolve this issue, I modified BusinessListBase to no longer serialize this value and to explicitly default it to 0 in the implementation of OnSetState to match the behavior of UndoableBase. |
This is a great amount of work, research, and detail, thank you! A question/concern I have is that it sounds like this leaves the existing bug/issue intact on Android and other platforms - presumably your unit test code would still fail there because all other platforms would still use MobileFormatter as their native serializer? |
The source of the bug was code that was specific to the .NET Framework platform. With the exception to the removal of the edit level from the data serialized in BusinessListBase, the rest of the changes I made would not even be compiled when targeting other platforms. Anything that uses the MobileFormatter by default already has a working implementation and didn't need any attention as far as I could tell. |
* Create unit-testing * Rename unit-testing to unit-testing.md * Bump Microsoft.EntityFrameworkCore from 2.2.1 to 2.2.3 in /Source Bumps [Microsoft.EntityFrameworkCore](https://github.com/aspnet/EntityFrameworkCore) from 2.2.1 to 2.2.3. - [Release notes](https://github.com/aspnet/EntityFrameworkCore/releases) - [Commits](https://github.com/aspnet/EntityFrameworkCore/commits) Signed-off-by: dependabot[bot] <support@dependabot.com> * Update BasicModernTests.cs Added unit test for BeginEdit while using MobileFormatter. * MarimerLLC#1080 Update BasicModernTests.cs Added unit test for BeginEdit while using MobileFormatter. * Bump Microsoft.NETCore.UniversalWindowsPlatform in /Source Bumps [Microsoft.NETCore.UniversalWindowsPlatform](https://github.com/Microsoft/dotnet) from 6.1.9 to 6.2.8. - [Release notes](https://github.com/Microsoft/dotnet/releases) - [Commits](https://github.com/Microsoft/dotnet/commits) Signed-off-by: dependabot[bot] <support@dependabot.com> * MarimerLLC#1080 Fixed issues caused by using MobileFormatter in .NET Framework Fixes MarimerLLC#1080. Updated unit tests to complete the BeginEdit, CancelEdit, and ApplyChanges workflow. Added a factory method for getting a native formatter to support serialization and deserialization within the same process.Added unit tests to showcase the edit level mismatch bug that occurs when using the ViewModelBase class with MobileFormatter. Applied a fix to BusinessListBase to correct the edit level mismatch problem. * Updated to NS1.3, trying to get tests to run... * Bump Xamarin.Forms from 3.4.0.1029999 to 3.6.0.264807 in /Source Bumps Xamarin.Forms from 3.4.0.1029999 to 3.6.0.264807. Signed-off-by: dependabot[bot] <support@dependabot.com> * MarimerLLC#804 Finished project updates for NS1.3. * Updated tests and code to hopefully run on AppVeyor (MarimerLLC#1088) * Updated tests and code to hopefully run on AppVeyor * Updated tests and code to hopefully run on AppVeyor * Create csla-github-flow.md * Update CONTRIBUTING.md * Update csla-github-flow.md * Update csla-github-flow.md * 623 fixing argument serialization issue (MarimerLLC#1089) * MarimerLLC#680 Fixes trivia issue Analyzer no longer removes leading and trailing trivia from new field node. * Closes MarimerLLC#623 * MarimerLLC#750 updated styles * Update github flow doc - watch for changes * Add link to Jonny's blog * MarimerLLC#1091 Finished cleanup. * 925 flag new keyword usage (MarimerLLC#1095) Closes MarimerLLC#925 Added new analyzer * 828-add-analyzer-docs * 828-add-analyzer-docs * Bump Microsoft.CodeAnalysis.Analyzers from 2.6.3 to 2.9.1 in /Source Bumps [Microsoft.CodeAnalysis.Analyzers](https://github.com/dotnet/roslyn-analyzers) from 2.6.3 to 2.9.1. - [Release notes](https://github.com/dotnet/roslyn-analyzers/releases) - [Commits](dotnet/roslyn-analyzers@v2.6.3...v2.9.1) Signed-off-by: dependabot[bot] <support@dependabot.com> * Update Books-and-videos.md * Update What-is-CSLA-.NET.md * Update index.md * Create code-generators.md * Update index.md * MarimerLLC#1043 Update GetUser methods to return unauthenticated principal instead of null * Clean up some unit tests. * Resolve compiler warnings about test code. * Resolve erroneous unit test compiler warnings. * MarimerLLC#1070 Remove unused legacy Silverlight test code. * MarimerLLC#1038 Set default transaction timeout to 600 seconds * MarimerLLC#754 Fix comment * MarimerLLC#1053 Update nuspec files to use license element * Update version numbers to 5.0.0 * MarimerLLC#1109 Add ContextManager property to CslaConfiguration. * MarimerLLC#1059 Add AsyncManualResetEvent and tests * MarimerLLC#1059 Add SyncTask and use in HttpProxy for sync operations * Ensure SimpleDataPortal async mismatch checks are passed concretes rather than type safe casts which could be null. * Remove legacy files * MarimerLLC#1059 Add TaskExtensions and tests; use in HttpProxy * MarimerLLC#1059 Make .NET 4.0 retain old behavior * MarimerLLC#1059 Implement sync code in HttpProxy that works from Windows Forms * Ensure that explicit NULL default values for string properties are honoured rather than being altered to string.Empty. "default" defaults remain string.Empty. * MarimerLLC#1059 Remove unneeded task extension classes and tests * Add .NET 4 and 4.5 projects to CI build * Bump Xamarin.Forms from 3.6.0.264807 to 3.6.0.293080 in /Source Bumps Xamarin.Forms from 3.6.0.264807 to 3.6.0.293080. Signed-off-by: dependabot[bot] <support@dependabot.com> * Add notes on working against a maintenance branch * MarimerLLC#1059 HttpProxy with HttpClient and WebClient support * MarimerLLC#1119 Update bootstrap version * MarimerLLC#1115 Remove private constructors from templates (replacing with public ctors where appropriate) * MarimerLLC#1111 Update website URL to https://cslanet.com; remove unused android tests * Update release notes for version 5.0.0 prerelease * Add missing work item to notes * Add contributor info * Bump MSTest.TestFramework from 1.2.1 to 1.4.0 in /Source Bumps [MSTest.TestFramework](https://github.com/microsoft/testfx) from 1.2.1 to 1.4.0. - [Release notes](https://github.com/microsoft/testfx/releases) - [Commits](microsoft/testfx@v1.2.1...1.4.0) Signed-off-by: dependabot[bot] <support@dependabot.com> * Bump Microsoft.NET.Test.Sdk from 15.7.0 to 16.0.1 in /Source Bumps [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) from 15.7.0 to 16.0.1. - [Release notes](https://github.com/microsoft/vstest/releases) - [Commits](microsoft/vstest@v15.7.0...v16.0.1) Signed-off-by: dependabot[bot] <support@dependabot.com> * Bump MSTest.TestAdapter from 1.2.1 to 1.4.0 in /Source Bumps [MSTest.TestAdapter](https://github.com/microsoft/testfx) from 1.2.1 to 1.4.0. - [Release notes](https://github.com/microsoft/testfx/releases) - [Commits](microsoft/testfx@v1.2.1...1.4.0) Signed-off-by: dependabot[bot] <support@dependabot.com> * Update csla-github-flow.md * MarimerLLC#1125 Fixed issue with AcceptChanges in BusinessListBase Fixes MarimerLLC#1125. Added a unit test to demonstrate the issue with BusinessListBase.AcceptChanges when using the MobileFormatter. Changed the order of operations for setting negative edit levels to 0 during AcceptChanges so that the value passed to child.AcceptChanges matches what is expected by the argument validation in UndoableBase. * Bump Microsoft.Extensions.Configuration.Json in /Source Bumps [Microsoft.Extensions.Configuration.Json](https://github.com/aspnet/Extensions) from 2.1.1 to 2.2.0. - [Release notes](https://github.com/aspnet/Extensions/releases) - [Commits](dotnet/extensions@2.1.1...2.2.0) Signed-off-by: dependabot[bot] <support@dependabot.com> * Bump Microsoft.EntityFrameworkCore from 2.2.3 to 2.2.4 in /Source Bumps [Microsoft.EntityFrameworkCore](https://github.com/aspnet/EntityFrameworkCore) from 2.2.3 to 2.2.4. - [Release notes](https://github.com/aspnet/EntityFrameworkCore/releases) - [Commits](https://github.com/aspnet/EntityFrameworkCore/commits/v2.2.4) Signed-off-by: dependabot[bot] <support@dependabot.com> * Add CSLA 5 info * Update README.md * Create serialization.md * Bump Microsoft.CodeAnalysis.Analyzers from 2.9.1 to 2.9.2 in /Source Bumps [Microsoft.CodeAnalysis.Analyzers](https://github.com/dotnet/roslyn-analyzers) from 2.9.1 to 2.9.2. - [Release notes](https://github.com/dotnet/roslyn-analyzers/releases) - [Commits](dotnet/roslyn-analyzers@v2.9.1...v2.9.2) Signed-off-by: dependabot[bot] <support@dependabot.com> * Bump Xamarin.Forms from 3.6.0.293080 to 3.6.0.344457 in /Source Bumps Xamarin.Forms from 3.6.0.293080 to 3.6.0.344457. Signed-off-by: dependabot[bot] <support@dependabot.com> * Bump Microsoft.NET.Test.Sdk from 16.0.1 to 16.1.0 in /Source Bumps [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) from 16.0.1 to 16.1.0. - [Release notes](https://github.com/microsoft/vstest/releases) - [Commits](microsoft/vstest@v16.0.1...v16.1.0) Signed-off-by: dependabot[bot] <support@dependabot.com> * MarimerLLC#1138 Reorder enum values so compiler directive has no x-plat effect * Add LinkedIn group URL * Add FB page link * Bump System.Data.SqlClient from 4.6.0 to 4.6.1 in /Source Bumps [System.Data.SqlClient](https://github.com/dotnet/corefx) from 4.6.0 to 4.6.1. - [Release notes](https://github.com/dotnet/corefx/releases) - [Commits](https://github.com/dotnet/corefx/commits) Signed-off-by: dependabot[bot] <support@dependabot.com> * MarimerLLC#981 Move NS2 ConnectionManager to new project/namespace; split out SafeSqlDataReader functionality for NS2, leaving old implementation for .NET FX * MarimerLLC#981 Update project metadata; create/update nuget definitions * MarimerLLC#981 Update build sln, target and xml doc output * Bump Xamarin.Forms from 3.6.0.344457 to 4.0.0.425677 in /Source Bumps Xamarin.Forms from 3.6.0.344457 to 4.0.0.425677. Signed-off-by: dependabot[bot] <support@dependabot.com> * MarimerLLC#1152 Autoflush writer * MarimerLLC#1150 Add support for Microsoft.Data.SqlClient * Update with most recent committed changes * MarimerLLC#1151 Modernize NuGet package names * Add notice of NuGet package name changes * MarimerLLC#288 Add default support for flowing of TransactionScope transactions when using async/await pattern * MarimerLLC#1160 Mark Silverlight style data portal methods Obsolete * MarimerLLC#1160 Update tests to stop using Silverlight style data portal calls * Update releasenotes.md * Update releasenotes.md * MarimerLLC#409 Allow async Task business rules via IBusinessRuleAsync and BusinessRuleAsync * MarimerLLC#409 Update readme * MarimerLLC#1102 Refactor server-side data portal code in prep for flexible data portal method names * MarimerLLC#1102 Create and use method name cache * Update Books-and-videos.md * Bump Microsoft.NET.Test.Sdk from 16.1.0 to 16.1.1 in /Source Bumps [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) from 16.1.0 to 16.1.1. - [Release notes](https://github.com/microsoft/vstest/releases) - [Commits](microsoft/vstest@v16.1.0...v16.1.1) * Add UpdateAll to ChildDataPortal and UpdateAllChildren to FieldDataManager * MarimerLLC#1165 Add FlowSynchronizationContext so LocalProxy flows sync context via config * Add note about MarimerLLC#1164 fix * FieldManager UpdateAllChildren tests * Bump Xamarin.Forms from 4.0.0.425677 to 4.0.0.471375 in /Source Bumps Xamarin.Forms from 4.0.0.425677 to 4.0.0.471375. * Add comment for MarimerLLC#1167 * Add contributor note * MarimerLLC#1101 Update some unit tests to confirm changes work * MarimerLLC#1101 Add RegisterProperty overloads for nameof; mark some as Obsolete * MarimerLLC#1101 Add RegisterProperty overloads for nameof; mark some as Obsolete * MarimerLLC#1101 Add overloads for RegisterMethod and nameof() * MarimerLLC#1101 Update snippets to use nameof() * Revert refactor that won't work on C# 7 * Clean up and remove old compiler directive code * MarimerLLC#1102 Add data portal operation attributes. * MarimerLLC#787 Add FromServices attribute for use by DI in data portal * MarimerLLC#787 Add reflection method to find data portal method to be invoked based on criteria and DI parameters * MarimerLLC#787 Implement FindMethodForCriteria and tests * MarimerLLC#787 Implement "greedy" DI to minimize ambiguous method exceptions. * Bump Xamarin.Forms from 4.0.0.471375 to 4.0.0.482894 in /Source Bumps Xamarin.Forms from 4.0.0.471375 to 4.0.0.482894. * MarimerLLC#787 Fix attribute type names * MarimerLLC#1101 Fix unit test warnings due to obsolete RegisterProperty methods * MarimerLLC#1101 Resolve RegisterProperty warnings * MarimerLLC#787 Fix issue due to attribute renaming * MarimerLLC#787 Implement CallMethodTryAsync for DI * MarimerLLC#1176 Begin work to allow multiple criteria params for Create * MarimerLLC#787 Enhance ApplicationContext to access IServiceProvider instance * MarimerLLC#1179 Remove WebConfiguration.cs * Organize Csla.Configuration files for clarity * MarimerLLC#1179 MarimerLLC#787 Configuration updates for getting ServiceProvider * Add static method to improve readability * Add editorconfig file for Samples * MarimerLLC#787 Add tests for calling methods with DI * MarimerLLC#787 Fix bugs in the new data portal method location function * MarimerLLC#787 Resolve remaining regression test issues so the new create now passes all tests * MarimerLLC#1176 MarimerLLC#787 Implement fetch/update/insert/execute/delete behaviors * Bump Microsoft.CodeAnalysis.Analyzers from 2.9.2 to 2.9.3 in /Source Bumps [Microsoft.CodeAnalysis.Analyzers](https://github.com/dotnet/roslyn-analyzers) from 2.9.2 to 2.9.3. - [Release notes](https://github.com/dotnet/roslyn-analyzers/releases) - [Commits](dotnet/roslyn-analyzers@v2.9.2...v2.9.3) Signed-off-by: dependabot-preview[bot] <support@dependabot.com> * Bump Xamarin.Forms from 4.0.0.482894 to 4.0.0.497661 in /Source Bumps Xamarin.Forms from 4.0.0.482894 to 4.0.0.497661. Signed-off-by: dependabot-preview[bot] <support@dependabot.com> * Update CONTRIBUTING.md * Update CONTRIBUTING.md * MarimerLLC#787 Get RunLocal working again, support factory types * Revert C# 7.1 dependency due to appveyor build issue * Bump Microsoft.NET.Test.Sdk from 16.1.1 to 16.2.0 in /Source Bumps [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) from 16.1.1 to 16.2.0. - [Release notes](https://github.com/microsoft/vstest/releases) - [Commits](microsoft/vstest@v16.1.1...v16.2.0) Signed-off-by: dependabot-preview[bot] <support@dependabot.com> * Bump Xamarin.Forms from 4.0.0.497661 to 4.0.0.540366 in /Source Bumps Xamarin.Forms from 4.0.0.497661 to 4.0.0.540366. Signed-off-by: dependabot-preview[bot] <support@dependabot.com> * MarimerLLC#1191 Fix EditLevel issue with BusinessRules (really make UndoableBase understand IMobileObject types) * Addresses MarimerLLC#1194, adding an IAuthorizationContext. * Bump Xamarin.Forms from 4.0.0.540366 to 4.1.0.555618 in /Source Bumps Xamarin.Forms from 4.0.0.540366 to 4.1.0.555618. Signed-off-by: dependabot-preview[bot] <support@dependabot.com> * MarimerLLC#1194 Add copyright notice * Bump Microsoft.EntityFrameworkCore from 2.2.4 to 2.2.6 in /Source Bumps [Microsoft.EntityFrameworkCore](https://github.com/aspnet/EntityFrameworkCore) from 2.2.4 to 2.2.6. - [Release notes](https://github.com/aspnet/EntityFrameworkCore/releases) - [Commits](dotnet/efcore@v2.2.4...v2.2.6) Signed-off-by: dependabot-preview[bot] <support@dependabot.com> * Bump Xamarin.Forms from 4.1.0.555618 to 4.1.0.581479 in /Source Bumps Xamarin.Forms from 4.1.0.555618 to 4.1.0.581479. Signed-off-by: dependabot-preview[bot] <support@dependabot.com> * Fix Samples\SimpleNTier - WpfUI missing references * MarimerLLC#1100 Got the analyzer working. * MarimerLLC#1100 Got the code fix working, still needs unit tests. * MarimerLLC#1100 Got all the code in, will do a PR if no other issues arise. * MarimerLLC#1100 Almost done... * MarimerLLC#1100 Almost forgot to change to look for all operations, root and child * Bump Xamarin.Forms from 4.1.0.581479 to 4.1.0.618606 in /Source Bumps Xamarin.Forms from 4.1.0.581479 to 4.1.0.618606. Signed-off-by: dependabot-preview[bot] <support@dependabot.com> * MarimerLLC#1100 Minor analyzer changes based on Roslyn analyzer suggestions and added .md file for CSLA0012 * Bump Microsoft.CodeAnalysis.Analyzers from 2.9.3 to 2.9.4 in /Source Bumps [Microsoft.CodeAnalysis.Analyzers](https://github.com/dotnet/roslyn-analyzers) from 2.9.3 to 2.9.4. - [Release notes](https://github.com/dotnet/roslyn-analyzers/releases) - [Changelog](https://github.com/dotnet/roslyn-analyzers/blob/master/PostReleaseActivities.md) - [Commits](dotnet/roslyn-analyzers@v2.9.3...v2.9.4) Signed-off-by: dependabot-preview[bot] <support@dependabot.com> * MarimerLLC#1212 Fix issues with undo and cloning * MarimerLLC#1212 Major rework of n-level undo interactions with IMobileObject * MarimerLLC#1212 Remove obsolete GetNativeFormatter method * MarimerLLC#1102 Re-implement create and fetch for ChildDataPortal * MarimerLLC#1102 Get create/fetch/update working with ChildDataPortal * Clean up code based on VS recommendations * Fix warnings about xml comments * Clean up code based on VS recommendations * MarimerLLC#1102 Fix bugs related to new ChildDataPortal implementation * Update releasenotes.md * Update releasenotes.md * Fix build issue * MarimerLLC#1205 Add base class for DP operation attributes * MarimerLLC#392 Got the analyzer working. * MarimerLLC#392 Got the code fix working. * MarimerLLC#392 Added Markdown documentation. * MarimerLLC#392 Added Markdown documentation from the right place (hopefully) * MarimerLLC#392 Final commit
* Create unit-testing * Rename unit-testing to unit-testing.md * Bump Microsoft.EntityFrameworkCore from 2.2.1 to 2.2.3 in /Source Bumps [Microsoft.EntityFrameworkCore](https://github.com/aspnet/EntityFrameworkCore) from 2.2.1 to 2.2.3. - [Release notes](https://github.com/aspnet/EntityFrameworkCore/releases) - [Commits](https://github.com/aspnet/EntityFrameworkCore/commits) Signed-off-by: dependabot[bot] <support@dependabot.com> * Update BasicModernTests.cs Added unit test for BeginEdit while using MobileFormatter. * MarimerLLC#1080 Update BasicModernTests.cs Added unit test for BeginEdit while using MobileFormatter. * Bump Microsoft.NETCore.UniversalWindowsPlatform in /Source Bumps [Microsoft.NETCore.UniversalWindowsPlatform](https://github.com/Microsoft/dotnet) from 6.1.9 to 6.2.8. - [Release notes](https://github.com/Microsoft/dotnet/releases) - [Commits](https://github.com/Microsoft/dotnet/commits) Signed-off-by: dependabot[bot] <support@dependabot.com> * MarimerLLC#1080 Fixed issues caused by using MobileFormatter in .NET Framework Fixes MarimerLLC#1080. Updated unit tests to complete the BeginEdit, CancelEdit, and ApplyChanges workflow. Added a factory method for getting a native formatter to support serialization and deserialization within the same process.Added unit tests to showcase the edit level mismatch bug that occurs when using the ViewModelBase class with MobileFormatter. Applied a fix to BusinessListBase to correct the edit level mismatch problem. * Updated to NS1.3, trying to get tests to run... * Bump Xamarin.Forms from 3.4.0.1029999 to 3.6.0.264807 in /Source Bumps Xamarin.Forms from 3.4.0.1029999 to 3.6.0.264807. Signed-off-by: dependabot[bot] <support@dependabot.com> * MarimerLLC#804 Finished project updates for NS1.3. * Updated tests and code to hopefully run on AppVeyor (MarimerLLC#1088) * Updated tests and code to hopefully run on AppVeyor * Updated tests and code to hopefully run on AppVeyor * Create csla-github-flow.md * Update CONTRIBUTING.md * Update csla-github-flow.md * Update csla-github-flow.md * 623 fixing argument serialization issue (MarimerLLC#1089) * MarimerLLC#680 Fixes trivia issue Analyzer no longer removes leading and trailing trivia from new field node. * Closes MarimerLLC#623 * MarimerLLC#750 updated styles * Update github flow doc - watch for changes * Add link to Jonny's blog * MarimerLLC#1091 Finished cleanup. * 925 flag new keyword usage (MarimerLLC#1095) Closes MarimerLLC#925 Added new analyzer * 828-add-analyzer-docs * 828-add-analyzer-docs * Bump Microsoft.CodeAnalysis.Analyzers from 2.6.3 to 2.9.1 in /Source Bumps [Microsoft.CodeAnalysis.Analyzers](https://github.com/dotnet/roslyn-analyzers) from 2.6.3 to 2.9.1. - [Release notes](https://github.com/dotnet/roslyn-analyzers/releases) - [Commits](dotnet/roslyn-analyzers@v2.6.3...v2.9.1) Signed-off-by: dependabot[bot] <support@dependabot.com> * Update Books-and-videos.md * Update What-is-CSLA-.NET.md * Update index.md * Create code-generators.md * Update index.md * MarimerLLC#1043 Update GetUser methods to return unauthenticated principal instead of null * Clean up some unit tests. * Resolve compiler warnings about test code. * Resolve erroneous unit test compiler warnings. * MarimerLLC#1070 Remove unused legacy Silverlight test code. * MarimerLLC#1038 Set default transaction timeout to 600 seconds * MarimerLLC#754 Fix comment * MarimerLLC#1053 Update nuspec files to use license element * Update version numbers to 5.0.0 * MarimerLLC#1109 Add ContextManager property to CslaConfiguration. * MarimerLLC#1059 Add AsyncManualResetEvent and tests * MarimerLLC#1059 Add SyncTask and use in HttpProxy for sync operations * Ensure SimpleDataPortal async mismatch checks are passed concretes rather than type safe casts which could be null. * Remove legacy files * MarimerLLC#1059 Add TaskExtensions and tests; use in HttpProxy * MarimerLLC#1059 Make .NET 4.0 retain old behavior * MarimerLLC#1059 Implement sync code in HttpProxy that works from Windows Forms * Ensure that explicit NULL default values for string properties are honoured rather than being altered to string.Empty. "default" defaults remain string.Empty. * MarimerLLC#1059 Remove unneeded task extension classes and tests * Add .NET 4 and 4.5 projects to CI build * Bump Xamarin.Forms from 3.6.0.264807 to 3.6.0.293080 in /Source Bumps Xamarin.Forms from 3.6.0.264807 to 3.6.0.293080. Signed-off-by: dependabot[bot] <support@dependabot.com> * Add notes on working against a maintenance branch * MarimerLLC#1059 HttpProxy with HttpClient and WebClient support * MarimerLLC#1119 Update bootstrap version * MarimerLLC#1115 Remove private constructors from templates (replacing with public ctors where appropriate) * MarimerLLC#1111 Update website URL to https://cslanet.com; remove unused android tests * Update release notes for version 5.0.0 prerelease * Add missing work item to notes * Add contributor info * Bump MSTest.TestFramework from 1.2.1 to 1.4.0 in /Source Bumps [MSTest.TestFramework](https://github.com/microsoft/testfx) from 1.2.1 to 1.4.0. - [Release notes](https://github.com/microsoft/testfx/releases) - [Commits](microsoft/testfx@v1.2.1...1.4.0) Signed-off-by: dependabot[bot] <support@dependabot.com> * Bump Microsoft.NET.Test.Sdk from 15.7.0 to 16.0.1 in /Source Bumps [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) from 15.7.0 to 16.0.1. - [Release notes](https://github.com/microsoft/vstest/releases) - [Commits](microsoft/vstest@v15.7.0...v16.0.1) Signed-off-by: dependabot[bot] <support@dependabot.com> * Bump MSTest.TestAdapter from 1.2.1 to 1.4.0 in /Source Bumps [MSTest.TestAdapter](https://github.com/microsoft/testfx) from 1.2.1 to 1.4.0. - [Release notes](https://github.com/microsoft/testfx/releases) - [Commits](microsoft/testfx@v1.2.1...1.4.0) Signed-off-by: dependabot[bot] <support@dependabot.com> * Update csla-github-flow.md * MarimerLLC#1125 Fixed issue with AcceptChanges in BusinessListBase Fixes MarimerLLC#1125. Added a unit test to demonstrate the issue with BusinessListBase.AcceptChanges when using the MobileFormatter. Changed the order of operations for setting negative edit levels to 0 during AcceptChanges so that the value passed to child.AcceptChanges matches what is expected by the argument validation in UndoableBase. * Bump Microsoft.Extensions.Configuration.Json in /Source Bumps [Microsoft.Extensions.Configuration.Json](https://github.com/aspnet/Extensions) from 2.1.1 to 2.2.0. - [Release notes](https://github.com/aspnet/Extensions/releases) - [Commits](dotnet/extensions@2.1.1...2.2.0) Signed-off-by: dependabot[bot] <support@dependabot.com> * Bump Microsoft.EntityFrameworkCore from 2.2.3 to 2.2.4 in /Source Bumps [Microsoft.EntityFrameworkCore](https://github.com/aspnet/EntityFrameworkCore) from 2.2.3 to 2.2.4. - [Release notes](https://github.com/aspnet/EntityFrameworkCore/releases) - [Commits](https://github.com/aspnet/EntityFrameworkCore/commits/v2.2.4) Signed-off-by: dependabot[bot] <support@dependabot.com> * Add CSLA 5 info * Update README.md * Create serialization.md * Bump Microsoft.CodeAnalysis.Analyzers from 2.9.1 to 2.9.2 in /Source Bumps [Microsoft.CodeAnalysis.Analyzers](https://github.com/dotnet/roslyn-analyzers) from 2.9.1 to 2.9.2. - [Release notes](https://github.com/dotnet/roslyn-analyzers/releases) - [Commits](dotnet/roslyn-analyzers@v2.9.1...v2.9.2) Signed-off-by: dependabot[bot] <support@dependabot.com> * Bump Xamarin.Forms from 3.6.0.293080 to 3.6.0.344457 in /Source Bumps Xamarin.Forms from 3.6.0.293080 to 3.6.0.344457. Signed-off-by: dependabot[bot] <support@dependabot.com> * Bump Microsoft.NET.Test.Sdk from 16.0.1 to 16.1.0 in /Source Bumps [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) from 16.0.1 to 16.1.0. - [Release notes](https://github.com/microsoft/vstest/releases) - [Commits](microsoft/vstest@v16.0.1...v16.1.0) Signed-off-by: dependabot[bot] <support@dependabot.com> * MarimerLLC#1138 Reorder enum values so compiler directive has no x-plat effect * Add LinkedIn group URL * Add FB page link * Bump System.Data.SqlClient from 4.6.0 to 4.6.1 in /Source Bumps [System.Data.SqlClient](https://github.com/dotnet/corefx) from 4.6.0 to 4.6.1. - [Release notes](https://github.com/dotnet/corefx/releases) - [Commits](https://github.com/dotnet/corefx/commits) Signed-off-by: dependabot[bot] <support@dependabot.com> * MarimerLLC#981 Move NS2 ConnectionManager to new project/namespace; split out SafeSqlDataReader functionality for NS2, leaving old implementation for .NET FX * MarimerLLC#981 Update project metadata; create/update nuget definitions * MarimerLLC#981 Update build sln, target and xml doc output * Bump Xamarin.Forms from 3.6.0.344457 to 4.0.0.425677 in /Source Bumps Xamarin.Forms from 3.6.0.344457 to 4.0.0.425677. Signed-off-by: dependabot[bot] <support@dependabot.com> * MarimerLLC#1152 Autoflush writer * MarimerLLC#1150 Add support for Microsoft.Data.SqlClient * Update with most recent committed changes * MarimerLLC#1151 Modernize NuGet package names * Add notice of NuGet package name changes * MarimerLLC#288 Add default support for flowing of TransactionScope transactions when using async/await pattern * MarimerLLC#1160 Mark Silverlight style data portal methods Obsolete * MarimerLLC#1160 Update tests to stop using Silverlight style data portal calls * Update releasenotes.md * Update releasenotes.md * MarimerLLC#409 Allow async Task business rules via IBusinessRuleAsync and BusinessRuleAsync * MarimerLLC#409 Update readme * MarimerLLC#1102 Refactor server-side data portal code in prep for flexible data portal method names * MarimerLLC#1102 Create and use method name cache * Update Books-and-videos.md * Bump Microsoft.NET.Test.Sdk from 16.1.0 to 16.1.1 in /Source Bumps [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) from 16.1.0 to 16.1.1. - [Release notes](https://github.com/microsoft/vstest/releases) - [Commits](microsoft/vstest@v16.1.0...v16.1.1) * Add UpdateAll to ChildDataPortal and UpdateAllChildren to FieldDataManager * MarimerLLC#1165 Add FlowSynchronizationContext so LocalProxy flows sync context via config * Add note about MarimerLLC#1164 fix * FieldManager UpdateAllChildren tests * Bump Xamarin.Forms from 4.0.0.425677 to 4.0.0.471375 in /Source Bumps Xamarin.Forms from 4.0.0.425677 to 4.0.0.471375. * Add comment for MarimerLLC#1167 * Add contributor note * MarimerLLC#1101 Update some unit tests to confirm changes work * MarimerLLC#1101 Add RegisterProperty overloads for nameof; mark some as Obsolete * MarimerLLC#1101 Add RegisterProperty overloads for nameof; mark some as Obsolete * MarimerLLC#1101 Add overloads for RegisterMethod and nameof() * MarimerLLC#1101 Update snippets to use nameof() * Revert refactor that won't work on C# 7 * Clean up and remove old compiler directive code * MarimerLLC#1102 Add data portal operation attributes. * MarimerLLC#787 Add FromServices attribute for use by DI in data portal * MarimerLLC#787 Add reflection method to find data portal method to be invoked based on criteria and DI parameters * MarimerLLC#787 Implement FindMethodForCriteria and tests * MarimerLLC#787 Implement "greedy" DI to minimize ambiguous method exceptions. * Bump Xamarin.Forms from 4.0.0.471375 to 4.0.0.482894 in /Source Bumps Xamarin.Forms from 4.0.0.471375 to 4.0.0.482894. * MarimerLLC#787 Fix attribute type names * MarimerLLC#1101 Fix unit test warnings due to obsolete RegisterProperty methods * MarimerLLC#1101 Resolve RegisterProperty warnings * MarimerLLC#787 Fix issue due to attribute renaming * MarimerLLC#787 Implement CallMethodTryAsync for DI * MarimerLLC#1176 Begin work to allow multiple criteria params for Create * MarimerLLC#787 Enhance ApplicationContext to access IServiceProvider instance * MarimerLLC#1179 Remove WebConfiguration.cs * Organize Csla.Configuration files for clarity * MarimerLLC#1179 MarimerLLC#787 Configuration updates for getting ServiceProvider * Add static method to improve readability * Add editorconfig file for Samples * MarimerLLC#787 Add tests for calling methods with DI * MarimerLLC#787 Fix bugs in the new data portal method location function * MarimerLLC#787 Resolve remaining regression test issues so the new create now passes all tests * MarimerLLC#1176 MarimerLLC#787 Implement fetch/update/insert/execute/delete behaviors * Bump Microsoft.CodeAnalysis.Analyzers from 2.9.2 to 2.9.3 in /Source Bumps [Microsoft.CodeAnalysis.Analyzers](https://github.com/dotnet/roslyn-analyzers) from 2.9.2 to 2.9.3. - [Release notes](https://github.com/dotnet/roslyn-analyzers/releases) - [Commits](dotnet/roslyn-analyzers@v2.9.2...v2.9.3) Signed-off-by: dependabot-preview[bot] <support@dependabot.com> * Bump Xamarin.Forms from 4.0.0.482894 to 4.0.0.497661 in /Source Bumps Xamarin.Forms from 4.0.0.482894 to 4.0.0.497661. Signed-off-by: dependabot-preview[bot] <support@dependabot.com> * Update CONTRIBUTING.md * Update CONTRIBUTING.md * MarimerLLC#787 Get RunLocal working again, support factory types * Revert C# 7.1 dependency due to appveyor build issue * Bump Microsoft.NET.Test.Sdk from 16.1.1 to 16.2.0 in /Source Bumps [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) from 16.1.1 to 16.2.0. - [Release notes](https://github.com/microsoft/vstest/releases) - [Commits](microsoft/vstest@v16.1.1...v16.2.0) Signed-off-by: dependabot-preview[bot] <support@dependabot.com> * Bump Xamarin.Forms from 4.0.0.497661 to 4.0.0.540366 in /Source Bumps Xamarin.Forms from 4.0.0.497661 to 4.0.0.540366. Signed-off-by: dependabot-preview[bot] <support@dependabot.com> * MarimerLLC#1191 Fix EditLevel issue with BusinessRules (really make UndoableBase understand IMobileObject types) * Addresses MarimerLLC#1194, adding an IAuthorizationContext. * Bump Xamarin.Forms from 4.0.0.540366 to 4.1.0.555618 in /Source Bumps Xamarin.Forms from 4.0.0.540366 to 4.1.0.555618. Signed-off-by: dependabot-preview[bot] <support@dependabot.com> * MarimerLLC#1194 Add copyright notice * Bump Microsoft.EntityFrameworkCore from 2.2.4 to 2.2.6 in /Source Bumps [Microsoft.EntityFrameworkCore](https://github.com/aspnet/EntityFrameworkCore) from 2.2.4 to 2.2.6. - [Release notes](https://github.com/aspnet/EntityFrameworkCore/releases) - [Commits](dotnet/efcore@v2.2.4...v2.2.6) Signed-off-by: dependabot-preview[bot] <support@dependabot.com> * Bump Xamarin.Forms from 4.1.0.555618 to 4.1.0.581479 in /Source Bumps Xamarin.Forms from 4.1.0.555618 to 4.1.0.581479. Signed-off-by: dependabot-preview[bot] <support@dependabot.com> * Fix Samples\SimpleNTier - WpfUI missing references * MarimerLLC#1100 Got the analyzer working. * MarimerLLC#1100 Got the code fix working, still needs unit tests. * MarimerLLC#1100 Got all the code in, will do a PR if no other issues arise. * MarimerLLC#1100 Almost done... * MarimerLLC#1100 Almost forgot to change to look for all operations, root and child * Bump Xamarin.Forms from 4.1.0.581479 to 4.1.0.618606 in /Source Bumps Xamarin.Forms from 4.1.0.581479 to 4.1.0.618606. Signed-off-by: dependabot-preview[bot] <support@dependabot.com> * MarimerLLC#1100 Minor analyzer changes based on Roslyn analyzer suggestions and added .md file for CSLA0012 * Bump Microsoft.CodeAnalysis.Analyzers from 2.9.3 to 2.9.4 in /Source Bumps [Microsoft.CodeAnalysis.Analyzers](https://github.com/dotnet/roslyn-analyzers) from 2.9.3 to 2.9.4. - [Release notes](https://github.com/dotnet/roslyn-analyzers/releases) - [Changelog](https://github.com/dotnet/roslyn-analyzers/blob/master/PostReleaseActivities.md) - [Commits](dotnet/roslyn-analyzers@v2.9.3...v2.9.4) Signed-off-by: dependabot-preview[bot] <support@dependabot.com> * MarimerLLC#1212 Fix issues with undo and cloning * MarimerLLC#1212 Major rework of n-level undo interactions with IMobileObject * MarimerLLC#1212 Remove obsolete GetNativeFormatter method * MarimerLLC#1102 Re-implement create and fetch for ChildDataPortal * MarimerLLC#1102 Get create/fetch/update working with ChildDataPortal * Clean up code based on VS recommendations * Fix warnings about xml comments * Clean up code based on VS recommendations * MarimerLLC#1102 Fix bugs related to new ChildDataPortal implementation * Update releasenotes.md * Update releasenotes.md * Fix build issue * MarimerLLC#1205 Add base class for DP operation attributes * MarimerLLC#392 Got the analyzer working. * MarimerLLC#392 Got the code fix working. * MarimerLLC#392 Added Markdown documentation. * MarimerLLC#392 Added Markdown documentation from the right place (hopefully) * MarimerLLC#392 Final commit
This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs. |
Describe the bug
When setting the "CslaSerializationFormatter" to "MobileFormatter" on a .NET Framework client, any call to the BeginEdit method of UndoableBase throws an exception.
Version and Platform
CSLA version: 4.9.0
OS: Windows 10
Platform: WPF
Code that Fails
FieldDataManager.cs Line 525: formatter.Serialize(buffer, state);
MobileFormatter.cs Line 137: if (!(obj is IMobileObject mobile))
Additional context
Method calls that trigger this behavior:
ViewModelBase.cs Line 148: undo.BeginEdit();
BusinessBase.cs Line 891: CopyState(this.EditLevel + 1);
UndoableBase.cs Line 468: ((Core.IUndoableObject)value).CopyState(this.EditLevel + 1, BindingEdit);
Some additional considerations:
The implementations of IUndoableBase that I have examined treat only properties/fields that implement IUndoableBase as child objects. The MobileFormatter implementation treats any object that implements IMobileObject as a child object when passing it to the CslaWriter.
When trying to troubleshoot this issue with a local copy of the code, I ran into an issue where the CslaBinaryWriter would fall through to CslaBinaryWriter.cs Line 216: throw new NotSupportedException(Resources.BinaryWriterObjectSerializationException);
Most of the business objects in my project use a struct to provide additional context for GUIDs. This struct implements IMobileObject to allow the business objects to be serializable using the MobileFormatter. When I ran into the discrepancy in how a child object is defined, I decided it would be best to leave this one to the experts.
The text was updated successfully, but these errors were encountered: