diff --git a/.editorconfig b/.editorconfig
index ab40da7cb8e..90cf6ec6a8b 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -10,6 +10,11 @@ end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
+dotnet_diagnostic.CA2327.severity = error
+dotnet_diagnostic.CA2329.severity = error
+dotnet_diagnostic.CA2330.severity = error
+dotnet_diagnostic.CA2328.severity = error
+dotnet_diagnostic.CA2326.severity = warning
[*.tt]
insert_final_newline = false
diff --git a/src/DynamoCore/DynamoCore.csproj b/src/DynamoCore/DynamoCore.csproj
index 305c7db289e..9a8babf22fe 100644
--- a/src/DynamoCore/DynamoCore.csproj
+++ b/src/DynamoCore/DynamoCore.csproj
@@ -181,4 +181,8 @@
+
+ true
+ All
+
diff --git a/src/DynamoCore/Graph/Nodes/DummyNode.cs b/src/DynamoCore/Graph/Nodes/DummyNode.cs
index cdb6e214c12..5f9cd437aee 100644
--- a/src/DynamoCore/Graph/Nodes/DummyNode.cs
+++ b/src/DynamoCore/Graph/Nodes/DummyNode.cs
@@ -1,4 +1,4 @@
-using Autodesk.DesignScript.Runtime;
+using Autodesk.DesignScript.Runtime;
using Dynamo.Core;
using Dynamo.Engine;
using Dynamo.Graph.Nodes.NodeLoaders;
@@ -546,7 +546,7 @@ internal NodeModel GetNodeModelForDummyNode(string json, LibraryServices library
Console.WriteLine(args.ErrorContext.Error);
},
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
- TypeNameHandling = TypeNameHandling.Auto,
+ TypeNameHandling = TypeNameHandling.None,
Formatting = Newtonsoft.Json.Formatting.Indented,
Culture = CultureInfo.InvariantCulture,
Converters = new List{
diff --git a/src/DynamoCore/Graph/Workspaces/WorkspaceModel.cs b/src/DynamoCore/Graph/Workspaces/WorkspaceModel.cs
index e447d1e2431..bc856d3685b 100644
--- a/src/DynamoCore/Graph/Workspaces/WorkspaceModel.cs
+++ b/src/DynamoCore/Graph/Workspaces/WorkspaceModel.cs
@@ -70,7 +70,7 @@ static internal ExtraWorkspaceViewInfo ExtraWorkspaceViewInfoFromJson(string jso
Console.WriteLine(args.ErrorContext.Error);
},
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
- TypeNameHandling = TypeNameHandling.Auto,
+ TypeNameHandling = TypeNameHandling.None,
Formatting = Newtonsoft.Json.Formatting.Indented,
Culture = CultureInfo.InvariantCulture
};
@@ -2289,7 +2289,7 @@ public static WorkspaceModel FromJson(string json, LibraryServices libraryServic
Console.WriteLine(args.ErrorContext.Error);
},
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
- TypeNameHandling = TypeNameHandling.Auto,
+ TypeNameHandling = TypeNameHandling.None,
Formatting = Newtonsoft.Json.Formatting.Indented,
Culture = CultureInfo.InvariantCulture,
Converters = new List{
@@ -2326,7 +2326,7 @@ public static WorkspaceModel FromJson(string json, LibraryServices libraryServic
Console.WriteLine(args.ErrorContext.Error);
},
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
- TypeNameHandling = TypeNameHandling.Auto,
+ TypeNameHandling = TypeNameHandling.None,
Formatting = Newtonsoft.Json.Formatting.Indented,
Culture = CultureInfo.InvariantCulture,
Converters = new List{
diff --git a/src/DynamoCore/Models/DynamoModel.cs b/src/DynamoCore/Models/DynamoModel.cs
index c9897a9f28e..e233387a79f 100644
--- a/src/DynamoCore/Models/DynamoModel.cs
+++ b/src/DynamoCore/Models/DynamoModel.cs
@@ -2118,7 +2118,7 @@ static private DynamoPreferencesData DynamoPreferencesDataFromJson(string json)
Console.WriteLine(args.ErrorContext.Error);
},
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
- TypeNameHandling = TypeNameHandling.Auto,
+ TypeNameHandling = TypeNameHandling.None,
Formatting = Newtonsoft.Json.Formatting.Indented,
Culture = CultureInfo.InvariantCulture
};
diff --git a/src/DynamoCore/Models/RecordableCommands.cs b/src/DynamoCore/Models/RecordableCommands.cs
index c866aeb5eea..33250cac9ed 100644
--- a/src/DynamoCore/Models/RecordableCommands.cs
+++ b/src/DynamoCore/Models/RecordableCommands.cs
@@ -31,24 +31,6 @@ public abstract class RecordableCommand
// See property for more details.
protected bool redundant = false;
- ///
- /// Settings that is used for serializing commands
- ///
- protected static JsonSerializerSettings jsonSettings;
-
- ///
- /// Initialize commands serializing settings
- ///
- static RecordableCommand()
- {
- jsonSettings = new JsonSerializerSettings()
- {
- TypeNameHandling = TypeNameHandling.Objects,
- ContractResolver = new CamelCasePropertyNamesContractResolver(),
- Culture = CultureInfo.InvariantCulture
- };
- }
-
#endregion
#region Public Class Operational Methods
@@ -109,18 +91,6 @@ internal XmlElement Serialize(XmlDocument document)
return element;
}
- ///
- /// This method serializes the RecordableCommand object in the json form.
- /// The resulting string contains command type name and all the
- /// arguments that are required by this command.
- ///
- /// The string can be used for reconstructing RecordableCommand
- /// using Deserialize method
- internal string Serialize()
- {
- return JsonConvert.SerializeObject(this, jsonSettings);
- }
-
///
/// Call this static method to reconstruct a RecordableCommand-derived
/// object given an XmlElement that was previously saved with Serialize
@@ -220,29 +190,6 @@ internal static RecordableCommand Deserialize(XmlElement element)
throw new ArgumentException(message);
}
- ///
- /// Call this static method to reconstruct a RecordableCommand from json
- /// string that contains command name - name of corresponding class inherited
- /// from RecordableCommand, - and all the arguments that are required by this
- /// command.
- ///
- /// Json string that contains command name and all
- /// its arguments.
- /// Reconstructed RecordableCommand
- internal static RecordableCommand Deserialize(string jsonString)
- {
- RecordableCommand command = null;
- try
- {
- command = JsonConvert.DeserializeObject(jsonString, jsonSettings) as RecordableCommand;
- command.IsInPlaybackMode = true;
- return command;
- }
- catch
- {
- throw new ApplicationException("Invalid jsonString for creating RecordableCommand");
- }
- }
#endregion
#region Public Command Properties
diff --git a/src/DynamoCore/PublicAPI.Unshipped.txt b/src/DynamoCore/PublicAPI.Unshipped.txt
index cfa65c57d11..6a7e843509b 100644
--- a/src/DynamoCore/PublicAPI.Unshipped.txt
+++ b/src/DynamoCore/PublicAPI.Unshipped.txt
@@ -2723,7 +2723,6 @@ static Dynamo.Models.DynamoModel.IsTestMode.set -> void
static Dynamo.Models.DynamoModel.ModelBasedRecordableCommand.DeserializeGuid(System.Xml.XmlElement element, Dynamo.Utilities.XmlElementHelper helper) -> System.Collections.Generic.IEnumerable
static Dynamo.Models.DynamoModel.OnRequestDispatcherBeginInvoke(System.Action action) -> void
static Dynamo.Models.DynamoModel.OnRequestDispatcherInvoke(System.Action action) -> void
-static Dynamo.Models.DynamoModel.RecordableCommand.jsonSettings -> Newtonsoft.Json.JsonSerializerSettings
static Dynamo.Models.DynamoModel.RequestDispatcherBeginInvoke -> Dynamo.Models.ActionHandler
static Dynamo.Models.DynamoModel.RequestDispatcherInvoke -> Dynamo.Models.ActionHandler
static Dynamo.Models.DynamoModel.SetUICulture(string locale) -> void
diff --git a/src/DynamoCoreWpf/ViewModels/Watch3D/HelixWatch3DViewModel.cs b/src/DynamoCoreWpf/ViewModels/Watch3D/HelixWatch3DViewModel.cs
index c9dea063d99..00dbb0f6cf5 100644
--- a/src/DynamoCoreWpf/ViewModels/Watch3D/HelixWatch3DViewModel.cs
+++ b/src/DynamoCoreWpf/ViewModels/Watch3D/HelixWatch3DViewModel.cs
@@ -794,7 +794,7 @@ protected override void OnWorkspaceOpening(object obj)
Console.WriteLine(args.ErrorContext.Error);
},
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
- TypeNameHandling = TypeNameHandling.Auto,
+ TypeNameHandling = TypeNameHandling.None,
Formatting = Newtonsoft.Json.Formatting.Indented,
Culture = CultureInfo.InvariantCulture
};
diff --git a/test/DynamoCoreTests/Models/RecordableCommandsTest.cs b/test/DynamoCoreTests/Models/RecordableCommandsTest.cs
index 3c6c1fa30d5..64d42783272 100644
--- a/test/DynamoCoreTests/Models/RecordableCommandsTest.cs
+++ b/test/DynamoCoreTests/Models/RecordableCommandsTest.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml;
@@ -53,12 +53,12 @@ public void TestRecordableCommand()
//The tag passed as parameter is null, then it will raise an exception later
var cmd = new Mock(null);
var pausePlaybackCommand = new DynamoModel.PausePlaybackCommand(20);
-
+ var xmldoc= new XmlDocument();
//Act
- var xmlElements = pausePlaybackCommand.Serialize();
-
+ var xmlElements = pausePlaybackCommand.Serialize(xmldoc);
+
//Assert
- Assert.IsNotNull(JToken.Parse(xmlElements));//Verify that the json serialized is valid
+ Assert.IsNotNull(xmlElements);
//This will execute the exception section in RecordableCommand(string tag), because tag is null
Assert.Throws(() => executive.ExecuteCommand(cmd.Object, "TestRecordable", "ExtensionTests"));
@@ -92,8 +92,7 @@ public void TestRecordableCommandDeserialize()
XmlDocument xmlDocument = new XmlDocument();
XmlElement elementAddPresetCommand = AddPresetCommand.Serialize(xmlDocument);
- var jsonAddPresetCommand = AddPresetCommand.Serialize();
-
+ var xmlAddPresetCommand = AddPresetCommand.Serialize(xmlDocument);
var helper = new XmlElementHelper(elementAddPresetCommand);
Guid gWorkspace = Guid.NewGuid();
@@ -109,12 +108,6 @@ public void TestRecordableCommandDeserialize()
var deserializedAddPresetCommand = DynamoModel.RecordableCommand.Deserialize(elementAddPresetCommand);
var deserializedApplyPresetCommand = DynamoModel.RecordableCommand.Deserialize(elementApplyPresetCommand);
- //This will execute the overloaded Deserialize method (the one receiving a string as parameter)
- var deserializedFromJson = DynamoModel.RecordableCommand.Deserialize(jsonAddPresetCommand);
-
- //This will generate a invalid json string, so when it's deserialized will raise an exception
- jsonAddPresetCommand = jsonAddPresetCommand.Replace('{', '<');
-
//This is a fake command so when it's deserialized will raise an exception
XmlElement elemTest = xmlDocument.CreateElement("TestCommand");
Assert.Throws(() => DynamoModel.RecordableCommand.Deserialize(elemTest));
@@ -123,9 +116,6 @@ public void TestRecordableCommandDeserialize()
//This will check that the Deserialized commands are valid
Assert.IsNotNull(deserializedAddPresetCommand);
Assert.IsNotNull(deserializedApplyPresetCommand);
- Assert.IsNotNull(deserializedFromJson);
- Assert.Throws(() => DynamoModel.RecordableCommand.Deserialize(jsonAddPresetCommand));
-
}
}