File: SvcMapFileLoader.cs

package info (click to toggle)
mono 4.6.2.7%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 778,148 kB
  • ctags: 914,052
  • sloc: cs: 5,779,509; xml: 2,773,713; ansic: 432,645; sh: 14,749; makefile: 12,361; perl: 2,488; python: 1,434; cpp: 849; asm: 531; sql: 95; sed: 16; php: 1
file content (99 lines) | stat: -rw-r--r-- 2,975 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#region Copyright (c) Microsoft Corporation
/// <copyright company='Microsoft Corporation'>
///    Copyright (c) Microsoft Corporation. All Rights Reserved.
///    Information Contained Herein is Proprietary and Confidential.
/// </copyright>
#endregion

using System.Diagnostics;
using System.IO;
using System.Xml.Schema;
using System.Xml.Serialization;

#if WEB_EXTENSIONS_CODE
namespace System.Web.Compilation.WCFModel
#else
namespace Microsoft.VSDesigner.WCFModel
#endif
{
#if WEB_EXTENSIONS_CODE
    internal class SvcMapFileLoader : MapFileLoader
#else
    public class SvcMapFileLoader : MapFileLoader
#endif
    {
        private string _mapFilePath;
        private XmlSchemaSet _mapFileSchemaSet;
        private XmlSerializer _mapFileSerializer;

        public SvcMapFileLoader(string mapFilePath)
        {
            Debug.Assert(!string.IsNullOrEmpty(mapFilePath), "mapFilePath is null!");

            _mapFilePath = mapFilePath;
        }

        #region protected overrides methods

        protected override string MapFileName
        {
            get { return _mapFilePath; }
        }

        protected override MapFile Wrap(object mapFileImpl)
        {
            return mapFileImpl is SvcMapFileImpl ? new SvcMapFile((SvcMapFileImpl)mapFileImpl) : null;
        }

        protected override object Unwrap(MapFile mapFile)
        {
            return mapFile is SvcMapFile ? ((SvcMapFile)mapFile).Impl : null;
        }

        protected override XmlSchemaSet GetMapFileSchemaSet()
        {
            if (_mapFileSchemaSet == null)
            {
                _mapFileSchemaSet = new XmlSchemaSet();

                using (var stream = typeof(SvcMapFileImpl).Assembly.GetManifestResourceStream(typeof(SvcMapFileImpl), @"Schema.ServiceMapSchema.xsd"))
                {
                    _mapFileSchemaSet.Add(XmlSchema.Read(stream, null));
                }
            }

            return _mapFileSchemaSet;
        }

        protected override XmlSerializer GetMapFileSerializer()
        {
            if (_mapFileSerializer == null)
            {
#if WEB_EXTENSIONS_CODE
                _mapFileSerializer = new System.Web.Compilation.WCFModel.SvcMapFileXmlSerializer.SvcMapFileImplSerializer();
#else
                _mapFileSerializer = new XmlSerializer(typeof(SvcMapFileImpl), SvcMapFileImpl.NamespaceUri);
#endif
            }

            return _mapFileSerializer;
        }

        protected override TextReader GetMapFileReader()
        {
            return File.OpenText(_mapFilePath);
        }

        protected override byte[] ReadMetadataFile(string name)
        {
            return File.ReadAllBytes(Path.Combine(Path.GetDirectoryName(_mapFilePath), name));
        }

        protected override byte[] ReadExtensionFile(string name)
        {
            return File.ReadAllBytes(Path.Combine(Path.GetDirectoryName(_mapFilePath), name));
        }

        #endregion protected overrides methods
    }
}