private Set <int> GetDescendents(int hvoCommonAncestor, int relativesFlid) { string listPropertyName = Cache.MetaDataCacheAccessor.GetFieldName((uint)relativesFlid); string parentObjName = Cache.MetaDataCacheAccessor.GetClassName((uint)m_cache.GetClassOfObject(hvoCommonAncestor)); string xpathToPart = "./part[@id='" + parentObjName + "-Jt-" + listPropertyName + "']"; XmlNode pathSpec = m_parentToChildrenSpecs.SelectSingleNode(xpathToPart); if (pathSpec == null) { throw new ArgumentException("Expected to find part ({0}) in ParentClassPathsToChildren", xpathToPart); } // get the part spec that gives us the path from obsolete current (parent) list item object // to the new one. using (XmlBrowseViewBaseVc vc = new XmlBrowseViewBaseVc(m_cache, null)) { ManyOnePathSortItem parentItem = new ManyOnePathSortItem(hvoCommonAncestor, null, null); XmlBrowseViewBaseVc.ItemsCollectorEnv collector = new XmlBrowseViewBaseVc.ItemsCollectorEnv(null, m_cache, hvoCommonAncestor); vc.DisplayCell(parentItem, pathSpec, hvoCommonAncestor, collector); if (collector.HvosCollectedInCell != null && collector.HvosCollectedInCell.Count > 0) { return(collector.HvosCollectedInCell); } } return(new Set <int>()); }
private Set <int> GetDescendents(int hvoCommonAncestor, int relativesFlid) { string listPropertyName = Cache.MetaDataCacheAccessor.GetFieldName(relativesFlid); string parentObjName = Cache.ServiceLocator.GetInstance <ICmObjectRepository>().GetObject(hvoCommonAncestor).ClassName; string xpathToPart = "./part[@id='" + parentObjName + "-Jt-" + listPropertyName + "']"; XmlNode pathSpec = m_parentToChildrenSpecs.SelectSingleNode(xpathToPart); Debug.Assert(pathSpec != null, String.Format("You are experiencing a rare and difficult-to-reproduce error (LT- 11443 and linked issues). If you can add any information to the issue or fix it please do. If JohnT is available please call him over. Expected to find part ({0}) in ParentClassPathsToChildren", xpathToPart)); if (pathSpec == null) { return(new Set <int>()); // This just means we don't find a related object. Better than crashing, but not what we intend. } // get the part spec that gives us the path from obsolete current (parent) list item object // to the new one. var vc = new XmlBrowseViewBaseVc(m_cache, null); var parentItem = new ManyOnePathSortItem(hvoCommonAncestor, null, null); var collector = new XmlBrowseViewBaseVc.ItemsCollectorEnv(null, m_cache, hvoCommonAncestor); vc.DisplayCell(parentItem, pathSpec, hvoCommonAncestor, collector); if (collector.HvosCollectedInCell != null && collector.HvosCollectedInCell.Count > 0) { return(collector.HvosCollectedInCell); } return(new Set <int>()); }