Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ConfigurationLockCollection.cs
- HealthMonitoringSection.cs
- DataContractSet.cs
- PackWebResponse.cs
- DataGridDesigner.cs
- PropertyGridEditorPart.cs
- GroupByQueryOperator.cs
- DispatcherEventArgs.cs
- GlobalizationAssembly.cs
- InternalTypeHelper.cs
- CacheEntry.cs
- HtmlInputImage.cs
- Subtree.cs
- QilValidationVisitor.cs
- ProtocolsConfigurationHandler.cs
- GenerateDerivedKeyRequest.cs
- FunctionQuery.cs
- SchemaEntity.cs
- DatatypeImplementation.cs
- ControlOperationInvoker.cs
- RelatedEnd.cs
- ToolStripRendererSwitcher.cs
- InvalidateEvent.cs
- DiffuseMaterial.cs
- TextEffect.cs
- ServiceNotStartedException.cs
- storepermissionattribute.cs
- TextTreeUndoUnit.cs
- BaseAppDomainProtocolHandler.cs
- QueryExtender.cs
- IntellisenseTextBox.designer.cs
- SoapFault.cs
- ValidationSummary.cs
- MdiWindowListItemConverter.cs
- EventTrigger.cs
- UnknownWrapper.cs
- Pair.cs
- ToReply.cs
- CollectionContainer.cs
- UrlPath.cs
- ScrollEventArgs.cs
- NameNode.cs
- BufferedStream.cs
- SynchronizationContext.cs
- RegexTypeEditor.cs
- ReadOnlyCollectionBuilder.cs
- CodeStatement.cs
- EntityStoreSchemaGenerator.cs
- ModulesEntry.cs
- DataTableExtensions.cs
- DragDrop.cs
- GcSettings.cs
- LinearKeyFrames.cs
- PolicyReader.cs
- AuthorizationSection.cs
- MouseWheelEventArgs.cs
- ResumeStoryboard.cs
- NativeMethodsOther.cs
- StyleSheetRefUrlEditor.cs
- Enum.cs
- XPathEmptyIterator.cs
- Logging.cs
- Soap11ServerProtocol.cs
- IPAddress.cs
- BitArray.cs
- CountdownEvent.cs
- ColumnTypeConverter.cs
- StringBlob.cs
- LineGeometry.cs
- EventInfo.cs
- EventLogQuery.cs
- streamingZipPartStream.cs
- XmlElementAttribute.cs
- CodeGenerator.cs
- DataGridViewSelectedCellCollection.cs
- XslTransform.cs
- FixedPageProcessor.cs
- BinaryFormatterWriter.cs
- BigInt.cs
- FixUp.cs
- MenuItemStyleCollection.cs
- CngAlgorithmGroup.cs
- TextRangeBase.cs
- oledbmetadatacollectionnames.cs
- IMembershipProvider.cs
- HyperLink.cs
- DispatchWrapper.cs
- GenerateHelper.cs
- AssemblyCollection.cs
- MessageSecurityOverTcp.cs
- XmlUtilWriter.cs
- PermissionListSet.cs
- OrderByBuilder.cs
- IgnoreFileBuildProvider.cs
- SocketStream.cs
- UIElementHelper.cs
- HitTestParameters.cs
- CacheMemory.cs
- BasicHttpMessageCredentialType.cs
- HwndMouseInputProvider.cs