Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / XmlUtils / System / Xml / Xsl / XPath / XPathCompileException.cs / 1305376 / XPathCompileException.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- using System.Runtime.Serialization; using System.Security.Permissions; using System.Text; namespace System.Xml.Xsl.XPath { [Serializable] internal class XPathCompileException : XslLoadException { public string queryString; public int startChar; public int endChar; protected XPathCompileException(SerializationInfo info, StreamingContext context) : base(info, context) { queryString = (string)info.GetValue("QueryString", typeof(string)); startChar = (int) info.GetValue("StartChar" , typeof(int )); endChar = (int) info.GetValue("EndChar" , typeof(int )); } [SecurityPermissionAttribute(SecurityAction.LinkDemand, SerializationFormatter = true)] public override void GetObjectData(SerializationInfo info, StreamingContext context) { base.GetObjectData(info, context); info.AddValue("QueryString", queryString); info.AddValue("StartChar" , startChar); info.AddValue("EndChar" , endChar); } internal XPathCompileException(string queryString, int startChar, int endChar, string resId, params string[] args) : base(resId, args) { this.queryString = queryString; this.startChar = startChar; this.endChar = endChar; } internal XPathCompileException(string resId, params string[] args) : base(resId, args) {} // queryString will be set later private enum TrimType { Left, Right, Middle, } // This function is used to prevent long quotations in error messages, SQLBUDT 222626 private static void AppendTrimmed(StringBuilder sb, string value, int startIndex, int count, TrimType trimType) { const int TrimSize = 32; const string TrimMarker = "..."; if (count <= TrimSize) { sb.Append(value, startIndex, count); } else { switch (trimType) { case TrimType.Left: sb.Append(TrimMarker); sb.Append(value, startIndex + count - TrimSize, TrimSize); break; case TrimType.Right: sb.Append(value, startIndex, TrimSize); sb.Append(TrimMarker); break; case TrimType.Middle: sb.Append(value, startIndex, TrimSize / 2); sb.Append(TrimMarker); sb.Append(value, startIndex + count - TrimSize / 2, TrimSize / 2); break; } } } internal string MarkOutError() { if (queryString == null || queryString.Trim(' ').Length == 0) { return null; } int len = endChar - startChar; StringBuilder sb = new StringBuilder(); AppendTrimmed(sb, queryString, 0, startChar, TrimType.Left); if (len > 0) { sb.Append(" -->"); AppendTrimmed(sb, queryString, startChar, len, TrimType.Middle); } sb.Append("<-- "); AppendTrimmed(sb, queryString, endChar, queryString.Length - endChar, TrimType.Right); return sb.ToString(); } internal override string FormatDetailedMessage() { string message = Message; string error = MarkOutError(); if (error != null && error.Length > 0) { if (message.Length > 0) { message += Environment.NewLine; } message += error; } return message; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- using System.Runtime.Serialization; using System.Security.Permissions; using System.Text; namespace System.Xml.Xsl.XPath { [Serializable] internal class XPathCompileException : XslLoadException { public string queryString; public int startChar; public int endChar; protected XPathCompileException(SerializationInfo info, StreamingContext context) : base(info, context) { queryString = (string)info.GetValue("QueryString", typeof(string)); startChar = (int) info.GetValue("StartChar" , typeof(int )); endChar = (int) info.GetValue("EndChar" , typeof(int )); } [SecurityPermissionAttribute(SecurityAction.LinkDemand, SerializationFormatter = true)] public override void GetObjectData(SerializationInfo info, StreamingContext context) { base.GetObjectData(info, context); info.AddValue("QueryString", queryString); info.AddValue("StartChar" , startChar); info.AddValue("EndChar" , endChar); } internal XPathCompileException(string queryString, int startChar, int endChar, string resId, params string[] args) : base(resId, args) { this.queryString = queryString; this.startChar = startChar; this.endChar = endChar; } internal XPathCompileException(string resId, params string[] args) : base(resId, args) {} // queryString will be set later private enum TrimType { Left, Right, Middle, } // This function is used to prevent long quotations in error messages, SQLBUDT 222626 private static void AppendTrimmed(StringBuilder sb, string value, int startIndex, int count, TrimType trimType) { const int TrimSize = 32; const string TrimMarker = "..."; if (count <= TrimSize) { sb.Append(value, startIndex, count); } else { switch (trimType) { case TrimType.Left: sb.Append(TrimMarker); sb.Append(value, startIndex + count - TrimSize, TrimSize); break; case TrimType.Right: sb.Append(value, startIndex, TrimSize); sb.Append(TrimMarker); break; case TrimType.Middle: sb.Append(value, startIndex, TrimSize / 2); sb.Append(TrimMarker); sb.Append(value, startIndex + count - TrimSize / 2, TrimSize / 2); break; } } } internal string MarkOutError() { if (queryString == null || queryString.Trim(' ').Length == 0) { return null; } int len = endChar - startChar; StringBuilder sb = new StringBuilder(); AppendTrimmed(sb, queryString, 0, startChar, TrimType.Left); if (len > 0) { sb.Append(" -->"); AppendTrimmed(sb, queryString, startChar, len, TrimType.Middle); } sb.Append("<-- "); AppendTrimmed(sb, queryString, endChar, queryString.Length - endChar, TrimType.Right); return sb.ToString(); } internal override string FormatDetailedMessage() { string message = Message; string error = MarkOutError(); if (error != null && error.Length > 0) { if (message.Length > 0) { message += Environment.NewLine; } message += error; } return message; } } } // 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
- DataGridViewRowHeaderCell.cs
- DateTime.cs
- EditorServiceContext.cs
- InternalDispatchObject.cs
- GifBitmapDecoder.cs
- DataGridLength.cs
- EndpointDiscoveryMetadataCD1.cs
- SafeCoTaskMem.cs
- SqlBulkCopy.cs
- DataRowExtensions.cs
- MessageQueuePermissionEntryCollection.cs
- IdnMapping.cs
- SafeRightsManagementSessionHandle.cs
- CustomAttribute.cs
- AspNetHostingPermission.cs
- CalendarDay.cs
- Select.cs
- ZipIOExtraFieldElement.cs
- Transform3D.cs
- Crc32.cs
- PropertyGrid.cs
- NativeWindow.cs
- Part.cs
- ParameterElementCollection.cs
- Empty.cs
- HandleRef.cs
- SignatureDescription.cs
- TabPanel.cs
- FunctionParameter.cs
- SystemIPv6InterfaceProperties.cs
- CollectionExtensions.cs
- PageThemeCodeDomTreeGenerator.cs
- MenuItemCollectionEditorDialog.cs
- FamilyMapCollection.cs
- MILUtilities.cs
- ClientData.cs
- HostedHttpContext.cs
- HtmlTableRowCollection.cs
- BamlResourceDeserializer.cs
- BuildManagerHost.cs
- IconHelper.cs
- SortDescriptionCollection.cs
- UIHelper.cs
- CultureInfoConverter.cs
- HttpHandlersSection.cs
- ColumnHeaderConverter.cs
- PresentationTraceSources.cs
- PeerNameRecord.cs
- RandomDelayQueuedSendsAsyncResult.cs
- EntityDescriptor.cs
- SecurityVerifiedMessage.cs
- SqlInternalConnectionSmi.cs
- DynamicMethod.cs
- ImportOptions.cs
- MultiPropertyDescriptorGridEntry.cs
- ScrollViewer.cs
- VerificationException.cs
- ArrayEditor.cs
- XmlILTrace.cs
- PerformanceCounter.cs
- ToolStripItemRenderEventArgs.cs
- ModelTreeEnumerator.cs
- Constants.cs
- mactripleDES.cs
- WebBrowserSiteBase.cs
- Trace.cs
- CharAnimationUsingKeyFrames.cs
- TagPrefixCollection.cs
- MarkedHighlightComponent.cs
- CryptoConfig.cs
- MobileControl.cs
- SQLResource.cs
- SoapIncludeAttribute.cs
- ListItemCollection.cs
- ProfessionalColors.cs
- WindowsFormsSynchronizationContext.cs
- NameValuePermission.cs
- cryptoapiTransform.cs
- AssemblyAttributesGoHere.cs
- ProcessModule.cs
- ParsedAttributeCollection.cs
- CellTreeNodeVisitors.cs
- PropertyConverter.cs
- MULTI_QI.cs
- FileStream.cs
- querybuilder.cs
- MouseGestureValueSerializer.cs
- ConstNode.cs
- RenameRuleObjectDialog.Designer.cs
- Transform.cs
- ConfigurationStrings.cs
- LightweightCodeGenerator.cs
- ErrorStyle.cs
- Component.cs
- SkipQueryOptionExpression.cs
- FastPropertyAccessor.cs
- CommandTreeTypeHelper.cs
- LoginCancelEventArgs.cs
- EnumType.cs
- DataGridHelper.cs