Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Security / ReferenceList.cs / 1 / ReferenceList.cs
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------
namespace System.ServiceModel.Security
{
using System.Xml;
using System.ServiceModel.Security.Tokens;
using DictionaryManager = System.IdentityModel.DictionaryManager;
using ISecurityElement = System.IdentityModel.ISecurityElement;
sealed class ReferenceList : ISecurityElement
{
internal static readonly XmlDictionaryString ElementName = XD.XmlEncryptionDictionary.ReferenceList;
const string NamespacePrefix = XmlEncryptionStrings.Prefix;
internal static readonly XmlDictionaryString NamespaceUri = EncryptedType.NamespaceUri;
internal static readonly XmlDictionaryString UriAttribute = XD.XmlEncryptionDictionary.URI;
MostlySingletonList referredIds;
public ReferenceList()
{
}
public int DataReferenceCount
{
get { return this.referredIds.Count; }
}
public bool HasId
{
get { return false; }
}
public string Id
{
get
{
// PreSharp Bug: Property get methods should not throw exceptions.
#pragma warning suppress 56503
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException());
}
}
public void AddReferredId(string id)
{
if (id == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("id"));
}
this.referredIds.Add(id);
}
public bool ContainsReferredId(string id)
{
if (id == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("id"));
}
return this.referredIds.Contains(id);
}
public string GetReferredId(int index)
{
return this.referredIds[index];
}
public void ReadFrom(XmlDictionaryReader reader)
{
reader.ReadStartElement(ElementName, NamespaceUri);
while (reader.IsStartElement())
{
string id = DataReference.ReadFrom(reader);
if (this.referredIds.Contains(id))
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(
new MessageSecurityException(SR.GetString(SR.InvalidDataReferenceInReferenceList, "#" + id)));
}
this.referredIds.Add(id);
}
reader.ReadEndElement(); // ReferenceList
if (this.DataReferenceCount == 0)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(SR.GetString(SR.ReferenceListCannotBeEmpty)));
}
}
public bool TryRemoveReferredId(string id)
{
if (id == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("id"));
}
return this.referredIds.Remove(id);
}
public void WriteTo(XmlDictionaryWriter writer, DictionaryManager dictionaryManager)
{
if (this.DataReferenceCount == 0)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.ReferenceListCannotBeEmpty)));
}
writer.WriteStartElement(NamespacePrefix, ElementName, NamespaceUri);
for (int i = 0; i < this.DataReferenceCount; i++)
{
DataReference.WriteTo(writer, this.referredIds[i]);
}
writer.WriteEndElement(); // ReferenceList
}
static class DataReference
{
internal static readonly XmlDictionaryString ElementName = XD.XmlEncryptionDictionary.DataReference;
internal static readonly XmlDictionaryString NamespaceUri = EncryptedType.NamespaceUri;
public static string ReadFrom(XmlDictionaryReader reader)
{
string prefix;
string uri = XmlHelper.ReadEmptyElementAndRequiredAttribute(reader, ElementName, NamespaceUri, ReferenceList.UriAttribute, out prefix);
if (uri.Length < 2 || uri[0] != '#')
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(
new MessageSecurityException(SR.GetString(SR.InvalidDataReferenceInReferenceList, uri)));
}
return uri.Substring(1);
}
public static void WriteTo(XmlDictionaryWriter writer, string referredId)
{
writer.WriteStartElement(XD.XmlEncryptionDictionary.Prefix.Value, ElementName, NamespaceUri);
writer.WriteStartAttribute(ReferenceList.UriAttribute, null);
writer.WriteString("#");
writer.WriteString(referredId);
writer.WriteEndAttribute();
writer.WriteEndElement();
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- WebBrowserContainer.cs
- DATA_BLOB.cs
- GeometryGroup.cs
- BitmapEffectOutputConnector.cs
- XMLUtil.cs
- CharacterHit.cs
- EmbossBitmapEffect.cs
- XsdDataContractImporter.cs
- UnsignedPublishLicense.cs
- AlgoModule.cs
- XmlObjectSerializerReadContext.cs
- SqlConnectionHelper.cs
- Tokenizer.cs
- DrawingContext.cs
- SystemIPGlobalProperties.cs
- GridLengthConverter.cs
- CounterSample.cs
- Track.cs
- MsmqIntegrationInputChannel.cs
- CompensatableTransactionScopeActivity.cs
- HttpModuleActionCollection.cs
- PropertyItemInternal.cs
- FigureParagraph.cs
- TemplateBindingExpression.cs
- ResXResourceReader.cs
- RuntimeCompatibilityAttribute.cs
- DLinqColumnProvider.cs
- XPathDescendantIterator.cs
- fixedPageContentExtractor.cs
- RenderCapability.cs
- DesignBindingValueUIHandler.cs
- DataContractJsonSerializer.cs
- TraceContextRecord.cs
- LineMetrics.cs
- HighlightComponent.cs
- BitStream.cs
- HttpListenerPrefixCollection.cs
- NameTable.cs
- DataGridViewCellLinkedList.cs
- Rfc2898DeriveBytes.cs
- HttpRequestWrapper.cs
- InstanceCreationEditor.cs
- ZipIOLocalFileBlock.cs
- HostingEnvironment.cs
- HelpOperationInvoker.cs
- ExpanderAutomationPeer.cs
- RegistrySecurity.cs
- SystemIPGlobalProperties.cs
- OracleMonthSpan.cs
- AlgoModule.cs
- WebPartManagerDesigner.cs
- ColorAnimation.cs
- PagedDataSource.cs
- CapacityStreamGeometryContext.cs
- PassportAuthentication.cs
- FaultBookmark.cs
- Dynamic.cs
- Axis.cs
- FieldInfo.cs
- TableRow.cs
- TreeNodeBindingCollection.cs
- View.cs
- HttpEncoder.cs
- CollectionConverter.cs
- StopStoryboard.cs
- InternalEnumValidator.cs
- LayoutTable.cs
- SQLGuidStorage.cs
- SecurityCapabilities.cs
- XmlSiteMapProvider.cs
- WorkflowInvoker.cs
- FormsAuthenticationTicket.cs
- Italic.cs
- RelationshipEnd.cs
- ColorConverter.cs
- ResourceProperty.cs
- DrawListViewSubItemEventArgs.cs
- Subtree.cs
- TouchFrameEventArgs.cs
- StringWriter.cs
- MailWebEventProvider.cs
- BookmarkTable.cs
- ServicePointManagerElement.cs
- BasicExpressionVisitor.cs
- DataGridViewCellLinkedList.cs
- ReadingWritingEntityEventArgs.cs
- Vector3DIndependentAnimationStorage.cs
- ClientConvert.cs
- XpsSerializerWriter.cs
- TextElement.cs
- Point4D.cs
- SiblingIterators.cs
- SqlDataSource.cs
- ImageConverter.cs
- TimeSpanParse.cs
- ExpressionBuilderCollection.cs
- RayMeshGeometry3DHitTestResult.cs
- Pool.cs
- DetailsView.cs
- WebScriptServiceHostFactory.cs