Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Extensions / UI / ScriptResourceMapping.cs / 1305376 / ScriptResourceMapping.cs
namespace System.Web.UI {
using System;
using System.Collections.Concurrent;
using System.Globalization;
using System.Reflection;
using System.Web.Resources;
using System.Web.Util;
public class ScriptResourceMapping : IScriptResourceMapping {
private ConcurrentDictionary, ScriptResourceDefinition> _definitions =
new ConcurrentDictionary, ScriptResourceDefinition>();
public void AddDefinition(string name, ScriptResourceDefinition definition) {
AddDefinition(name, null, definition);
}
public void AddDefinition(string name, Assembly assembly, ScriptResourceDefinition definition) {
// dictionary indexer will update the value if it already exists
if (String.IsNullOrEmpty(name)) {
throw new ArgumentException(AtlasWeb.Common_NullOrEmpty, "name");
}
if (definition == null) {
throw new ArgumentNullException("definition");
}
if (String.IsNullOrEmpty(definition.ResourceName) && String.IsNullOrEmpty(definition.Path)) {
throw new ArgumentException(AtlasWeb.ScriptResourceDefinition_NameAndPathCannotBeEmpty, "definition");
}
EnsureAbsoluteOrAppRelative(definition.Path);
EnsureAbsoluteOrAppRelative(definition.DebugPath);
EnsureAbsoluteOrAppRelative(definition.CdnPath);
EnsureAbsoluteOrAppRelative(definition.CdnDebugPath);
_definitions[new Tuple(name, assembly)] = definition;
}
public void Clear() {
_definitions.Clear();
}
private void EnsureAbsoluteOrAppRelative(string path) {
if (!String.IsNullOrEmpty(path) &&
!UrlPath.IsAppRelativePath(path) && // ~/foo..
!UrlPath.IsRooted(path) && // /foo
!Uri.IsWellFormedUriString(path, UriKind.Absolute)) { // http://...
throw new InvalidOperationException(
String.Format(CultureInfo.InvariantCulture, AtlasWeb.ScriptResourceDefinition_InvalidPath, path));
}
}
public ScriptResourceDefinition GetDefinition(string name, Assembly assembly) {
if (String.IsNullOrEmpty(name)) {
throw new ArgumentException(AtlasWeb.Common_NullOrEmpty, "name");
}
ScriptResourceDefinition definition;
_definitions.TryGetValue(new Tuple(name, assembly), out definition);
return definition;
}
public ScriptResourceDefinition GetDefinition(ScriptReference scriptReference) {
if (scriptReference == null) {
throw new ArgumentNullException("scriptReference");
}
string name = scriptReference.Name;
Assembly assembly = null;
ScriptResourceDefinition definition = null;
if (!String.IsNullOrEmpty(name)) {
assembly = scriptReference.GetAssembly();
if ((assembly != null) && AssemblyCache.IsAjaxFrameworkAssembly(assembly)) {
assembly = null;
}
definition = ScriptManager.ScriptResourceMapping.GetDefinition(name, assembly);
}
return definition;
}
public ScriptResourceDefinition RemoveDefinition(string name, Assembly assembly) {
if (String.IsNullOrEmpty(name)) {
throw new ArgumentException(AtlasWeb.Common_NullOrEmpty, "name");
}
ScriptResourceDefinition definition;
_definitions.TryRemove(new Tuple(name, assembly), out definition);
return definition;
}
#region IScriptResourceMapping Members
IScriptResourceDefinition IScriptResourceMapping.GetDefinition(string name, Assembly assembly) {
return GetDefinition(name, assembly);
}
#endregion
}
}
// 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
- SessionPageStateSection.cs
- CheckedListBox.cs
- _BasicClient.cs
- AutoGeneratedField.cs
- MarginsConverter.cs
- WebEventCodes.cs
- Pair.cs
- SemanticResolver.cs
- DocumentViewer.cs
- TrackingWorkflowEventArgs.cs
- ActivityMarkupSerializationProvider.cs
- ObjectContextServiceProvider.cs
- FormViewInsertEventArgs.cs
- FontResourceCache.cs
- DuplexChannelBinder.cs
- DataBoundControl.cs
- KeysConverter.cs
- WebPartCloseVerb.cs
- XmlSchemaAny.cs
- DBConcurrencyException.cs
- AttachmentCollection.cs
- CustomErrorCollection.cs
- InstanceKey.cs
- AutoResizedEvent.cs
- PerformanceCounterLib.cs
- EntityDataSourceViewSchema.cs
- QueueSurrogate.cs
- PrivateFontCollection.cs
- Utilities.cs
- RichTextBoxConstants.cs
- Variable.cs
- DataGridHyperlinkColumn.cs
- NullExtension.cs
- Bidi.cs
- DiagnosticSection.cs
- NotImplementedException.cs
- Pkcs7Recipient.cs
- BrushConverter.cs
- Exceptions.cs
- ManipulationStartingEventArgs.cs
- Events.cs
- EtwProvider.cs
- MeshGeometry3D.cs
- SizeFConverter.cs
- LinqDataSourceSelectEventArgs.cs
- SelfIssuedAuthProofToken.cs
- FormViewCommandEventArgs.cs
- CheckBoxList.cs
- AuthenticationManager.cs
- NativeCppClassAttribute.cs
- EditableTreeList.cs
- Stylesheet.cs
- SmtpReplyReader.cs
- RootBrowserWindowAutomationPeer.cs
- DropSource.cs
- WebCategoryAttribute.cs
- GetParentChain.cs
- StringComparer.cs
- MessageSecurityTokenVersion.cs
- DataGridParentRows.cs
- TypeInfo.cs
- Span.cs
- ThicknessConverter.cs
- TextParagraphCache.cs
- NetworkInterface.cs
- DataConnectionHelper.cs
- HandleCollector.cs
- SparseMemoryStream.cs
- GridViewCommandEventArgs.cs
- RecordsAffectedEventArgs.cs
- ExternalDataExchangeClient.cs
- BaseTemplateParser.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- NetworkInformationPermission.cs
- ModuleElement.cs
- Thickness.cs
- returneventsaver.cs
- DependencyPropertyDescriptor.cs
- SourceLocationProvider.cs
- SqlTransaction.cs
- Drawing.cs
- PropertyDescriptors.cs
- RequestCachingSection.cs
- TreeIterator.cs
- ParameterCollection.cs
- InstanceCreationEditor.cs
- XmlDictionaryReader.cs
- HtmlHistory.cs
- LightweightCodeGenerator.cs
- MouseActionConverter.cs
- SendKeys.cs
- DrawingAttributesDefaultValueFactory.cs
- AnonymousIdentificationModule.cs
- ReferentialConstraint.cs
- ClientProxyGenerator.cs
- PageVisual.cs
- SmtpNetworkElement.cs
- DataGridViewAdvancedBorderStyle.cs
- ISAPIApplicationHost.cs
- EdmToObjectNamespaceMap.cs