Пример #1
0
        private bool IsSingleItemRequest(
            XElement compositeDefinition,
            IResourceModel resourceModel,
            IDictionary <string, object> queryStringParameters)
        {
            var currentElt = compositeDefinition.Element("BaseResource");

            if (currentElt == null)
            {
                throw new Exception("Unable to find the main 'Resource' element of the composite definition.");
            }

            string logicalSchema = currentElt.Attributes()
                                   .SingleOrDefault(x => x.Name.ToString().EqualsIgnoreCase(CompositeDefinitionHelper.LogicalSchema))
                                   ?.Value ?? EdFiConventions.LogicalName;

            var physicalName = resourceModel.GetPhysicalNameForLogicalName(logicalSchema);

            var currentModel = resourceModel.GetResourceByFullName(new FullName(physicalName, currentElt.AttributeValue(CompositeDefinitionHelper.Name)));

            return(currentModel.IsSingleItemRequest(queryStringParameters.ToList()));
        }
        public TBuildResult Process(
            XElement compositeDefinition,
            IResourceModel resourceModel,
            TBuilderContext builderContext)
        {
            var currentElt = compositeDefinition.Element(CompositeDefinitionHelper.BaseResource);

            if (currentElt == null)
            {
                throw new Exception("Unable to find the main 'Resource' element of the composite definition.");
            }

            var resourceLogicalName = currentElt.AttributeValue(CompositeDefinitionHelper.LogicalSchema) ??
                                      EdFiConventions.LogicalName;

            var resourcePhysicalName = resourceModel.SchemaNameMapProvider
                                       .GetSchemaMapByLogicalName(resourceLogicalName)
                                       .PhysicalName;

            // Composites does not support extensions
            var currentModel =
                resourceModel.GetResourceByFullName(
                    new FullName(resourcePhysicalName, currentElt.AttributeValue(CompositeDefinitionHelper.Name)));

            var processorContext = new CompositeDefinitionProcessorContext(
                compositeDefinition,
                resourceModel,
                currentElt,
                currentModel,
                null,
                null,
                null,
                0,
                null);

            return(ProcessDefinition(default(TBuildResult), builderContext, processorContext));
        }