Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Configuration / XPathMessageFilterElementComparer.cs / 1 / XPathMessageFilterElementComparer.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.Configuration { using System; using System.ServiceModel.Dispatcher; using System.Collections; using System.Text; using System.Xml; public class XPathMessageFilterElementComparer : IComparer { #region IComparer Members int IComparer.Compare(object x, object y) { string elementKey1 = TranslateObjectToElementKey(x); string elementKey2 = TranslateObjectToElementKey(y); return String.Compare(elementKey1, elementKey2, StringComparison.Ordinal); } #endregion internal static string ParseXPathString(XPathMessageFilter filter) { return XPathMessageFilterElementComparer.ParseXPathString(filter, false); } internal static string ParseXPathString(XPathMessageFilter filter, bool throwOnFailure) { XPathLexer lexer = new XPathLexer(filter.XPath); return XPathMessageFilterElementComparer.ParseXPathString(lexer, filter.Namespaces, throwOnFailure); } static string ParseXPathString(XPathLexer lexer, XmlNamespaceManager namespaceManager, bool throwOnFailure) { string retVal = String.Empty; int currentTokenStart = lexer.FirstTokenChar; if (lexer.MoveNext()) { XPathToken token = lexer.Token; StringBuilder xPathString = new StringBuilder(XPathMessageFilterElementComparer.ParseXPathString(lexer, namespaceManager, throwOnFailure)); if (XPathTokenID.NameTest == token.TokenID) { string nsPrefix = token.Prefix; if (!String.IsNullOrEmpty(nsPrefix)) { string ns = namespaceManager.LookupNamespace(nsPrefix); if (!String.IsNullOrEmpty(ns)) { xPathString = xPathString.Replace(nsPrefix, ns, currentTokenStart, nsPrefix.Length); } else { if (throwOnFailure) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new IndexOutOfRangeException(SR.GetString(SR.ConfigXPathNamespacePrefixNotFound, nsPrefix))); } } } } retVal = xPathString.ToString(); } else { retVal = lexer.ConsumedSubstring(); } return retVal; } string TranslateObjectToElementKey(object obj) { string elementKey = null; if (obj.GetType().IsAssignableFrom(typeof(XPathMessageFilter))) { elementKey = XPathMessageFilterElementComparer.ParseXPathString((XPathMessageFilter)obj); } else if (obj.GetType().IsAssignableFrom(typeof(XPathMessageFilterElement))) { elementKey = XPathMessageFilterElementComparer.ParseXPathString(((XPathMessageFilterElement)obj).Filter); } else if (obj.GetType().IsAssignableFrom(typeof(string))) { elementKey = (string)obj; } if (String.IsNullOrEmpty(elementKey)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException( SR.GetString(SR.ConfigCannotParseXPathFilter, obj.GetType().AssemblyQualifiedName))); } return elementKey; } } } // 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
- RichTextBox.cs
- ResXResourceWriter.cs
- BrowsableAttribute.cs
- XmlDataCollection.cs
- WarningException.cs
- ProcessThread.cs
- WebPartDisplayModeCollection.cs
- ChunkedMemoryStream.cs
- DbConvert.cs
- SwitchElementsCollection.cs
- XmlSchemaAny.cs
- SqlComparer.cs
- MimeObjectFactory.cs
- DataControlLinkButton.cs
- ClonableStack.cs
- SplitterEvent.cs
- DataBindingCollection.cs
- PackageProperties.cs
- SerialReceived.cs
- CommonDialog.cs
- PageCatalogPartDesigner.cs
- ProcessingInstructionAction.cs
- ToolStripSystemRenderer.cs
- ObjectViewQueryResultData.cs
- WorkflowOwnershipException.cs
- WindowsToolbarItemAsMenuItem.cs
- PropertyPathConverter.cs
- InfoCardClaimCollection.cs
- WS2007HttpBindingCollectionElement.cs
- IssuanceTokenProviderState.cs
- PictureBoxDesigner.cs
- Base64Decoder.cs
- ContainerControlDesigner.cs
- RichTextBoxConstants.cs
- ErrorRuntimeConfig.cs
- InstallerTypeAttribute.cs
- TreeChangeInfo.cs
- SiteMapNodeItemEventArgs.cs
- RegionInfo.cs
- ViewRendering.cs
- MediaEntryAttribute.cs
- SmtpNtlmAuthenticationModule.cs
- HtmlDocument.cs
- StorageEntityContainerMapping.cs
- ParamArrayAttribute.cs
- PrintingPermissionAttribute.cs
- KnownColorTable.cs
- PointHitTestResult.cs
- RelationshipEnd.cs
- SecurityDocument.cs
- loginstatus.cs
- CloseCollectionAsyncResult.cs
- NamespaceCollection.cs
- CalloutQueueItem.cs
- VectorAnimation.cs
- ParameterToken.cs
- HandlerMappingMemo.cs
- CheckBoxList.cs
- BrowsableAttribute.cs
- SqlDelegatedTransaction.cs
- CryptoProvider.cs
- TemplateControl.cs
- MsmqAppDomainProtocolHandler.cs
- TimeSpanSecondsConverter.cs
- TextMetrics.cs
- AttributeProviderAttribute.cs
- PersonalizableTypeEntry.cs
- EnvironmentPermission.cs
- Dump.cs
- StylusDownEventArgs.cs
- MouseActionConverter.cs
- PersistenceTypeAttribute.cs
- Regex.cs
- DataGridViewEditingControlShowingEventArgs.cs
- ButtonBaseDesigner.cs
- SourceChangedEventArgs.cs
- AssemblyUtil.cs
- TypeHelpers.cs
- DataGridViewColumnDividerDoubleClickEventArgs.cs
- ImageMetadata.cs
- SqlDuplicator.cs
- SendMailErrorEventArgs.cs
- XmlDataCollection.cs
- HeaderElement.cs
- SafeEventLogWriteHandle.cs
- OleDbTransaction.cs
- JoinCqlBlock.cs
- XsdDuration.cs
- StringDictionaryEditor.cs
- RequestCachingSection.cs
- TemplateBindingExpression.cs
- PropertyPathConverter.cs
- LocationEnvironment.cs
- ColumnHeaderConverter.cs
- WriteTimeStream.cs
- SerializerDescriptor.cs
- KeyFrames.cs
- CompressEmulationStream.cs
- NativeMethods.cs
- Documentation.cs