Ejemplo n.º 1
0
        /// <summary>
        /// Resolves metadata from the specified file.
        /// </summary>
        /// <param name="fileInfo">The file information.</param>
        /// <returns>A list of metadata sections.</returns>
        public IEnumerable <MetadataSection> Resolve(FileInfo fileInfo)
        {
            using (FileStream fileStream = fileInfo.Open(FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                using (XmlReader reader = XmlReader.Create(fileStream))
                {
                    MetadataFileType type = DetermineFileType(reader);
                    switch (type)
                    {
                    case MetadataFileType.Wsdl:
                        return(LoadAsWsdl(reader, fileInfo.FullName));

                    case MetadataFileType.Xsd:
                        return(LoadAsXmlSchema(reader, fileInfo.FullName));

                    case MetadataFileType.Policy:
                        return(LoadAsPolicy(reader, fileInfo.FullName));

                    case MetadataFileType.Epr:
                        return(LoadAsEpr(reader, fileInfo.FullName));

                    case MetadataFileType.UnknownXml:
                        return(LoadAsUnknownXml(reader, fileInfo.FullName));
                    }
                    throw new MetadataDiscoveryException("The file '{0}' does not appear to be an XML metadata file.");
                }
            }
        }
Ejemplo n.º 2
0
        internal async Task LoadFromStreamAsync(Stream stream, string uri, string basePath, CancellationToken cancellationToken)
        {
            using (var reader = XmlNS.XmlReader.Create(stream, new XmlNS.XmlReaderSettings()
            {
                XmlResolver = null, DtdProcessing = XmlNS.DtdProcessing.Ignore
            }))
            {
                MetadataFileType fileType = DetermineFileType(reader);

                switch (fileType)
                {
                case MetadataFileType.Xsd:
                    await LoadAsXmlSchemaAsync(reader, uri, basePath, cancellationToken).ConfigureAwait(false);

                    break;

                case MetadataFileType.Wsdl:
                    await LoadAsWsdlAsync(reader, uri, basePath, cancellationToken).ConfigureAwait(false);

                    break;

                case MetadataFileType.Policy:
                    LoadAsPolicy(reader);
                    break;

                case MetadataFileType.Epr:
                    await LoadAsEPRAsync(reader, cancellationToken).ConfigureAwait(false);

                    break;

                case MetadataFileType.UnknownXml:
                    LoadAsUnknownXml(reader);
                    break;

                default:
                    throw new MetadataExchangeException(MetadataResources.ErrNotXmlMetadataFileFormat, uri);
                }
            }
        }
Ejemplo n.º 3
0
        private static Edmx Load(Edmx edmx, MetadataFileType fileType, Stream metadataStream)
        {
            switch (fileType)
            {
            case MetadataFileType.ConceptualModel:
                edmx.Runtimes.First().ConceptualModels.ConceptualSchema = ConceptualSchema.Load(metadataStream);
                return(edmx);

            case MetadataFileType.StorageModel:
                edmx.Runtimes.First().StorageModels.StorageSchema = StorageSchema.Load(metadataStream);
                return(edmx);

            case MetadataFileType.Mapping:
                edmx.Runtimes.First().Mappings.Mapping = Mapping.Load(metadataStream);
                return(edmx);

            case MetadataFileType.Edmx:
                return(Load(metadataStream));

            default:
                throw new ArgumentException(String.Format("The fileType '{0}' must represent an edmx, csdl, ssdl or msl file.", fileType));
            }
        }