File: PolicyAssertionCollection.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 (137 lines) | stat: -rw-r--r-- 4,626 bytes parent folder | download | duplicates (9)
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
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation.  All rights reserved.
//------------------------------------------------------------
namespace System.ServiceModel.Description
{
    using System.ServiceModel;
    using System.ComponentModel;
    using System.Collections.Generic;
    using System.Collections.ObjectModel;
    using System.Runtime.Serialization;
    using System.Xml;

    public class PolicyAssertionCollection : Collection<XmlElement>
    {
        public PolicyAssertionCollection()
        {
        }

        public PolicyAssertionCollection(IEnumerable<XmlElement> elements)
        {
            if (elements == null)
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("elements");

            AddRange(elements);
        }

        internal void AddRange(IEnumerable<XmlElement> elements)
        {
            foreach (XmlElement element in elements)
            {
                base.Add(element);
            }
        }

        public bool Contains(string localName, string namespaceUri)
        {
            if (localName == null)
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("localName");
            if (namespaceUri == null)
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("namespaceUri");

            for (int i = 0; i < this.Count; i++)
            {
                XmlElement item = this[i];
                if (item.LocalName == localName && item.NamespaceURI == namespaceUri)
                    return true;
            }
            return false;
        }

        public XmlElement Find(string localName, string namespaceUri)
        {
            return Find(localName, namespaceUri, false);
        }

        public XmlElement Remove(string localName, string namespaceUri)
        {
            return Find(localName, namespaceUri, true);
        }

        XmlElement Find(string localName, string namespaceUri, bool remove) 
        {
            if (localName == null)
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("localName");
            if (namespaceUri == null)
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("namespaceUri");

            for (int index = 0; index < this.Count; index++)
            {
                XmlElement item = this[index];
                if (item.LocalName == localName && item.NamespaceURI == namespaceUri)
                {
                    if (remove)
                    {
                        RemoveAt(index);
                    }
                    return item;
                }
            }
            return null;
        }

        public Collection<XmlElement> FindAll(string localName, string namespaceUri)
        {
            return FindAll(localName, namespaceUri, false);
        }

        public Collection<XmlElement> RemoveAll(string localName, string namespaceUri)
        {
            return FindAll(localName, namespaceUri, true);
        }

        Collection<XmlElement> FindAll(string localName, string namespaceUri, bool remove)
        {
            if (localName == null)
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("localName");
            if (namespaceUri == null)
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("namespaceUri");

            Collection<XmlElement> collection = new Collection<XmlElement>();

            for (int index = 0; index < this.Count; index++)
            {
                XmlElement item = this[index];
                if (item.LocalName == localName && item.NamespaceURI == namespaceUri)
                {
                    if (remove)
                    {
                        RemoveAt(index);
                        // back up the index so we inspect the new item at this location
                        index--;
                    }
                    collection.Add(item);
                }
            }

            return collection;
        }

        protected override void InsertItem(int index, XmlElement item)
        {
            if (item == null)
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("item");

            base.InsertItem(index, item);
        }

        protected override void SetItem(int index, XmlElement item)
        {
            if (item == null)
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("item");

            base.SetItem(index, item);
        }
    }

}