Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Extensions / UI / ScriptResourceInfo.cs / 1305376 / ScriptResourceInfo.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI { using System; using System.Collections; using System.Collections.Generic; using System.Globalization; using System.Reflection; using System.Web.Handlers; using System.Web.Resources; using System.Web.Util; internal class ScriptResourceInfo { private string _contentType; private bool _performSubstitution; private string _scriptName; private string _scriptResourceName; private string _typeName; private bool _isDebug; private string _cdnPath; private string _cdnPathSecureConnection; private static readonly IDictionary _scriptCache = Hashtable.Synchronized(new Hashtable()); private static readonly IDictionary _duplicateScriptAttributesChecked = Hashtable.Synchronized(new Hashtable()); public static readonly ScriptResourceInfo Empty = new ScriptResourceInfo(); private ScriptResourceInfo() { } public ScriptResourceInfo(WebResourceAttribute wra, ScriptResourceAttribute sra, Assembly assembly) : this() { _scriptName = wra.WebResource; _cdnPath = wra.CdnPath; _contentType = wra.ContentType; _performSubstitution = wra.PerformSubstitution; _isDebug = !String.IsNullOrEmpty(_scriptName) && _scriptName.EndsWith(".debug.js", StringComparison.OrdinalIgnoreCase); if (sra != null) { _scriptResourceName = sra.StringResourceName; _typeName = sra.StringResourceClientTypeName; } if (!String.IsNullOrEmpty(_cdnPath)) { _cdnPath = AssemblyResourceLoader.FormatCdnUrl(assembly, _cdnPath); _cdnPathSecureConnection = AssemblyResourceLoader.FormatCdnUrl(assembly, wra.CdnPathSecureConnection); } } public string CdnPath { get { return _cdnPath; } } public string CdnPathSecureConnection { get { return _cdnPathSecureConnection; } } public string ContentType { get { return _contentType; } } public bool IsDebug { get { return _isDebug; } } public bool PerformSubstitution { get { return _performSubstitution; } } public string ScriptName { get { return _scriptName; } } public string ScriptResourceName { get { return _scriptResourceName; } } public string TypeName { get { return _typeName; } } public static ScriptResourceInfo GetInstance(Assembly assembly, string resourceName) { // The first time this API is called, check for attributes that point to the same script if (!_duplicateScriptAttributesChecked.Contains(assembly)) { Dictionaryscripts = new Dictionary (); foreach (ScriptResourceAttribute attr in assembly.GetCustomAttributes(typeof(ScriptResourceAttribute), false)) { string scriptName = attr.ScriptName; if (scripts.ContainsKey(scriptName)) { throw new InvalidOperationException( String.Format(CultureInfo.CurrentCulture, AtlasWeb.ScriptResourceHandler_DuplicateScriptResources, scriptName, assembly.GetName())); } scripts.Add(scriptName, true); } _duplicateScriptAttributesChecked[assembly] = true; } Pair cacheKey = new Pair (assembly, resourceName); ScriptResourceInfo resourceInfo = (ScriptResourceInfo)_scriptCache[cacheKey]; if (resourceInfo == null) { WebResourceAttribute webResourceAttribute = null; ScriptResourceAttribute scriptResourceAttribute = null; // look for a WebResourceAttribute with that name object[] attrs = assembly.GetCustomAttributes(typeof(WebResourceAttribute), false); foreach (WebResourceAttribute wra in attrs) { if (String.Equals(wra.WebResource, resourceName, StringComparison.Ordinal)) { webResourceAttribute = wra; break; } } if (webResourceAttribute != null) { // look for a script resource attribute with that name attrs = assembly.GetCustomAttributes(typeof(ScriptResourceAttribute), false); foreach (ScriptResourceAttribute sra in attrs) { if (String.Equals(sra.ScriptName, resourceName, StringComparison.Ordinal)) { scriptResourceAttribute = sra; break; } } resourceInfo = new ScriptResourceInfo(webResourceAttribute, scriptResourceAttribute, assembly); } else { resourceInfo = ScriptResourceInfo.Empty; } // Cache the results so we don't have to do this again _scriptCache[cacheKey] = resourceInfo; } return resourceInfo; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI { using System; using System.Collections; using System.Collections.Generic; using System.Globalization; using System.Reflection; using System.Web.Handlers; using System.Web.Resources; using System.Web.Util; internal class ScriptResourceInfo { private string _contentType; private bool _performSubstitution; private string _scriptName; private string _scriptResourceName; private string _typeName; private bool _isDebug; private string _cdnPath; private string _cdnPathSecureConnection; private static readonly IDictionary _scriptCache = Hashtable.Synchronized(new Hashtable()); private static readonly IDictionary _duplicateScriptAttributesChecked = Hashtable.Synchronized(new Hashtable()); public static readonly ScriptResourceInfo Empty = new ScriptResourceInfo(); private ScriptResourceInfo() { } public ScriptResourceInfo(WebResourceAttribute wra, ScriptResourceAttribute sra, Assembly assembly) : this() { _scriptName = wra.WebResource; _cdnPath = wra.CdnPath; _contentType = wra.ContentType; _performSubstitution = wra.PerformSubstitution; _isDebug = !String.IsNullOrEmpty(_scriptName) && _scriptName.EndsWith(".debug.js", StringComparison.OrdinalIgnoreCase); if (sra != null) { _scriptResourceName = sra.StringResourceName; _typeName = sra.StringResourceClientTypeName; } if (!String.IsNullOrEmpty(_cdnPath)) { _cdnPath = AssemblyResourceLoader.FormatCdnUrl(assembly, _cdnPath); _cdnPathSecureConnection = AssemblyResourceLoader.FormatCdnUrl(assembly, wra.CdnPathSecureConnection); } } public string CdnPath { get { return _cdnPath; } } public string CdnPathSecureConnection { get { return _cdnPathSecureConnection; } } public string ContentType { get { return _contentType; } } public bool IsDebug { get { return _isDebug; } } public bool PerformSubstitution { get { return _performSubstitution; } } public string ScriptName { get { return _scriptName; } } public string ScriptResourceName { get { return _scriptResourceName; } } public string TypeName { get { return _typeName; } } public static ScriptResourceInfo GetInstance(Assembly assembly, string resourceName) { // The first time this API is called, check for attributes that point to the same script if (!_duplicateScriptAttributesChecked.Contains(assembly)) { Dictionaryscripts = new Dictionary (); foreach (ScriptResourceAttribute attr in assembly.GetCustomAttributes(typeof(ScriptResourceAttribute), false)) { string scriptName = attr.ScriptName; if (scripts.ContainsKey(scriptName)) { throw new InvalidOperationException( String.Format(CultureInfo.CurrentCulture, AtlasWeb.ScriptResourceHandler_DuplicateScriptResources, scriptName, assembly.GetName())); } scripts.Add(scriptName, true); } _duplicateScriptAttributesChecked[assembly] = true; } Pair cacheKey = new Pair (assembly, resourceName); ScriptResourceInfo resourceInfo = (ScriptResourceInfo)_scriptCache[cacheKey]; if (resourceInfo == null) { WebResourceAttribute webResourceAttribute = null; ScriptResourceAttribute scriptResourceAttribute = null; // look for a WebResourceAttribute with that name object[] attrs = assembly.GetCustomAttributes(typeof(WebResourceAttribute), false); foreach (WebResourceAttribute wra in attrs) { if (String.Equals(wra.WebResource, resourceName, StringComparison.Ordinal)) { webResourceAttribute = wra; break; } } if (webResourceAttribute != null) { // look for a script resource attribute with that name attrs = assembly.GetCustomAttributes(typeof(ScriptResourceAttribute), false); foreach (ScriptResourceAttribute sra in attrs) { if (String.Equals(sra.ScriptName, resourceName, StringComparison.Ordinal)) { scriptResourceAttribute = sra; break; } } resourceInfo = new ScriptResourceInfo(webResourceAttribute, scriptResourceAttribute, assembly); } else { resourceInfo = ScriptResourceInfo.Empty; } // Cache the results so we don't have to do this again _scriptCache[cacheKey] = resourceInfo; } return resourceInfo; } } } // 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
- DataControlLinkButton.cs
- CreateUserErrorEventArgs.cs
- CultureSpecificStringDictionary.cs
- RTLAwareMessageBox.cs
- HandlerMappingMemo.cs
- SafeRightsManagementQueryHandle.cs
- ToolStripDropDownClosingEventArgs.cs
- FontUnit.cs
- MemberDomainMap.cs
- _KerberosClient.cs
- DefinitionBase.cs
- BypassElementCollection.cs
- ListViewTableRow.cs
- ApplicationContext.cs
- SiteOfOriginContainer.cs
- SqlIdentifier.cs
- AsyncResult.cs
- CodeDirectiveCollection.cs
- BrowserInteropHelper.cs
- TraceContext.cs
- PreviewPrintController.cs
- SimpleType.cs
- MissingFieldException.cs
- SynchronizationContext.cs
- Literal.cs
- TiffBitmapDecoder.cs
- ExecutedRoutedEventArgs.cs
- TcpAppDomainProtocolHandler.cs
- ErrorItem.cs
- TemplateBindingExtension.cs
- SplayTreeNode.cs
- CoreSwitches.cs
- MailDefinition.cs
- XmlAttribute.cs
- RawMouseInputReport.cs
- ProxyGenerationError.cs
- ExpressionVisitor.cs
- ProfileSettings.cs
- CalendarTable.cs
- ChangeNode.cs
- CodeTypeDeclarationCollection.cs
- CustomTypeDescriptor.cs
- TextReader.cs
- Line.cs
- SyndicationSerializer.cs
- FrameworkPropertyMetadata.cs
- UnregisterInfo.cs
- DecoderFallbackWithFailureFlag.cs
- CookielessHelper.cs
- shaperfactoryquerycacheentry.cs
- StreamGeometry.cs
- CryptographicAttribute.cs
- WorkflowInstanceExtensionManager.cs
- RuleRefElement.cs
- UIntPtr.cs
- TypeDependencyAttribute.cs
- ReadOnlyCollection.cs
- FactoryGenerator.cs
- BufferManager.cs
- RawMouseInputReport.cs
- DoubleAnimationUsingKeyFrames.cs
- MD5Cng.cs
- SqlDataAdapter.cs
- OutputWindow.cs
- _ProxyRegBlob.cs
- Triangle.cs
- Menu.cs
- RectAnimationClockResource.cs
- NamespaceList.cs
- NullableDecimalMinMaxAggregationOperator.cs
- MsmqNonTransactedPoisonHandler.cs
- AdapterSwitches.cs
- TextEvent.cs
- DataTrigger.cs
- CryptoStream.cs
- TextBounds.cs
- AssemblyUtil.cs
- RegistrationServices.cs
- DataSourceCollectionBase.cs
- ScriptReferenceEventArgs.cs
- CssClassPropertyAttribute.cs
- SecurityPolicySection.cs
- ProbeMatchesCD1.cs
- OracleMonthSpan.cs
- FormatSelectingMessageInspector.cs
- XmlArrayItemAttribute.cs
- DataException.cs
- CodeVariableReferenceExpression.cs
- RolePrincipal.cs
- StylusButtonCollection.cs
- ObjectCacheHost.cs
- ThreadPool.cs
- TreeViewEvent.cs
- OnOperation.cs
- SoundPlayerAction.cs
- CmsUtils.cs
- _BufferOffsetSize.cs
- XmlSiteMapProvider.cs
- PathGradientBrush.cs
- FormViewDeletedEventArgs.cs