public void UpdateNode(NodeFactory.Node node) { lock (this) { // validate sitemap BuildSiteMap(); SiteMapNode n; if (!m_nodes.ContainsKey(node.Id.ToString())) { n = createNode(node.Id.ToString(), node.Name, node.GetProperty(m_defaultDescriptionAlias) != null ? node.GetProperty(m_defaultDescriptionAlias).Value : "", node.Url, findRoles(node.Id, node.Path)); string parentNode = node.Parent == null ? "-1" : node.Parent.Id.ToString(); try { AddNode(n, m_nodes[parentNode]); } catch (Exception ex) { BusinessLogic.Log.Add( LogTypes.Error, -1, String.Format("Error adding node with url '{0}' to SiteMapProvider: {1}", node.Name, ex)); } } else { n = m_nodes[node.Id.ToString()]; n.Url = node.Url; n.Description = node.GetProperty(m_defaultDescriptionAlias) != null ? node.GetProperty(m_defaultDescriptionAlias).Value : ""; n.Title = node.Name; n.Roles = findRoles(node.Id, node.Path).Split(",".ToCharArray()); } } }