private void ProcessChildren(TBuildResult parentResult, CompositeDefinitionProcessorContext processorContext, TBuilderContext parentingBuilderContext) { var resourceModel = processorContext.ResourceModel; XElement currentElt = processorContext.CurrentElement; ResourceClassBase currentResourceClass = processorContext.CurrentResourceClass; // Iterate through children (Collection, EmbeddedObject, Resource or Reference) var otherChildren = currentElt.Elements(CompositeDefinitionHelper.Collection) .Concat(currentElt.Elements(CompositeDefinitionHelper.EmbeddedObject)) .Concat(currentElt.Elements(CompositeDefinitionHelper.LinkedCollection)) .Concat(currentElt.Elements(CompositeDefinitionHelper.ReferencedResource)); int childIndex = 0; foreach (var childElt in otherChildren) { var childProcessorContext = CreateChildProcessorContext( parentResult, processorContext, parentingBuilderContext, childElt, currentResourceClass, resourceModel, childIndex); if (childProcessorContext == null) { continue; } var childBuilderContext = _compositeBuilder.CreateChildContext(parentingBuilderContext, childProcessorContext); childIndex++; ProcessDefinition(parentResult, childBuilderContext, childProcessorContext); } }
/// <summary> /// Creates a new builder context to be used for processing a child element. /// </summary> /// <param name="parentingBuilderContext">The parent context to be used to derive the new child context.</param> /// <param name="childProcessorContext"></param> /// <returns>The new builder context.</returns> public HqlBuilderContext CreateChildContext( HqlBuilderContext parentingBuilderContext, CompositeDefinitionProcessorContext childProcessorContext) { return(_next.CreateChildContext(parentingBuilderContext, childProcessorContext)); }