File: SectionInput.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 (111 lines) | stat: -rw-r--r-- 3,734 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
100
101
102
103
104
105
106
107
108
109
110
111
//------------------------------------------------------------------------------
// <copyright file="SectionInput.cs" company="Microsoft">
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>
//------------------------------------------------------------------------------

using System;
using System.Collections.Generic;

namespace System.Configuration {

    [System.Diagnostics.DebuggerDisplay("SectionInput {_sectionXmlInfo.ConfigKey}")]
    internal class SectionInput {
        // result can be null, so we use this object to indicate whether it has been evaluated
        private static object                   s_unevaluated = new object();

        // input from the XML file
        private SectionXmlInfo                  _sectionXmlInfo;        

        // Provider to use for encryption
        private ProtectedConfigurationProvider  _protectionProvider;    

        // Has the protection provider been determined for this input?
        private bool                            _isProtectionProviderDetermined;    

        // the result of evaluating this section
        private object                          _result;                

        // the result of evaluating this section after GetRuntimeObject is called
        private object                          _resultRuntimeObject;   

        // accummulated errors related to this input
        private List<ConfigurationException>    _errors;

        internal SectionInput(SectionXmlInfo sectionXmlInfo, List<ConfigurationException> errors) {
            _sectionXmlInfo = sectionXmlInfo;
            _errors = errors;

            _result = s_unevaluated;
            _resultRuntimeObject = s_unevaluated;
        }

        internal SectionXmlInfo SectionXmlInfo {
            get {return _sectionXmlInfo;}
        }

        internal bool HasResult {
            get {return _result != s_unevaluated;}
        }

        internal bool HasResultRuntimeObject {
            get {return _resultRuntimeObject != s_unevaluated;}
        }

        internal object Result {
            get {
                // Useful assert, but it fires in the debugger when using automatic property evaluation
                // Debug.Assert(_result != s_unevaluated, "_result != s_unevaluated");

                return _result;
            }

            set {_result = value;}
        }

        internal object ResultRuntimeObject {
            get {
                // Useful assert, but it fires in the debugger when using automatic property evaluation
                // Debug.Assert(_resultRuntimeObject != s_unevaluated, "_resultRuntimeObject != s_unevaluated");

                return _resultRuntimeObject;
            }

            set {_resultRuntimeObject = value;}
        }

        internal void ClearResult() {
            _result = s_unevaluated;
            _resultRuntimeObject = s_unevaluated;
        }

        internal bool IsProtectionProviderDetermined {
            get {return _isProtectionProviderDetermined;}
        }

        internal ProtectedConfigurationProvider ProtectionProvider {
            get {return _protectionProvider;}
            set { 
                _protectionProvider = value;
                _isProtectionProviderDetermined = true;
            }
        }

        // Errors associated with a section input.
        internal ICollection<ConfigurationException> Errors {
            get {
                return _errors;
            }
        }

        internal bool HasErrors {
            get {
                return ErrorsHelper.GetHasErrors(_errors);
            }
        }

        internal void ThrowOnErrors() {
            ErrorsHelper.ThrowOnErrors(_errors);
        }
    }
}