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; MostlySingletonListreferredIds; 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
- Point3DKeyFrameCollection.cs
- exports.cs
- SchemaElementLookUpTableEnumerator.cs
- IPEndPoint.cs
- PropertyPathWorker.cs
- BuildProvidersCompiler.cs
- odbcmetadatacollectionnames.cs
- ProfileService.cs
- WindowsListViewGroup.cs
- WindowsToolbarAsMenu.cs
- CustomBindingElementCollection.cs
- DispatcherEventArgs.cs
- MenuItemBindingCollection.cs
- XmlFormatWriterGenerator.cs
- IndicShape.cs
- PropertyStore.cs
- SqlTransaction.cs
- PointCollection.cs
- CompatibleComparer.cs
- DescendantQuery.cs
- InstanceCompleteException.cs
- ProfileModule.cs
- SerialPort.cs
- TraceXPathNavigator.cs
- QuaternionValueSerializer.cs
- CallContext.cs
- TagPrefixAttribute.cs
- TextWriterEngine.cs
- CompModSwitches.cs
- DataGridColumn.cs
- ProjectedSlot.cs
- AccessViolationException.cs
- TimeoutHelper.cs
- ContextDataSource.cs
- IResourceProvider.cs
- Util.cs
- Types.cs
- DispatchWrapper.cs
- ListItemConverter.cs
- SQLString.cs
- ConstraintStruct.cs
- MimeImporter.cs
- FontUnitConverter.cs
- FragmentQueryKB.cs
- GetPageNumberCompletedEventArgs.cs
- EndEvent.cs
- SeekStoryboard.cs
- TcpHostedTransportConfiguration.cs
- EntityAdapter.cs
- UIElement3D.cs
- ListViewItem.cs
- BitConverter.cs
- GeneratedCodeAttribute.cs
- ExceptionValidationRule.cs
- RSAPKCS1SignatureFormatter.cs
- AsyncMethodInvoker.cs
- DataObjectAttribute.cs
- StrokeNodeOperations2.cs
- WindowsUpDown.cs
- PolicyStatement.cs
- CompositeFontParser.cs
- ServiceModelActivity.cs
- FrugalList.cs
- RecognizerStateChangedEventArgs.cs
- DeviceSpecific.cs
- FunctionUpdateCommand.cs
- Command.cs
- KeyboardNavigation.cs
- CompilerGeneratedAttribute.cs
- RichTextBox.cs
- FormViewUpdatedEventArgs.cs
- FileEnumerator.cs
- InvalidCastException.cs
- ValueSerializer.cs
- SystemInformation.cs
- BindingGroup.cs
- DocumentCollection.cs
- CompensationToken.cs
- ResourceExpressionBuilder.cs
- WebPartConnectionsCloseVerb.cs
- DiagnosticStrings.cs
- ScriptReferenceBase.cs
- MiniAssembly.cs
- LayoutUtils.cs
- MenuDesigner.cs
- Effect.cs
- ApplicationActivator.cs
- EndpointConfigContainer.cs
- TriggerAction.cs
- MailHeaderInfo.cs
- StdValidatorsAndConverters.cs
- VisualBasicReference.cs
- FormsAuthenticationCredentials.cs
- XmlBuffer.cs
- SecurityDescriptor.cs
- ValidationSummary.cs
- AttributeCollection.cs
- SettingsPropertyNotFoundException.cs
- TemplateBaseAction.cs
- RowsCopiedEventArgs.cs