File: SectionInput.cs

package info (click to toggle)
mono 6.12.0.199%2Bdfsg-6
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 1,296,836 kB
  • sloc: cs: 11,181,803; xml: 2,850,076; ansic: 699,709; cpp: 123,344; perl: 59,361; javascript: 30,841; asm: 21,853; makefile: 20,405; sh: 15,009; python: 4,839; pascal: 925; sql: 859; sed: 16; php: 1
file content (129 lines) | stat: -rw-r--r-- 4,298 bytes parent folder | download | duplicates (6)
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
//------------------------------------------------------------------------------
// <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 enhance config sources
        private ConfigurationBuilder _configBuilder;

        // Has the config provider been determined for this input?
        private bool _isConfigBuilderDetermined;
        
        // 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 IsConfigBuilderDetermined {
            get { return _isConfigBuilderDetermined; }
        }

        internal ConfigurationBuilder ConfigBuilder {
            get { return _configBuilder; }
            set {
                _configBuilder = value;
                _isConfigBuilderDetermined = true;
            }
        }

        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);
        }
    }
}