From e53232320a6461f78f6dd8c22b69bd49b2d0a842 Mon Sep 17 00:00:00 2001 From: Kevin Jump Date: Mon, 25 Sep 2023 11:56:56 +0100 Subject: [PATCH] remove redundant parent lookup when parent guid is empty. --- .../Serializers/ContentSerializerBase.cs | 39 +++++++++++-------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/uSync.Core/Serialization/Serializers/ContentSerializerBase.cs b/uSync.Core/Serialization/Serializers/ContentSerializerBase.cs index 83b3dfa9..0300a0d9 100644 --- a/uSync.Core/Serialization/Serializers/ContentSerializerBase.cs +++ b/uSync.Core/Serialization/Serializers/ContentSerializerBase.cs @@ -341,26 +341,33 @@ protected virtual IEnumerable DeserializeBase(TObject item, XElemen var parentNode = info.Element(uSyncConstants.Xml.Parent); if (parentNode != null && parentNode.Attribute(uSyncConstants.Xml.Key).ValueOrDefault(Guid.Empty) != Guid.Empty) { - var parent = FindParent(parentNode, false); - if (parent == null) + if (parentNode.GetKey() == Guid.Empty) { - var friendlyPath = info.Element(uSyncConstants.Xml.Path).ValueOrDefault(string.Empty); - if (!string.IsNullOrWhiteSpace(friendlyPath)) - { - logger.LogDebug("Find Parent failed, will search by path {FriendlyPath}", friendlyPath); - parent = FindParentByPath(friendlyPath); - } - } - - if (parent != null) - { - parentId = parent.Id; - nodePath = CalculateNodePath(item, parent); - nodeLevel = CalculateNodeLevel(item, parent); + logger.LogDebug("Parent is root (-1)"); } else { - logger.LogDebug("Unable to find parent but parent node is set in configuration"); + var parent = FindParent(parentNode, false); + if (parent == null) + { + var friendlyPath = info.Element(uSyncConstants.Xml.Path).ValueOrDefault(string.Empty); + if (!string.IsNullOrWhiteSpace(friendlyPath)) + { + logger.LogDebug("Find Parent failed, will search by path {FriendlyPath}", friendlyPath); + parent = FindParentByPath(friendlyPath); + } + } + + if (parent != null) + { + parentId = parent.Id; + nodePath = CalculateNodePath(item, parent); + nodeLevel = CalculateNodeLevel(item, parent); + } + else + { + logger.LogDebug("Unable to find parent but parent node is set in configuration"); + } } }