File: ExternalFile.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 (149 lines) | stat: -rw-r--r-- 4,006 bytes parent folder | download | duplicates (7)
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#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;
using System.Globalization;
using System.IO;
using XmlSerialization = System.Xml.Serialization;

#if WEB_EXTENSIONS_CODE
using System.Web.Resources;
#else
using Microsoft.VSDesigner.WCF.Resources;
#endif

#if WEB_EXTENSIONS_CODE
namespace System.Web.Compilation.WCFModel
#else
namespace Microsoft.VSDesigner.WCFModel
#endif
{
    /// <summary>
    /// This class presents a single file referenced by a svcmap file
    /// </summary>
    /// <remarks></remarks>
#if WEB_EXTENSIONS_CODE
    internal class ExternalFile
#else
    [CLSCompliant(true)]
    public class ExternalFile
#endif
    {
        // File Name
        private string m_FileName;

        // Is the MeatadataFile loaded from the file? If it is false, we need create a new file when we save to the disket
        private bool m_IsExistingFile;

        // error happens when the file is loaded
        private Exception m_ErrorInLoading;

        /// <summary>
        /// Constructor
        /// </summary>
        /// <remarks> Must support a default construct for XmlSerializer</remarks>
        public ExternalFile()
        {
            m_FileName = String.Empty;
        }

        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="fileName">File Name</param>
        public ExternalFile(string fileName)
        {
            this.FileName = fileName;
        }

        /// <summary>
        /// Error happens when the file is loaded
        /// </summary>
        /// <value></value>
        /// <remarks></remarks>
        [XmlSerialization.XmlIgnore()]
        public Exception ErrorInLoading
        {
            get
            {
                return m_ErrorInLoading;
            }
            set
            {
                m_ErrorInLoading = value;
            }
        }

        /// <summary>
        /// FileName in the storage
        /// </summary>
        /// <value></value>
        /// <remarks></remarks>
        [XmlSerialization.XmlAttribute()]
        public string FileName
        {
            get
            {
                return m_FileName;
            }
            set
            {
                if (value == null)
                {
                    throw new ArgumentNullException("value");
                }

                if (!IsLocalFileName(value))
                {
                    throw new NotSupportedException(String.Format(CultureInfo.CurrentCulture, WCFModelStrings.ReferenceGroup_InvalidFileName, value));
                }

                m_FileName = value;
            }
        }

        /// <summary>
        /// Is the item loaded from the file? If it is false, we need create a new file when we save to the disket 
        /// </summary>
        /// <value></value>
        /// <remarks></remarks>
        [XmlSerialization.XmlIgnore()]
        public bool IsExistingFile
        {
            get
            {
                return m_IsExistingFile;
            }
            set
            {
                m_IsExistingFile = value;
            }
        }

        /// <summary>
        /// Check the file name is a real file name but not a path
        /// </summary>
        /// <param name="fileName"></param>
        /// <remarks></remarks>
        public static bool IsLocalFileName(string fileName)
        {
            if (fileName == null)
            {
                throw new ArgumentNullException("fileName");
            }

            if (fileName.IndexOfAny(Path.GetInvalidFileNameChars()) >= 0 || fileName.IndexOfAny(new Char[] { Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar, Path.VolumeSeparatorChar }) >= 0)
            {
                return false;
            }

            return true;
        }

    }
}