Example #1
0
        /// <summary>
        /// Initializes the root items into a lookup so that TpSync can inject roots
        /// under Sitecore items that are in the database that are TpSynced
        /// </summary>
        protected virtual void EnsureRootsInitialized()
        {
            if (RootIds != null)
            {
                return;
            }

            lock (_rootIdInitLock)
            {
                if (RootIds != null)
                {
                    return;
                }

                var rootItems = _rootPathResolver.GetRootSerializedItems()
                                .Where(root => root.DatabaseName.Equals(Database.Name));

                var rootItemLookup = new Dictionary <Guid, IReadOnlyList <ID> >();

                foreach (var root in rootItems)
                {
                    var items = rootItemLookup.ContainsKey(root.ParentId)
                                                ? new List <ID>(rootItemLookup[root.ParentId])
                                                : new List <ID>();

                    items.Add(new ID(root.Id));

                    rootItemLookup[root.ParentId] = items.AsReadOnly();
                }

                RootIds = new ReadOnlyDictionary <Guid, IReadOnlyList <ID> >(rootItemLookup);
            }
        }