private static DataRemovalProcessor.ProcessingContext GetAncestorContext(DataRemovalProcessor.ProcessingContext context, int maxLevel, ITypeId ancestorType) { int num = maxLevel; for (DataRemovalProcessor.ProcessingContext parentContext = context.ParentContext; parentContext != null && num > 0; --num) { if (ancestorType.IsAssignableFrom((ITypeId)parentContext.NodeInfo.Node.Type)) { return(parentContext); } parentContext = parentContext.ParentContext; } return((DataRemovalProcessor.ProcessingContext)null); }
private void CheckForDeletion(DataRemovalProcessor.ProcessingContext context) { if (!this.ShouldRemoveNode(context.NodeInfo.Node)) { return; } DataRemovalProcessor.ProcessingContext processingContext1 = DataRemovalProcessor.GetAncestorContextToDelete(context); if (processingContext1 == null) { processingContext1 = context; } else { for (DataRemovalProcessor.ProcessingContext processingContext2 = context; processingContext2 != processingContext1; processingContext2 = processingContext2.ParentContext) { processingContext2.IsDeleted = true; } } processingContext1.IsDeleted = true; this.documentNodesRemove.Add(processingContext1.NodeInfo); }
private void FindNodesToDelete(DataRemovalProcessor.ProcessingContext context) { this.CheckForDeletion(context); if (context.IsDeleted) { return; } foreach (KeyValuePair <IProperty, DocumentNode> keyValuePair in (IEnumerable <KeyValuePair <IProperty, DocumentNode> >)context.NodeInfo.Node.Properties) { DocumentCompositeNode node = keyValuePair.Value as DocumentCompositeNode; if (node != null) { this.FindNodesToDelete(new DataRemovalProcessor.ProcessingContext(context, node, keyValuePair.Key)); if (context.IsDeleted) { return; } } } if (!context.NodeInfo.Node.SupportsChildren) { return; } for (int index = 0; index < context.NodeInfo.Node.Children.Count; ++index) { DocumentCompositeNode node = context.NodeInfo.Node.Children[index] as DocumentCompositeNode; if (node != null) { this.FindNodesToDelete(new DataRemovalProcessor.ProcessingContext(context, node, index)); if (context.IsDeleted) { break; } } } }
public ProcessingContext(DataRemovalProcessor.ProcessingContext parent, DocumentCompositeNode node, int index) { this.ParentContext = parent; this.NodeInfo = new DataRemovalProcessor.DocumentNodeInfo(node, index); }
public ProcessingContext(DataRemovalProcessor.ProcessingContext parent, DocumentCompositeNode node, IProperty property) { this.ParentContext = parent; this.NodeInfo = new DataRemovalProcessor.DocumentNodeInfo(node, property); }
private static DataRemovalProcessor.ProcessingContext GetAncestorContextToDelete(DataRemovalProcessor.ProcessingContext context) { return(DataRemovalProcessor.GetAncestorContext(context, 1, PlatformTypes.DictionaryEntry) ?? DataRemovalProcessor.GetAncestorContext(context, 3, PlatformTypes.Binding) ?? (DataRemovalProcessor.ProcessingContext)null); }