File: RootProfilePropertySettingsCollection.cs

package info (click to toggle)
mono 6.8.0.105%2Bdfsg-3.3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 1,284,512 kB
  • sloc: cs: 11,172,132; xml: 2,850,069; ansic: 671,653; cpp: 122,091; perl: 59,366; javascript: 30,841; asm: 22,168; makefile: 20,093; sh: 15,020; python: 4,827; pascal: 925; sql: 859; sed: 16; php: 1
file content (140 lines) | stat: -rw-r--r-- 5,330 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
//------------------------------------------------------------------------------
// <copyright file="RootProfilePropertySettingsCollection.cs" company="Microsoft">
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>
//------------------------------------------------------------------------------

namespace System.Web.Configuration {
    using System;
    using System.Xml;
    using System.Configuration;
    using System.Collections.Specialized;
    using System.Collections;
    using System.IO;
    using System.Text;
    using System.Web.Util;
    using System.Security.Permissions;

    // class ProfileSection

    // ProfileGroupSettingsCollection

    [ConfigurationCollection(typeof(ProfilePropertySettings))]
    public sealed class RootProfilePropertySettingsCollection : ProfilePropertySettingsCollection {
        private ProfileGroupSettingsCollection _propGroups = new ProfileGroupSettingsCollection();
        private static ConfigurationPropertyCollection _properties;

        static RootProfilePropertySettingsCollection() {
            // Property initialization
            _properties = new ConfigurationPropertyCollection();
        }

        protected override ConfigurationPropertyCollection Properties {
            get {
                return _properties;
            }
        }

        public RootProfilePropertySettingsCollection() {
        }

        protected override bool AllowClear {
            get {
                return true;
            }
        }

        protected override bool ThrowOnDuplicate {
            get {
                return true;
            }
        }

        protected override bool OnDeserializeUnrecognizedElement(String elementName, XmlReader reader) {
            bool handled = false;

            // Deal with the "group" element
            if (elementName == "group") {
                ProfileGroupSettingsCollection groupCollection;
                ProfileGroupSettings newGroupSettings;
                ProfileGroupSettings curGroupSettings = null;
                string name = reader.GetAttribute("name");

                groupCollection = GroupSettings;

                if (name != null) {
                    curGroupSettings = groupCollection[name];
                }

                newGroupSettings = new ProfileGroupSettings();
                newGroupSettings.InternalReset(curGroupSettings);
                newGroupSettings.InternalDeserialize(reader, false);

                groupCollection.AddOrReplace(newGroupSettings);

                handled = true;
            }
            else {
                if (elementName == "clear") {
                    GroupSettings.Clear();
                }

                // Let the base class deal with "add, remove, clear"
                handled = base.OnDeserializeUnrecognizedElement(elementName, reader);
            }

            return handled;
        }

        protected override bool IsModified() {
            return base.IsModified() || GroupSettings.InternalIsModified();
        }

        protected override void ResetModified() {
            base.ResetModified();
            GroupSettings.InternalResetModified();
        }

        public override bool Equals(object rootProfilePropertySettingsCollection) {
            RootProfilePropertySettingsCollection o = rootProfilePropertySettingsCollection as RootProfilePropertySettingsCollection;
            return (o != null && Object.Equals(this, o) && Object.Equals(GroupSettings, o.GroupSettings));
        }

        public override int GetHashCode() {
            return HashCodeCombiner.CombineHashCodes(base.GetHashCode(), GroupSettings.GetHashCode());
        }

        protected override void Reset(ConfigurationElement parentElement) {
            RootProfilePropertySettingsCollection parent = parentElement as RootProfilePropertySettingsCollection;
            base.Reset(parentElement);
            GroupSettings.InternalReset(parent.GroupSettings);
        }

        protected override void Unmerge(ConfigurationElement sourceElement,
                                        ConfigurationElement parentElement,
                                        ConfigurationSaveMode saveMode) {
            RootProfilePropertySettingsCollection parent = parentElement as RootProfilePropertySettingsCollection;
            RootProfilePropertySettingsCollection source = sourceElement as RootProfilePropertySettingsCollection;

            base.Unmerge(sourceElement, parentElement, saveMode);
            GroupSettings.InternalUnMerge(source.GroupSettings, (parent != null) ? parent.GroupSettings : null, saveMode);
        }

        protected override bool SerializeElement(XmlWriter writer, bool serializeCollectionKey) {
            bool DataToWrite = false;
            if (base.SerializeElement(null, false) == true ||
                GroupSettings.InternalSerialize(null, false) == true) {
                DataToWrite |= base.SerializeElement(writer, false);
                DataToWrite |= GroupSettings.InternalSerialize(writer, false);
            }
            return DataToWrite;
        }

        [ConfigurationProperty("group")]
        public ProfileGroupSettingsCollection GroupSettings {
            get {
                return _propGroups;
            }
        }
    }
}