Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / ndp / fx / src / DataWeb / Client / System / Data / Services / Client / Util.cs / 1 / Util.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // //// static utility functions // //--------------------------------------------------------------------- namespace System.Data.Services.Client { using System.Diagnostics; ////// static utility function /// internal static class Util { ///forward slash char array for triming uris internal static readonly char[] ForwardSlash = new char[1] { '/' }; ////// static char[] for indenting whitespace when tracing xml /// private static char[] whitespaceForTracing = new char[] { '\r', '\n', ' ', ' ', ' ', ' ', ' ' }; ////// ReferenceIdentity is a test hook to help verify we dont' use identity instead of editLink /// private static FuncreferenceIdentity = delegate(Uri identity) { return identity; }; /// /// DereferenceIdentity is a test hook to help verify we dont' use identity instead of editLink /// private static FuncdereferenceIdentity = delegate(Uri identity) { return identity; }; /// /// ReferenceIdentity is a test hook to help verify we dont' use identity instead of editLink /// internal static FuncReferenceIdentity { get { return referenceIdentity; } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Pending")] set { referenceIdentity = value; } } /// /// DereferenceIdentity is a test hook to help verify we dont' use identity instead of editLink /// internal static FuncDereferenceIdentity { get { return dereferenceIdentity; } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Pending")] set { dereferenceIdentity = value; } } /// /// Checks the argument value for null and throw ArgumentNullException if it is null /// ///type of the argument to prevent accidental boxing of value types /// argument whose value needs to be checked /// name of the argument ///if value is null ///value internal static T CheckArgumentNull(T value, string parameterName) where T : class { if (null == value) { throw Error.ArgumentNull(parameterName); } return value; } /// /// Checks the string value is not empty /// /// value to check /// parameterName of public function ///if value is null ///if value is empty internal static void CheckArgumentNotEmpty(string value, string parameterName) { CheckArgumentNull(value, parameterName); if (0 == value.Length) { throw Error.Argument(Strings.Util_EmptyString, parameterName); } } ////// Checks the array value is not empty /// ///type of the argument to prevent accidental boxing of value types /// value to check /// parameterName of public function ///if value is null ///if value is empty or contains null elements internal static void CheckArgumentNotEmpty(T[] value, string parameterName) where T : class { CheckArgumentNull(value, parameterName); if (0 == value.Length) { throw Error.Argument(Strings.Util_EmptyArray, parameterName); } for (int i = 0; i < value.Length; ++i) { if (Object.ReferenceEquals(value[i], null)) { throw Error.Argument(Strings.Util_NullArrayElement, parameterName); } } } /// /// Validate MergeOption /// /// option to validate /// name of the parameter being validated ///if option is not valid ///option internal static MergeOption CheckEnumerationValue(MergeOption value, string parameterName) { switch (value) { case MergeOption.AppendOnly: case MergeOption.OverwriteChanges: case MergeOption.PreserveChanges: case MergeOption.NoTracking: return value; default: throw Error.ArgumentOutOfRange(parameterName); } } ////// get char[] for indenting whitespace when tracing xml /// /// how many characters to trace ///char[] internal static char[] GetWhitespaceForTracing(int depth) { char[] whitespace = Util.whitespaceForTracing; while (whitespace.Length <= depth) { char[] tmp = new char[2 * whitespace.Length]; tmp[0] = '\r'; tmp[1] = '\n'; for (int i = 2; i < tmp.Length; ++i) { tmp[i] = ' '; } System.Threading.Interlocked.CompareExchange(ref Util.whitespaceForTracing, tmp, whitespace); whitespace = tmp; } return whitespace; } ///new Uri(string uriString, UriKind uriKind) /// value /// kind ///new Uri(value, kind) internal static Uri CreateUri(string value, UriKind kind) { Uri result = new Uri(value, kind); return result; } ///new Uri(Uri baseUri, Uri requestUri) /// baseUri /// relativeUri ///new Uri(baseUri, requestUri) internal static Uri CreateUri(Uri baseUri, Uri requestUri) { Debug.Assert((null != baseUri) && baseUri.IsAbsoluteUri, "baseUri !IsAbsoluteUri"); Debug.Assert(String.IsNullOrEmpty(baseUri.Query) && String.IsNullOrEmpty(baseUri.Fragment), "baseUri has query or fragment"); Util.CheckArgumentNull(requestUri, "requestUri"); // there is a bug in (new Uri(Uri,Uri)) which corrupts the port of the result if out relativeUri is also absolute if (!requestUri.IsAbsoluteUri) { if (baseUri.OriginalString.EndsWith("/", StringComparison.Ordinal)) { if (requestUri.OriginalString.StartsWith("/", StringComparison.Ordinal)) { requestUri = new Uri(baseUri, Util.CreateUri(requestUri.OriginalString.TrimStart(Util.ForwardSlash), UriKind.Relative)); } else { requestUri = new Uri(baseUri, requestUri); } } else { requestUri = Util.CreateUri(baseUri.OriginalString + "/" + requestUri.OriginalString.TrimStart(Util.ForwardSlash), UriKind.Absolute); } } // consider: just use the orignal requestUri if it was is absolute and not care about the baseUri // always verify IsBaseOf after making absolute to deal with ".." relative Uri if (!UriUtil.UriInvariantInsensitiveIsBaseOf(baseUri, requestUri)) { throw Error.Argument(Strings.Context_ServiceRootNotBaseUri, "requestUri"); } return requestUri; } ////// does the array contain the value reference /// ///generic type /// array to search /// value being looked for ///true if value reference was found in array internal static bool ContainsReference(T[] array, T value) where T : class { return (0 <= IndexOfReference (array, value)); } /// dispose of the object and set the reference to null ///type that implements IDisposable /// object to dispose internal static void Dispose(ref T disposable) where T : class, IDisposable { Dispose(disposable); disposable = null; } /// dispose of the object ///type that implements IDisposable /// object to dispose internal static void Dispose(T disposable) where T : class, IDisposable { if (null != disposable) { disposable.Dispose(); } } /// /// index of value reference in the array /// ///generic type /// array to search /// value being looked for ///index of value reference in the array else (-1) internal static int IndexOfReference(T[] array, T value) where T : class { Debug.Assert(null != array, "null array"); for (int i = 0; i < array.Length; ++i) { if (object.ReferenceEquals(array[i], value)) { return i; } } return -1; } /// Checks whether the exception should not be handled. /// exception to test ///true if the exception should not be handled internal static bool DoNotHandleException(Exception ex) { return ((null != ex) && ((ex is System.StackOverflowException) || (ex is System.OutOfMemoryException) || (ex is System.Threading.ThreadAbortException))); } ///validate value is non-null ///type of value /// value /// error code to throw if null ///the non-null value internal static T NullCheck(T value, InternalError errorcode) where T : class { if (Object.ReferenceEquals(value, null)) { Error.ThrowInternalError(errorcode); } return value; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // //// static utility functions // //--------------------------------------------------------------------- namespace System.Data.Services.Client { using System.Diagnostics; ////// static utility function /// internal static class Util { ///forward slash char array for triming uris internal static readonly char[] ForwardSlash = new char[1] { '/' }; ////// static char[] for indenting whitespace when tracing xml /// private static char[] whitespaceForTracing = new char[] { '\r', '\n', ' ', ' ', ' ', ' ', ' ' }; ////// ReferenceIdentity is a test hook to help verify we dont' use identity instead of editLink /// private static FuncreferenceIdentity = delegate(Uri identity) { return identity; }; /// /// DereferenceIdentity is a test hook to help verify we dont' use identity instead of editLink /// private static FuncdereferenceIdentity = delegate(Uri identity) { return identity; }; /// /// ReferenceIdentity is a test hook to help verify we dont' use identity instead of editLink /// internal static FuncReferenceIdentity { get { return referenceIdentity; } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Pending")] set { referenceIdentity = value; } } /// /// DereferenceIdentity is a test hook to help verify we dont' use identity instead of editLink /// internal static FuncDereferenceIdentity { get { return dereferenceIdentity; } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Pending")] set { dereferenceIdentity = value; } } /// /// Checks the argument value for null and throw ArgumentNullException if it is null /// ///type of the argument to prevent accidental boxing of value types /// argument whose value needs to be checked /// name of the argument ///if value is null ///value internal static T CheckArgumentNull(T value, string parameterName) where T : class { if (null == value) { throw Error.ArgumentNull(parameterName); } return value; } /// /// Checks the string value is not empty /// /// value to check /// parameterName of public function ///if value is null ///if value is empty internal static void CheckArgumentNotEmpty(string value, string parameterName) { CheckArgumentNull(value, parameterName); if (0 == value.Length) { throw Error.Argument(Strings.Util_EmptyString, parameterName); } } ////// Checks the array value is not empty /// ///type of the argument to prevent accidental boxing of value types /// value to check /// parameterName of public function ///if value is null ///if value is empty or contains null elements internal static void CheckArgumentNotEmpty(T[] value, string parameterName) where T : class { CheckArgumentNull(value, parameterName); if (0 == value.Length) { throw Error.Argument(Strings.Util_EmptyArray, parameterName); } for (int i = 0; i < value.Length; ++i) { if (Object.ReferenceEquals(value[i], null)) { throw Error.Argument(Strings.Util_NullArrayElement, parameterName); } } } /// /// Validate MergeOption /// /// option to validate /// name of the parameter being validated ///if option is not valid ///option internal static MergeOption CheckEnumerationValue(MergeOption value, string parameterName) { switch (value) { case MergeOption.AppendOnly: case MergeOption.OverwriteChanges: case MergeOption.PreserveChanges: case MergeOption.NoTracking: return value; default: throw Error.ArgumentOutOfRange(parameterName); } } ////// get char[] for indenting whitespace when tracing xml /// /// how many characters to trace ///char[] internal static char[] GetWhitespaceForTracing(int depth) { char[] whitespace = Util.whitespaceForTracing; while (whitespace.Length <= depth) { char[] tmp = new char[2 * whitespace.Length]; tmp[0] = '\r'; tmp[1] = '\n'; for (int i = 2; i < tmp.Length; ++i) { tmp[i] = ' '; } System.Threading.Interlocked.CompareExchange(ref Util.whitespaceForTracing, tmp, whitespace); whitespace = tmp; } return whitespace; } ///new Uri(string uriString, UriKind uriKind) /// value /// kind ///new Uri(value, kind) internal static Uri CreateUri(string value, UriKind kind) { Uri result = new Uri(value, kind); return result; } ///new Uri(Uri baseUri, Uri requestUri) /// baseUri /// relativeUri ///new Uri(baseUri, requestUri) internal static Uri CreateUri(Uri baseUri, Uri requestUri) { Debug.Assert((null != baseUri) && baseUri.IsAbsoluteUri, "baseUri !IsAbsoluteUri"); Debug.Assert(String.IsNullOrEmpty(baseUri.Query) && String.IsNullOrEmpty(baseUri.Fragment), "baseUri has query or fragment"); Util.CheckArgumentNull(requestUri, "requestUri"); // there is a bug in (new Uri(Uri,Uri)) which corrupts the port of the result if out relativeUri is also absolute if (!requestUri.IsAbsoluteUri) { if (baseUri.OriginalString.EndsWith("/", StringComparison.Ordinal)) { if (requestUri.OriginalString.StartsWith("/", StringComparison.Ordinal)) { requestUri = new Uri(baseUri, Util.CreateUri(requestUri.OriginalString.TrimStart(Util.ForwardSlash), UriKind.Relative)); } else { requestUri = new Uri(baseUri, requestUri); } } else { requestUri = Util.CreateUri(baseUri.OriginalString + "/" + requestUri.OriginalString.TrimStart(Util.ForwardSlash), UriKind.Absolute); } } // consider: just use the orignal requestUri if it was is absolute and not care about the baseUri // always verify IsBaseOf after making absolute to deal with ".." relative Uri if (!UriUtil.UriInvariantInsensitiveIsBaseOf(baseUri, requestUri)) { throw Error.Argument(Strings.Context_ServiceRootNotBaseUri, "requestUri"); } return requestUri; } ////// does the array contain the value reference /// ///generic type /// array to search /// value being looked for ///true if value reference was found in array internal static bool ContainsReference(T[] array, T value) where T : class { return (0 <= IndexOfReference (array, value)); } /// dispose of the object and set the reference to null ///type that implements IDisposable /// object to dispose internal static void Dispose(ref T disposable) where T : class, IDisposable { Dispose(disposable); disposable = null; } /// dispose of the object ///type that implements IDisposable /// object to dispose internal static void Dispose(T disposable) where T : class, IDisposable { if (null != disposable) { disposable.Dispose(); } } /// /// index of value reference in the array /// ///generic type /// array to search /// value being looked for ///index of value reference in the array else (-1) internal static int IndexOfReference(T[] array, T value) where T : class { Debug.Assert(null != array, "null array"); for (int i = 0; i < array.Length; ++i) { if (object.ReferenceEquals(array[i], value)) { return i; } } return -1; } /// Checks whether the exception should not be handled. /// exception to test ///true if the exception should not be handled internal static bool DoNotHandleException(Exception ex) { return ((null != ex) && ((ex is System.StackOverflowException) || (ex is System.OutOfMemoryException) || (ex is System.Threading.ThreadAbortException))); } ///validate value is non-null ///type of value /// value /// error code to throw if null ///the non-null value internal static T NullCheck(T value, InternalError errorcode) where T : class { if (Object.ReferenceEquals(value, null)) { Error.ThrowInternalError(errorcode); } return value; } } } // 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
- HiddenField.cs
- MimeMultiPart.cs
- DataSvcMapFile.cs
- ChannelAcceptor.cs
- Region.cs
- ObjectViewListener.cs
- BuildProvider.cs
- CrossSiteScriptingValidation.cs
- CdpEqualityComparer.cs
- RangeValidator.cs
- FilterQueryOptionExpression.cs
- AudioFormatConverter.cs
- SpecialFolderEnumConverter.cs
- Socket.cs
- ServiceDurableInstanceContextProvider.cs
- UseManagedPresentationBindingElement.cs
- CodeParameterDeclarationExpression.cs
- LeaseManager.cs
- XpsFilter.cs
- GeometryGroup.cs
- DocumentGridPage.cs
- TableStyle.cs
- GridViewCommandEventArgs.cs
- GeneralTransform2DTo3D.cs
- ObsoleteAttribute.cs
- PlanCompiler.cs
- PluggableProtocol.cs
- AssociatedControlConverter.cs
- DataGridHeaderBorder.cs
- Pair.cs
- DetailsViewPagerRow.cs
- SplineKeyFrames.cs
- PriorityChain.cs
- EntityCommandDefinition.cs
- XmlSerializerVersionAttribute.cs
- CodeTypeReference.cs
- XmlObjectSerializerWriteContextComplexJson.cs
- DocumentViewerBase.cs
- SearchForVirtualItemEventArgs.cs
- ActivityExecutionContext.cs
- WinEventQueueItem.cs
- BamlLocalizableResource.cs
- CodeMemberField.cs
- ArrayEditor.cs
- _RequestLifetimeSetter.cs
- XmlObjectSerializerReadContext.cs
- DecoderExceptionFallback.cs
- ValueChangedEventManager.cs
- UnaryExpression.cs
- PreservationFileReader.cs
- DataSourceExpression.cs
- BeginEvent.cs
- ApplicationActivator.cs
- ThemeDictionaryExtension.cs
- UnitySerializationHolder.cs
- TimeZone.cs
- OdbcConnection.cs
- _SingleItemRequestCache.cs
- DataBinding.cs
- ToolStripSystemRenderer.cs
- PolicyManager.cs
- ResizeGrip.cs
- RectangleF.cs
- assemblycache.cs
- StylusPlugin.cs
- SpeakInfo.cs
- SQLGuid.cs
- SamlAssertionKeyIdentifierClause.cs
- HashCodeCombiner.cs
- XmlSchemaComplexContent.cs
- TracingConnectionListener.cs
- Input.cs
- ConfigXmlWhitespace.cs
- DatatypeImplementation.cs
- FontDifferentiator.cs
- MobileCapabilities.cs
- XmlReader.cs
- ObjectPersistData.cs
- TaskScheduler.cs
- SiteMapNodeItemEventArgs.cs
- HtmlInputImage.cs
- TextServicesProperty.cs
- SafeRightsManagementPubHandle.cs
- Win32.cs
- GridProviderWrapper.cs
- LabelLiteral.cs
- DataGridViewColumnCollectionDialog.cs
- Renderer.cs
- LogSwitch.cs
- SqlVisitor.cs
- Oid.cs
- CryptoHelper.cs
- CryptoHelper.cs
- WindowsListViewItem.cs
- ByteRangeDownloader.cs
- DataSysAttribute.cs
- WebAdminConfigurationHelper.cs
- SRGSCompiler.cs
- RIPEMD160Managed.cs
- ColorConvertedBitmapExtension.cs