Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / clr / src / BCL / System / Security / Policy / UnionCodeGroup.cs / 3 / UnionCodeGroup.cs
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
// UnionCodeGroup.cs
//
// Representation for code groups used for the policy mechanism
//
namespace System.Security.Policy {
using System;
using System.Security.Util;
using System.Security;
using System.Collections;
[Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
sealed public class UnionCodeGroup : CodeGroup, IUnionSemanticCodeGroup
{
internal UnionCodeGroup()
: base()
{
}
internal UnionCodeGroup( IMembershipCondition membershipCondition, PermissionSet permSet )
: base( membershipCondition, permSet )
{
}
public UnionCodeGroup( IMembershipCondition membershipCondition, PolicyStatement policy )
: base( membershipCondition, policy )
{
}
public override PolicyStatement Resolve( Evidence evidence )
{
if (evidence == null)
throw new ArgumentNullException("evidence");
object usedEvidence = null;
if (PolicyManager.CheckMembershipCondition(MembershipCondition, evidence, out usedEvidence))
{
PolicyStatement thisPolicy = PolicyStatement; // PolicyStatement getter makes a copy for us
// If any delay-evidence was used to generate this grant set, then we need to keep track of
// that for potentially later forcing it to be verified.
IDelayEvaluatedEvidence delayEvidence = usedEvidence as IDelayEvaluatedEvidence;
bool delayEvidenceNeedsVerification = delayEvidence != null && !delayEvidence.IsVerified;
if (delayEvidenceNeedsVerification)
{
thisPolicy.AddDependentEvidence(delayEvidence);
}
bool foundExclusiveChild = false;
IEnumerator enumerator = this.Children.GetEnumerator();
while (enumerator.MoveNext() && !foundExclusiveChild)
{
PolicyStatement childPolicy = PolicyManager.ResolveCodeGroup(enumerator.Current as CodeGroup,
evidence);
if (childPolicy != null)
{
thisPolicy.InplaceUnion(childPolicy);
if ((childPolicy.Attributes & PolicyStatementAttribute.Exclusive) == PolicyStatementAttribute.Exclusive)
{
foundExclusiveChild = true;
}
}
}
return thisPolicy;
}
else
{
return null;
}
}
///
PolicyStatement IUnionSemanticCodeGroup.InternalResolve( Evidence evidence )
{
if (evidence == null)
throw new ArgumentNullException("evidence");
if (this.MembershipCondition.Check( evidence ))
{
return this.PolicyStatement;
}
else
{
return null;
}
}
public override CodeGroup ResolveMatchingCodeGroups( Evidence evidence )
{
if (evidence == null)
throw new ArgumentNullException("evidence");
if (this.MembershipCondition.Check( evidence ))
{
CodeGroup retGroup = this.Copy();
retGroup.Children = new ArrayList();
IEnumerator enumerator = this.Children.GetEnumerator();
while (enumerator.MoveNext())
{
CodeGroup matchingGroups = ((CodeGroup)enumerator.Current).ResolveMatchingCodeGroups( evidence );
// If the child has a policy, we are done.
if (matchingGroups != null)
{
retGroup.AddChild( matchingGroups );
}
}
return retGroup;
}
else
{
return null;
}
}
public override CodeGroup Copy()
{
UnionCodeGroup group = new UnionCodeGroup();
group.MembershipCondition = this.MembershipCondition;
group.PolicyStatement = this.PolicyStatement;
group.Name = this.Name;
group.Description = this.Description;
IEnumerator enumerator = this.Children.GetEnumerator();
while (enumerator.MoveNext())
{
group.AddChild( (CodeGroup)enumerator.Current );
}
return group;
}
public override String MergeLogic
{
get
{
return Environment.GetResourceString( "MergeLogic_Union" );
}
}
internal override String GetTypeName()
{
return "System.Security.Policy.UnionCodeGroup";
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
// UnionCodeGroup.cs
//
// Representation for code groups used for the policy mechanism
//
namespace System.Security.Policy {
using System;
using System.Security.Util;
using System.Security;
using System.Collections;
[Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
sealed public class UnionCodeGroup : CodeGroup, IUnionSemanticCodeGroup
{
internal UnionCodeGroup()
: base()
{
}
internal UnionCodeGroup( IMembershipCondition membershipCondition, PermissionSet permSet )
: base( membershipCondition, permSet )
{
}
public UnionCodeGroup( IMembershipCondition membershipCondition, PolicyStatement policy )
: base( membershipCondition, policy )
{
}
public override PolicyStatement Resolve( Evidence evidence )
{
if (evidence == null)
throw new ArgumentNullException("evidence");
object usedEvidence = null;
if (PolicyManager.CheckMembershipCondition(MembershipCondition, evidence, out usedEvidence))
{
PolicyStatement thisPolicy = PolicyStatement; // PolicyStatement getter makes a copy for us
// If any delay-evidence was used to generate this grant set, then we need to keep track of
// that for potentially later forcing it to be verified.
IDelayEvaluatedEvidence delayEvidence = usedEvidence as IDelayEvaluatedEvidence;
bool delayEvidenceNeedsVerification = delayEvidence != null && !delayEvidence.IsVerified;
if (delayEvidenceNeedsVerification)
{
thisPolicy.AddDependentEvidence(delayEvidence);
}
bool foundExclusiveChild = false;
IEnumerator enumerator = this.Children.GetEnumerator();
while (enumerator.MoveNext() && !foundExclusiveChild)
{
PolicyStatement childPolicy = PolicyManager.ResolveCodeGroup(enumerator.Current as CodeGroup,
evidence);
if (childPolicy != null)
{
thisPolicy.InplaceUnion(childPolicy);
if ((childPolicy.Attributes & PolicyStatementAttribute.Exclusive) == PolicyStatementAttribute.Exclusive)
{
foundExclusiveChild = true;
}
}
}
return thisPolicy;
}
else
{
return null;
}
}
///
PolicyStatement IUnionSemanticCodeGroup.InternalResolve( Evidence evidence )
{
if (evidence == null)
throw new ArgumentNullException("evidence");
if (this.MembershipCondition.Check( evidence ))
{
return this.PolicyStatement;
}
else
{
return null;
}
}
public override CodeGroup ResolveMatchingCodeGroups( Evidence evidence )
{
if (evidence == null)
throw new ArgumentNullException("evidence");
if (this.MembershipCondition.Check( evidence ))
{
CodeGroup retGroup = this.Copy();
retGroup.Children = new ArrayList();
IEnumerator enumerator = this.Children.GetEnumerator();
while (enumerator.MoveNext())
{
CodeGroup matchingGroups = ((CodeGroup)enumerator.Current).ResolveMatchingCodeGroups( evidence );
// If the child has a policy, we are done.
if (matchingGroups != null)
{
retGroup.AddChild( matchingGroups );
}
}
return retGroup;
}
else
{
return null;
}
}
public override CodeGroup Copy()
{
UnionCodeGroup group = new UnionCodeGroup();
group.MembershipCondition = this.MembershipCondition;
group.PolicyStatement = this.PolicyStatement;
group.Name = this.Name;
group.Description = this.Description;
IEnumerator enumerator = this.Children.GetEnumerator();
while (enumerator.MoveNext())
{
group.AddChild( (CodeGroup)enumerator.Current );
}
return group;
}
public override String MergeLogic
{
get
{
return Environment.GetResourceString( "MergeLogic_Union" );
}
}
internal override String GetTypeName()
{
return "System.Security.Policy.UnionCodeGroup";
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ButtonAutomationPeer.cs
- TdsParameterSetter.cs
- MobileControlsSectionHelper.cs
- XmlSchemaAll.cs
- StreamInfo.cs
- RegisteredScript.cs
- XmlCharacterData.cs
- TimeSpanConverter.cs
- SqlClientWrapperSmiStreamChars.cs
- DataDesignUtil.cs
- IsolatedStorage.cs
- FileIOPermission.cs
- BoundsDrawingContextWalker.cs
- DataGridLengthConverter.cs
- GridViewHeaderRowPresenter.cs
- BinaryMethodMessage.cs
- TypeDescriptionProvider.cs
- ApplicationGesture.cs
- Atom10FeedFormatter.cs
- GridProviderWrapper.cs
- CompoundFileIOPermission.cs
- EventPrivateKey.cs
- Binding.cs
- FigureHelper.cs
- TableDetailsCollection.cs
- OleDbRowUpdatingEvent.cs
- DynamicQueryableWrapper.cs
- ConvertersCollection.cs
- CodeDomSerializationProvider.cs
- DCSafeHandle.cs
- NumericPagerField.cs
- InkCanvasSelectionAdorner.cs
- CompileLiteralTextParser.cs
- InputQueueChannelAcceptor.cs
- DetailsViewPageEventArgs.cs
- VersionedStream.cs
- WindowsEditBox.cs
- RegisteredArrayDeclaration.cs
- ListViewUpdatedEventArgs.cs
- ExceptionTranslationTable.cs
- ScalarConstant.cs
- Trace.cs
- SoundPlayer.cs
- ByteConverter.cs
- DataRelationCollection.cs
- SiteMembershipCondition.cs
- WebControl.cs
- PenContexts.cs
- BufferModesCollection.cs
- GroupQuery.cs
- PropertyPushdownHelper.cs
- BaseUriWithWildcard.cs
- OracleRowUpdatingEventArgs.cs
- Line.cs
- TextDpi.cs
- DrawingContext.cs
- ClassImporter.cs
- SelectionHighlightInfo.cs
- Shape.cs
- Inflater.cs
- GridItemCollection.cs
- PenThread.cs
- TemplateControl.cs
- UpdateInfo.cs
- SQLBoolean.cs
- PasswordDeriveBytes.cs
- StringConcat.cs
- WindowsTab.cs
- TextServicesHost.cs
- ImmutableObjectAttribute.cs
- ExtendedPropertyInfo.cs
- SuppressMergeCheckAttribute.cs
- SymbolEqualComparer.cs
- PagerSettings.cs
- LineServicesRun.cs
- Path.cs
- OdbcConnectionStringbuilder.cs
- HttpConfigurationSystem.cs
- GridProviderWrapper.cs
- GraphicsPathIterator.cs
- OdbcStatementHandle.cs
- FontWeight.cs
- SpanIndex.cs
- ExpressionConverter.cs
- TableRowGroup.cs
- XmlNode.cs
- SmiConnection.cs
- CharacterHit.cs
- ZipIOCentralDirectoryBlock.cs
- DetailsViewRow.cs
- DataGridViewColumnEventArgs.cs
- Merger.cs
- HttpFileCollection.cs
- webproxy.cs
- PrimitiveType.cs
- DeclaredTypeValidatorAttribute.cs
- SqlInternalConnectionTds.cs
- StorageAssociationTypeMapping.cs
- XmlSchemaCompilationSettings.cs
- BlobPersonalizationState.cs