1 #region Copyright (c) Microsoft Corporation
2 /// <copyright company='Microsoft Corporation'>
3 /// Copyright (c) Microsoft Corporation. All Rights Reserved.
4 /// Information Contained Herein is Proprietary and Confidential.
8 using System.Diagnostics;
10 using System.Xml.Schema;
11 using System.Xml.Serialization;
13 #if WEB_EXTENSIONS_CODE
14 namespace System.Web.Compilation.WCFModel
16 namespace Microsoft.VSDesigner.WCFModel
19 #if WEB_EXTENSIONS_CODE
20 internal class SvcMapFileLoader : MapFileLoader
22 public class SvcMapFileLoader : MapFileLoader
25 private string _mapFilePath;
26 private XmlSchemaSet _mapFileSchemaSet;
27 private XmlSerializer _mapFileSerializer;
29 public SvcMapFileLoader(string mapFilePath)
31 Debug.Assert(!string.IsNullOrEmpty(mapFilePath), "mapFilePath is null!");
33 _mapFilePath = mapFilePath;
36 #region protected overrides methods
38 protected override string MapFileName
40 get { return _mapFilePath; }
43 protected override MapFile Wrap(object mapFileImpl)
45 return mapFileImpl is SvcMapFileImpl ? new SvcMapFile((SvcMapFileImpl)mapFileImpl) : null;
48 protected override object Unwrap(MapFile mapFile)
50 return mapFile is SvcMapFile ? ((SvcMapFile)mapFile).Impl : null;
53 protected override XmlSchemaSet GetMapFileSchemaSet()
55 if (_mapFileSchemaSet == null)
57 _mapFileSchemaSet = new XmlSchemaSet();
59 using (var stream = typeof(SvcMapFileImpl).Assembly.GetManifestResourceStream(typeof(SvcMapFileImpl), @"Schema.ServiceMapSchema.xsd"))
61 _mapFileSchemaSet.Add(XmlSchema.Read(stream, null));
65 return _mapFileSchemaSet;
68 protected override XmlSerializer GetMapFileSerializer()
70 if (_mapFileSerializer == null)
72 #if WEB_EXTENSIONS_CODE
73 _mapFileSerializer = new System.Web.Compilation.WCFModel.SvcMapFileXmlSerializer.SvcMapFileImplSerializer();
75 _mapFileSerializer = new XmlSerializer(typeof(SvcMapFileImpl), SvcMapFileImpl.NamespaceUri);
79 return _mapFileSerializer;
82 protected override TextReader GetMapFileReader()
84 return File.OpenText(_mapFilePath);
87 protected override byte[] ReadMetadataFile(string name)
89 return File.ReadAllBytes(Path.Combine(Path.GetDirectoryName(_mapFilePath), name));
92 protected override byte[] ReadExtensionFile(string name)
94 return File.ReadAllBytes(Path.Combine(Path.GetDirectoryName(_mapFilePath), name));
97 #endregion protected overrides methods