From 759041c0d49947d8f011d3b2e31c59a3aa309bb1 Mon Sep 17 00:00:00 2001 From: gantaa <43763136+reddyashish@users.noreply.github.com> Date: Fri, 11 Oct 2019 02:43:14 -0400 Subject: [PATCH 1/6] First commit --- src/DynamoCore/Graph/Nodes/DummyNode.cs | 72 ++++++++++++++++--- .../Workspaces/SerializationConverters.cs | 19 +++-- 2 files changed, 77 insertions(+), 14 deletions(-) diff --git a/src/DynamoCore/Graph/Nodes/DummyNode.cs b/src/DynamoCore/Graph/Nodes/DummyNode.cs index 07ef295bdbc..3876a6782ef 100644 --- a/src/DynamoCore/Graph/Nodes/DummyNode.cs +++ b/src/DynamoCore/Graph/Nodes/DummyNode.cs @@ -45,6 +45,7 @@ public DummyNode() LegacyNodeName = "Dynamo.Graph.Nodes.DummyNode"; LegacyFullName = LegacyNodeName; LegacyAssembly = string.Empty; + FunctionName = string.Empty; NodeNature = Nature.Unresolved; Description = GetDescription(); ShouldDisplayPreviewCore = false; @@ -142,6 +143,52 @@ public DummyNode( UpdatePorts(); } + /// + /// This function creates DummyNode with specified number of ports. + /// + /// Id of the original node + /// Number of input ports + /// Number of output ports + /// Assembly of the node + /// Function name of the node + /// Original JSON description of the node + public DummyNode( + string id, + int inputCount, + int outputCount, + string legacyAssembly, + string functionName, + JObject originalElement) + { + GUID = new Guid(id); + + InputCount = inputCount; + OutputCount = outputCount; + + string legacyName = "Unresolved"; + LegacyNodeName = legacyName; + LegacyFullName = legacyName; + Name = legacyName; + FunctionName = functionName; + + OriginalNodeContent = originalElement; + + LegacyAssembly = legacyAssembly; + NodeNature = DummyNode.Nature.Unresolved; + + Description = GetDescription(); + ShouldDisplayPreviewCore = false; + + if (originalElement != null) + { + var legacyFullName = originalElement["FunctionSignature"]; + if (legacyFullName != null) + LegacyFullName = legacyFullName.ToString(); + } + + UpdatePorts(); + } + private void LoadNode(XmlNode nodeElement) { XmlElement originalElement = OriginalXmlNodeContent; @@ -320,29 +367,29 @@ internal string GetDescription() { if (NodeNature == Nature.Deprecated) { - if (string.IsNullOrEmpty(LegacyAssembly)) + if (string.IsNullOrEmpty(FunctionName)) { - const string format = "Node of type '{0}' is now deprecated"; - return string.Format(format, LegacyNodeName); + const string description = "Node is now deprecated"; + return description; } else { - const string format = "Node of type '{0}' ({1}) is now deprecated"; - return string.Format(format, LegacyNodeName, LegacyAssembly); + const string format = "Node '{0}' is now deprecated"; + return string.Format(format, FunctionName); } } if (NodeNature == Nature.Unresolved) { - if (string.IsNullOrEmpty(LegacyAssembly)) + if (string.IsNullOrEmpty(FunctionName)) { - const string format = "Node of type '{0}' cannot be resolved"; - return string.Format(format, LegacyNodeName); + const string description = "Node cannot be resolved"; + return description; } else { - const string format = "Node of type '{0}' ({1}) cannot be resolved"; - return string.Format(format, LegacyNodeName, LegacyAssembly); + const string format = "Node '{0}' cannot be resolved."; + return string.Format(format, FunctionName); } } @@ -370,6 +417,11 @@ internal string GetDescription() /// public string LegacyAssembly { get; private set; } + /// + /// Returns the node's function name + /// + public string FunctionName { get; private set; } + /// /// Returns the original node DSFunction description or UI node type /// diff --git a/src/DynamoCore/Graph/Workspaces/SerializationConverters.cs b/src/DynamoCore/Graph/Workspaces/SerializationConverters.cs index 773e8701eff..25eaf94425c 100644 --- a/src/DynamoCore/Graph/Workspaces/SerializationConverters.cs +++ b/src/DynamoCore/Graph/Workspaces/SerializationConverters.cs @@ -96,11 +96,22 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist { NodeModel node = null; + String typeName = null; + String functionName = null; + var obj = JObject.Load(reader); Type type = null; + try { type = Type.GetType(obj["$type"].Value()); + typeName = obj["$type"].Value().Split(',').FirstOrDefault(); + + if (typeName.Contains("ZeroTouch")) + { + // This assemblyName does not usually contain version information... + functionName = obj["FunctionSignature"].Value().Split('@').FirstOrDefault().Trim(); + } } catch(Exception e) { @@ -115,7 +126,6 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist { List resultList; - var typeName = obj["$type"].Value().Split(',').FirstOrDefault(); // This assemblyName does not usually contain version information... var assemblyName = obj["$type"].Value().Split(',').Skip(1).FirstOrDefault().Trim(); if (assemblyName != null) @@ -159,7 +169,7 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist // If type is still null at this point return a dummy node if (type == null) { - node = CreateDummyNode(obj, assemblyLocation, inPorts, outPorts); + node = CreateDummyNode(obj, assemblyLocation, functionName, inPorts, outPorts); } // Attempt to create a valid node using the type else if (type == typeof(Function)) @@ -223,7 +233,7 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist // Use the functionDescriptor to try and restore the proper node if possible if (functionDescriptor == null) { - node = CreateDummyNode(obj, assemblyLocation, inPorts, outPorts); + node = CreateDummyNode(obj, assemblyLocation, functionName, inPorts, outPorts); } else { @@ -286,7 +296,7 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist return node; } - private DummyNode CreateDummyNode(JObject obj, string assemblyLocation, PortModel[] inPorts, PortModel[] outPorts) + private DummyNode CreateDummyNode(JObject obj, string assemblyLocation, string functionName, PortModel[] inPorts, PortModel[] outPorts) { var inputcount = inPorts.Count(); var outputcount = outPorts.Count(); @@ -296,6 +306,7 @@ private DummyNode CreateDummyNode(JObject obj, string assemblyLocation, PortMode inputcount, outputcount, assemblyLocation, + functionName, obj); } From d983d58686f7c0e74fb53f79fdaacec64f209d60 Mon Sep 17 00:00:00 2001 From: gantaa <43763136+reddyashish@users.noreply.github.com> Date: Mon, 14 Oct 2019 19:10:35 -0400 Subject: [PATCH 2/6] Change the warning message for the node model nodes --- src/DynamoCore/Graph/Nodes/DummyNode.cs | 8 +++--- .../Workspaces/SerializationConverters.cs | 28 +++++++++++-------- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/src/DynamoCore/Graph/Nodes/DummyNode.cs b/src/DynamoCore/Graph/Nodes/DummyNode.cs index 3876a6782ef..dc0b7009ccb 100644 --- a/src/DynamoCore/Graph/Nodes/DummyNode.cs +++ b/src/DynamoCore/Graph/Nodes/DummyNode.cs @@ -369,8 +369,8 @@ internal string GetDescription() { if (string.IsNullOrEmpty(FunctionName)) { - const string description = "Node is now deprecated"; - return description; + const string format = "Node from assembly '{0}' is now deprecated."; + return string.Format(format, LegacyAssembly); } else { @@ -383,8 +383,8 @@ internal string GetDescription() { if (string.IsNullOrEmpty(FunctionName)) { - const string description = "Node cannot be resolved"; - return description; + const string format = "Node from assembly '{0}' cannot be resolved."; + return string.Format(format, LegacyAssembly); } else { diff --git a/src/DynamoCore/Graph/Workspaces/SerializationConverters.cs b/src/DynamoCore/Graph/Workspaces/SerializationConverters.cs index 25eaf94425c..ad042e63890 100644 --- a/src/DynamoCore/Graph/Workspaces/SerializationConverters.cs +++ b/src/DynamoCore/Graph/Workspaces/SerializationConverters.cs @@ -96,8 +96,9 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist { NodeModel node = null; - String typeName = null; - String functionName = null; + String typeName = String.Empty; + String functionName = String.Empty; + String assemblyName = String.Empty; var obj = JObject.Load(reader); Type type = null; @@ -107,11 +108,16 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist type = Type.GetType(obj["$type"].Value()); typeName = obj["$type"].Value().Split(',').FirstOrDefault(); - if (typeName.Contains("ZeroTouch")) - { - // This assemblyName does not usually contain version information... + if (typeName.Contains("ZeroTouch")) + { + // If it is a zero touch node, then get the whole function name including the namespace. functionName = obj["FunctionSignature"].Value().Split('@').FirstOrDefault().Trim(); - } + } + // we get the assembly name from the type string for the node model nodes. + else + { + assemblyName = obj["$type"].Value().Split(',').Skip(1).FirstOrDefault().Trim(); + } } catch(Exception e) { @@ -127,7 +133,7 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist List resultList; // This assemblyName does not usually contain version information... - var assemblyName = obj["$type"].Value().Split(',').Skip(1).FirstOrDefault().Trim(); + assemblyName = obj["$type"].Value().Split(',').Skip(1).FirstOrDefault().Trim(); if (assemblyName != null) { if(this.loadedAssemblies.TryGetValue(assemblyName, out resultList)) @@ -169,7 +175,7 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist // If type is still null at this point return a dummy node if (type == null) { - node = CreateDummyNode(obj, assemblyLocation, functionName, inPorts, outPorts); + node = CreateDummyNode(obj, assemblyName, functionName, inPorts, outPorts); } // Attempt to create a valid node using the type else if (type == typeof(Function)) @@ -233,7 +239,7 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist // Use the functionDescriptor to try and restore the proper node if possible if (functionDescriptor == null) { - node = CreateDummyNode(obj, assemblyLocation, functionName, inPorts, outPorts); + node = CreateDummyNode(obj, assemblyName, functionName, inPorts, outPorts); } else { @@ -296,7 +302,7 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist return node; } - private DummyNode CreateDummyNode(JObject obj, string assemblyLocation, string functionName, PortModel[] inPorts, PortModel[] outPorts) + private DummyNode CreateDummyNode(JObject obj, string legacyAssembly, string functionName, PortModel[] inPorts, PortModel[] outPorts) { var inputcount = inPorts.Count(); var outputcount = outPorts.Count(); @@ -305,7 +311,7 @@ private DummyNode CreateDummyNode(JObject obj, string assemblyLocation, string f obj["Id"].ToString(), inputcount, outputcount, - assemblyLocation, + legacyAssembly, functionName, obj); } From a8c992fa4c4bc81d0e05e99ee8c60e74331a45f7 Mon Sep 17 00:00:00 2001 From: gantaa <43763136+reddyashish@users.noreply.github.com> Date: Tue, 15 Oct 2019 00:06:29 -0400 Subject: [PATCH 3/6] Displaying the type name of the node model node. --- src/DynamoCore/Graph/Nodes/DummyNode.cs | 62 +++++++++++++++++-- .../Workspaces/SerializationConverters.cs | 17 ++++- 2 files changed, 74 insertions(+), 5 deletions(-) diff --git a/src/DynamoCore/Graph/Nodes/DummyNode.cs b/src/DynamoCore/Graph/Nodes/DummyNode.cs index dc0b7009ccb..e28b02c2996 100644 --- a/src/DynamoCore/Graph/Nodes/DummyNode.cs +++ b/src/DynamoCore/Graph/Nodes/DummyNode.cs @@ -189,6 +189,55 @@ public DummyNode( UpdatePorts(); } + /// + /// This function creates DummyNode with specified number of ports. + /// + /// Id of the original node + /// Number of input ports + /// Number of output ports + /// Assembly of the node + /// Function name of the node + /// Type of the node + /// Original JSON description of the node + public DummyNode( + string id, + int inputCount, + int outputCount, + string legacyAssembly, + string functionName, + string typeName, + JObject originalElement) + { + GUID = new Guid(id); + + InputCount = inputCount; + OutputCount = outputCount; + + string legacyName = "Unresolved"; + LegacyNodeName = legacyName; + LegacyFullName = legacyName; + Name = legacyName; + FunctionName = functionName; + + OriginalNodeContent = originalElement; + + LegacyAssembly = legacyAssembly; + TypeName = typeName; + NodeNature = DummyNode.Nature.Unresolved; + + Description = GetDescription(); + ShouldDisplayPreviewCore = false; + + if (originalElement != null) + { + var legacyFullName = originalElement["FunctionSignature"]; + if (legacyFullName != null) + LegacyFullName = legacyFullName.ToString(); + } + + UpdatePorts(); + } + private void LoadNode(XmlNode nodeElement) { XmlElement originalElement = OriginalXmlNodeContent; @@ -369,8 +418,8 @@ internal string GetDescription() { if (string.IsNullOrEmpty(FunctionName)) { - const string format = "Node from assembly '{0}' is now deprecated."; - return string.Format(format, LegacyAssembly); + const string format = "Node of type '{0}',from assembly '{1}', is now deprecated."; + return string.Format(format, TypeName, LegacyAssembly); } else { @@ -383,8 +432,8 @@ internal string GetDescription() { if (string.IsNullOrEmpty(FunctionName)) { - const string format = "Node from assembly '{0}' cannot be resolved."; - return string.Format(format, LegacyAssembly); + const string format = "Node of type '{0}', from assembly '{1}', cannot be resolved."; + return string.Format(format, TypeName, LegacyAssembly); } else { @@ -417,6 +466,11 @@ internal string GetDescription() /// public string LegacyAssembly { get; private set; } + /// + /// Type name of the node. + /// + public string TypeName { get; private set; } + /// /// Returns the node's function name /// diff --git a/src/DynamoCore/Graph/Workspaces/SerializationConverters.cs b/src/DynamoCore/Graph/Workspaces/SerializationConverters.cs index ad042e63890..85542b18c76 100644 --- a/src/DynamoCore/Graph/Workspaces/SerializationConverters.cs +++ b/src/DynamoCore/Graph/Workspaces/SerializationConverters.cs @@ -175,7 +175,7 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist // If type is still null at this point return a dummy node if (type == null) { - node = CreateDummyNode(obj, assemblyName, functionName, inPorts, outPorts); + node = CreateDummyNode(obj, typeName, assemblyName, functionName, inPorts, outPorts); } // Attempt to create a valid node using the type else if (type == typeof(Function)) @@ -316,6 +316,21 @@ private DummyNode CreateDummyNode(JObject obj, string legacyAssembly, string fun obj); } + private DummyNode CreateDummyNode(JObject obj, string typeName, string legacyAssembly, string functionName, PortModel[] inPorts, PortModel[] outPorts) + { + var inputcount = inPorts.Count(); + var outputcount = outPorts.Count(); + + return new DummyNode( + obj["Id"].ToString(), + inputcount, + outputcount, + legacyAssembly, + functionName, + typeName, + obj); + } + /// /// Map old Guids to new Models in the IdReferenceResolver. From d14b311701f3389c6eb9d192b07866d0611a5863 Mon Sep 17 00:00:00 2001 From: gantaa <43763136+reddyashish@users.noreply.github.com> Date: Tue, 15 Oct 2019 01:16:58 -0400 Subject: [PATCH 4/6] Using the whole namespace to check for zerotouch nodes. --- src/DynamoCore/Graph/Workspaces/SerializationConverters.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/DynamoCore/Graph/Workspaces/SerializationConverters.cs b/src/DynamoCore/Graph/Workspaces/SerializationConverters.cs index 85542b18c76..c84ba4e0709 100644 --- a/src/DynamoCore/Graph/Workspaces/SerializationConverters.cs +++ b/src/DynamoCore/Graph/Workspaces/SerializationConverters.cs @@ -108,7 +108,7 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist type = Type.GetType(obj["$type"].Value()); typeName = obj["$type"].Value().Split(',').FirstOrDefault(); - if (typeName.Contains("ZeroTouch")) + if (typeName.Equals("Dynamo.Graph.Nodes.ZeroTouch.DSFunction")) { // If it is a zero touch node, then get the whole function name including the namespace. functionName = obj["FunctionSignature"].Value().Split('@').FirstOrDefault().Trim(); From 69d0cab6a2cee004d6a841dc359f09ed4e3e573b Mon Sep 17 00:00:00 2001 From: gantaa <43763136+reddyashish@users.noreply.github.com> Date: Tue, 15 Oct 2019 14:05:46 -0400 Subject: [PATCH 5/6] Adding test --- test/DynamoCoreTests/DummyNodeTests.cs | 21 +++ .../DummyNodesWarningMessageTest.dyn | 156 ++++++++++++++++++ 2 files changed, 177 insertions(+) create mode 100644 test/core/dummy_node/DummyNodesWarningMessageTest.dyn diff --git a/test/DynamoCoreTests/DummyNodeTests.cs b/test/DynamoCoreTests/DummyNodeTests.cs index 383b61ff2ba..af4a36555d2 100644 --- a/test/DynamoCoreTests/DummyNodeTests.cs +++ b/test/DynamoCoreTests/DummyNodeTests.cs @@ -160,5 +160,26 @@ public void ResolveDummyNodesInsideCustomNodeWorkspace() Assert.AreEqual(0, dummyNodes.Count()); Assert.AreEqual(CurrentDynamoModel.CurrentWorkspace.HasUnsavedChanges, false); } + + [Test] + public void DummyNodesWarningMessageTest() + { + String path = Path.Combine(TestDirectory, @"core\dummy_node\DummyNodesWarningMessageTest.dyn"); + OpenModel(path); + + var dummyNodes = CurrentDynamoModel.CurrentWorkspace.Nodes.OfType(); + Assert.AreEqual(2, dummyNodes.Count()); + + // Asserting the warning message that is displayed for zerotouch and nodemodel dummy nodes. + var zeroTouchDummyNode = dummyNodes.First(); + Assert.AreEqual(zeroTouchDummyNode.NodeNature, DummyNode.Nature.Unresolved); + Assert.AreEqual(zeroTouchDummyNode.FunctionName, "HowickMaker.hMember.ByLineVector"); + Assert.AreEqual(zeroTouchDummyNode.GetDescription(), "Node 'HowickMaker.hMember.ByLineVector' cannot be resolved."); + + var nodeModelDummyNode = dummyNodes.Last(); + Assert.AreEqual(nodeModelDummyNode.NodeNature, DummyNode.Nature.Unresolved); + Assert.AreEqual(nodeModelDummyNode.LegacyAssembly, "SampleLibraryUI"); + Assert.AreEqual(nodeModelDummyNode.GetDescription(), "Node of type 'SampleLibraryUI.Examples.DropDownExample', from assembly 'SampleLibraryUI', cannot be resolved."); + } } } \ No newline at end of file diff --git a/test/core/dummy_node/DummyNodesWarningMessageTest.dyn b/test/core/dummy_node/DummyNodesWarningMessageTest.dyn new file mode 100644 index 00000000000..a225397bfc9 --- /dev/null +++ b/test/core/dummy_node/DummyNodesWarningMessageTest.dyn @@ -0,0 +1,156 @@ +{ + "Uuid": "8ac993b7-6516-45c6-8bac-9ff985fbb0ad", + "IsCustomNode": false, + "Description": null, + "Name": "Dummy node message", + "ElementResolver": { + "ResolutionMap": { + "Point": { + "Key": "Autodesk.DesignScript.Geometry.Point", + "Value": "ProtoGeometry.dll" + } + } + }, + "Inputs": [], + "Outputs": [], + "Nodes": [ + { + "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore", + "NodeType": "FunctionNode", + "FunctionSignature": "HowickMaker.hMember.ByLineVector@Autodesk.DesignScript.Geometry.Line,Autodesk.DesignScript.Geometry.Vector,string", + "Id": "aeb3e5df26cc4f16af55bf0baef46ae1", + "Inputs": [ + { + "Id": "2cda30bf385741c3ad5d4b290d8452c1", + "Name": "webAxis", + "Description": "Line", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "76a24bab17214e1697ab78692268bc77", + "Name": "webNormal", + "Description": "Vector", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + }, + { + "Id": "5cdd38339cef4f09a61f60abd6095076", + "Name": "name", + "Description": "string\nDefault value : \"0\"", + "UsingDefaultValue": true, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Outputs": [ + { + "Id": "e45e1d20e89b422698798660461602e6", + "Name": "hMember", + "Description": "hMember", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Replication": "Auto", + "Description": "Creates an hMember with its web lying along the webAxis, facing webNormal\n\nhMember.ByLineVector (webAxis: Line, webNormal: Vector, name: string = \"0\"): hMember" + }, + { + "ConcreteType": "SampleLibraryUI.Examples.DropDownExample, SampleLibraryUI", + "SelectedIndex": 0, + "SelectedString": "Tywin", + "NodeType": "ExtensionNode", + "Id": "5de408d41309424ea9ab0a9a57011168", + "Inputs": [], + "Outputs": [ + { + "Id": "6c8499495f5d4beeb7e3ca58b861a297", + "Name": "item", + "Description": "The selected item", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Replication": "Disabled", + "Description": "An example drop down node." + } + ], + "Connectors": [], + "Dependencies": [], + "NodeLibraryDependencies": [ + { + "Name": "HowickMaker", + "Version": "0.4.1", + "ReferenceType": "Package", + "Nodes": [ + "aeb3e5df26cc4f16af55bf0baef46ae1" + ] + }, + { + "Name": "Dynamo Samples", + "Version": "2.0.0", + "ReferenceType": "Package", + "Nodes": [ + "5de408d41309424ea9ab0a9a57011168" + ] + } + ], + "Bindings": [], + "View": { + "Dynamo": { + "ScaleFactor": 1.0, + "HasRunWithoutCrash": true, + "IsVisibleInDynamoLibrary": true, + "Version": "2.5.0.6521", + "RunType": "Automatic", + "RunPeriod": "1000" + }, + "Camera": { + "Name": "Background Preview", + "EyeX": -17.0, + "EyeY": 24.0, + "EyeZ": 50.0, + "LookX": 12.0, + "LookY": -13.0, + "LookZ": -58.0, + "UpX": 0.0, + "UpY": 1.0, + "UpZ": 0.0 + }, + "NodeViews": [ + { + "ShowGeometry": true, + "Name": "hMember.ByLineVector", + "Id": "aeb3e5df26cc4f16af55bf0baef46ae1", + "IsSetAsInput": false, + "IsSetAsOutput": false, + "Excluded": false, + "X": 39.256060510822806, + "Y": 268.69482120487669 + }, + { + "ShowGeometry": true, + "Name": "Drop Down Example", + "Id": "5de408d41309424ea9ab0a9a57011168", + "IsSetAsInput": false, + "IsSetAsOutput": false, + "Excluded": false, + "X": 493.04874262470372, + "Y": 283.18790496760249 + } + ], + "Annotations": [], + "X": 82.818344906128914, + "Y": 51.13140818532122, + "Zoom": 0.82346504096947037 + } +} \ No newline at end of file From 2de8a871f3c1adbb909e5e30f11341fe30dee2d0 Mon Sep 17 00:00:00 2001 From: gantaa <43763136+reddyashish@users.noreply.github.com> Date: Wed, 16 Oct 2019 09:31:18 -0400 Subject: [PATCH 6/6] some more comments --- src/DynamoCore/Graph/Nodes/DummyNode.cs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/DynamoCore/Graph/Nodes/DummyNode.cs b/src/DynamoCore/Graph/Nodes/DummyNode.cs index e28b02c2996..dd39bd2a542 100644 --- a/src/DynamoCore/Graph/Nodes/DummyNode.cs +++ b/src/DynamoCore/Graph/Nodes/DummyNode.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Globalization; -using System.Xml; -using Autodesk.DesignScript.Runtime; +using Autodesk.DesignScript.Runtime; using Dynamo.Core; using Dynamo.Engine; using Dynamo.Graph.Nodes.NodeLoaders; @@ -11,6 +7,10 @@ using Dynamo.Utilities; using Newtonsoft.Json; using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Xml; namespace Dynamo.Graph.Nodes { @@ -467,12 +467,12 @@ internal string GetDescription() public string LegacyAssembly { get; private set; } /// - /// Type name of the node. + /// Type name of the node. This is property is only valid for NodeModel dummy nodes /// public string TypeName { get; private set; } /// - /// Returns the node's function name + /// Returns the node's function name. This property is only valid for ZeroTouch dummy nodes /// public string FunctionName { get; private set; }