internal MetadataImporter(IEnumerable<IPolicyImportExtension> policyImportExtensions,
            MetadataImporterQuotas quotas)
        {
            if (quotas == null)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("quotas");
            }

            if (policyImportExtensions == null)
            {
                policyImportExtensions = LoadPolicyExtensionsFromConfig();
            }

            this.Quotas = quotas;
            this.policyExtensions = new KeyedByTypeCollection<IPolicyImportExtension>(policyImportExtensions);
        }
        internal MetadataImporter(IEnumerable <IPolicyImportExtension> policyImportExtensions,
                                  MetadataImporterQuotas quotas)
        {
            if (quotas == null)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("quotas");
            }

            if (policyImportExtensions == null)
            {
                policyImportExtensions = LoadPolicyExtensionsFromConfig();
            }

            this.Quotas           = quotas;
            this.policyExtensions = new KeyedByTypeCollection <IPolicyImportExtension>(policyImportExtensions);
        }
            ImportedPolicyConversionContext(ServiceEndpoint endpoint, IEnumerable <XmlElement> endpointAssertions,
                                            Dictionary <OperationDescription, IEnumerable <XmlElement> > operationBindingAssertions,
                                            Dictionary <MessageDescription, IEnumerable <XmlElement> > messageBindingAssertions,
                                            Dictionary <FaultDescription, IEnumerable <XmlElement> > faultBindingAssertions,
                                            MetadataImporterQuotas quotas)
                : base(endpoint)
            {
                int remainingAssertionsAllowed = quotas.MaxPolicyAssertions;

                this.endpointAssertions = new PolicyAssertionCollection(new MaxItemsEnumerable <XmlElement>(endpointAssertions, remainingAssertionsAllowed));

                remainingAssertionsAllowed -= this.endpointAssertions.Count;

                foreach (OperationDescription operationDescription in endpoint.Contract.Operations)
                {
                    this.operationBindingAssertions.Add(operationDescription, new PolicyAssertionCollection());

                    foreach (MessageDescription messageDescription in operationDescription.Messages)
                    {
                        this.messageBindingAssertions.Add(messageDescription, new PolicyAssertionCollection());
                    }

                    foreach (FaultDescription faultDescription in operationDescription.Faults)
                    {
                        this.faultBindingAssertions.Add(faultDescription, new PolicyAssertionCollection());
                    }
                }


                foreach (KeyValuePair <OperationDescription, IEnumerable <XmlElement> > entry in operationBindingAssertions)
                {
                    this.operationBindingAssertions[entry.Key].AddRange(new MaxItemsEnumerable <XmlElement>(entry.Value, remainingAssertionsAllowed));
                    remainingAssertionsAllowed -= this.operationBindingAssertions[entry.Key].Count;
                }

                foreach (KeyValuePair <MessageDescription, IEnumerable <XmlElement> > entry in messageBindingAssertions)
                {
                    this.messageBindingAssertions[entry.Key].AddRange(new MaxItemsEnumerable <XmlElement>(entry.Value, remainingAssertionsAllowed));
                    remainingAssertionsAllowed -= this.messageBindingAssertions[entry.Key].Count;
                }

                foreach (KeyValuePair <FaultDescription, IEnumerable <XmlElement> > entry in faultBindingAssertions)
                {
                    this.faultBindingAssertions[entry.Key].AddRange(new MaxItemsEnumerable <XmlElement>(entry.Value, remainingAssertionsAllowed));
                    remainingAssertionsAllowed -= this.faultBindingAssertions[entry.Key].Count;
                }
            }
 public WsdlImporter(MetadataSet metadata, IEnumerable <IPolicyImportExtension> policyImportExtensions, IEnumerable <IWsdlImportExtension> wsdlImportExtensions, MetadataImporterQuotas quotas)
 {
 }
 internal static IEnumerable <PolicyConversionContext> GetPolicyConversionContextEnumerator(ServiceEndpoint endpoint, PolicyAlternatives policyAlternatives,
                                                                                            MetadataImporterQuotas quotas)
 {
     return(ImportedPolicyConversionContext.GetPolicyConversionContextEnumerator(endpoint, policyAlternatives, quotas));
 }
            //
            // Policy Alternative Enumeration code
            //

            public static IEnumerable <PolicyConversionContext> GetPolicyConversionContextEnumerator(ServiceEndpoint endpoint,
                                                                                                     PolicyAlternatives policyAlternatives, MetadataImporterQuotas quotas)
            {
                IEnumerable <Dictionary <MessageDescription, IEnumerable <XmlElement> > >   messageAssertionEnumerator;
                IEnumerable <Dictionary <FaultDescription, IEnumerable <XmlElement> > >     faultAssertionEnumerator;
                IEnumerable <Dictionary <OperationDescription, IEnumerable <XmlElement> > > operationAssertionEnumerator;

                faultAssertionEnumerator     = PolicyIterationHelper.GetCartesianProduct <FaultDescription, IEnumerable <XmlElement> >(policyAlternatives.FaultBindingAlternatives);
                messageAssertionEnumerator   = PolicyIterationHelper.GetCartesianProduct <MessageDescription, IEnumerable <XmlElement> >(policyAlternatives.MessageBindingAlternatives);
                operationAssertionEnumerator = PolicyIterationHelper.GetCartesianProduct <OperationDescription, IEnumerable <XmlElement> >(policyAlternatives.OperationBindingAlternatives);

                foreach (Dictionary <FaultDescription, IEnumerable <XmlElement> > faultAssertionsSelection in faultAssertionEnumerator)
                {
                    foreach (Dictionary <MessageDescription, IEnumerable <XmlElement> > messageAssertionsSelection in messageAssertionEnumerator)
                    {
                        foreach (Dictionary <OperationDescription, IEnumerable <XmlElement> > operationAssertionsSelection in operationAssertionEnumerator)
                        {
                            foreach (IEnumerable <XmlElement> endpointAssertionsSelection in policyAlternatives.EndpointAlternatives)
                            {
                                ImportedPolicyConversionContext conversionContext;
                                try
                                {
                                    conversionContext = new ImportedPolicyConversionContext(endpoint, endpointAssertionsSelection,
                                                                                            operationAssertionsSelection, messageAssertionsSelection, faultAssertionsSelection,
                                                                                            quotas);
                                }
                                catch (MaxItemsEnumeratorExceededMaxItemsException) { yield break; }

                                yield return(conversionContext);
                            }
                        }
                    }
                }
            }
 public WsdlImporter(MetadataSet metadata, IEnumerable<IPolicyImportExtension> policyImportExtensions, IEnumerable<IWsdlImportExtension> wsdlImportExtensions, MetadataImporterQuotas quotas)
 {
 }