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);
            }
        }
Exemple #2
0
 /// <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));
 }