5 // Atsushi Enomoto <atsushi@ximian.com>
7 // Copyright (C) 2005 Novell, Inc. http://www.novell.com
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 using System
.Collections
;
30 using System
.Collections
.Generic
;
31 using System
.Runtime
.Serialization
;
33 namespace System
.IdentityModel
.Claims
35 [DataContract (Namespace
="http://schemas.xmlsoap.org/ws/2005/05/identity")]
36 public class DefaultClaimSet
: ClaimSet
38 internal static DefaultClaimSet
CreateSystemClaimSet ()
40 DefaultClaimSet s
= new DefaultClaimSet ();
41 s
.Initialize (s
, new Claim
[] {Claim.System, new Claim (ClaimTypes.System, "System", Rights.PossessProperty)}
);
45 List
<Claim
> list
= new List
<Claim
> ();
50 internal DefaultClaimSet ()
54 public DefaultClaimSet (params Claim
[] claims
)
56 list
.AddRange (claims
);
59 public DefaultClaimSet (IList
<Claim
> claims
)
61 list
.AddRange (claims
);
64 public DefaultClaimSet (ClaimSet issuer
, params Claim
[] claims
)
67 list
.AddRange (claims
);
70 public DefaultClaimSet (ClaimSet issuer
, IList
<Claim
> claims
)
73 list
.AddRange (claims
);
78 public override int Count
{
79 get { return list.Count; }
82 public override ClaimSet Issuer
{
83 get { return issuer; }
86 public override Claim
this [int index
] {
87 get { return list [index]; }
92 public override bool ContainsClaim (Claim claim
)
94 return base.ContainsClaim (claim
);
97 public override IEnumerable
<Claim
> FindClaims (
98 string claimType
, string right
)
100 return new ClaimListFilter (this, claimType
);
103 public override IEnumerator
<Claim
> GetEnumerator ()
105 return list
.GetEnumerator ();
108 protected void Initialize (ClaimSet issuer
, IList
<Claim
> claims
)
110 this.issuer
= issuer
;
111 foreach (Claim c
in claims
)
116 public override string ToString ()
118 return base.ToString ();
123 class ClaimListFilter
: IEnumerable
<Claim
>
125 DefaultClaimSet source
;
128 public ClaimListFilter (DefaultClaimSet source
, string claimType
)
130 claim_type
= claimType
;
131 this.source
= source
;
134 public IEnumerator
<Claim
> GetEnumerator ()
136 foreach (Claim c
in source
)
137 if (c
.ClaimType
== claim_type
)
141 IEnumerator IEnumerable
.GetEnumerator ()
143 return GetEnumerator ();