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
- NameValuePair.cs
- AnnotationObservableCollection.cs
- PrivateUnsafeNativeCompoundFileMethods.cs
- BindToObject.cs
- filewebresponse.cs
- MappingException.cs
- TemplateControlCodeDomTreeGenerator.cs
- XLinq.cs
- ExceptionRoutedEventArgs.cs
- CaseInsensitiveComparer.cs
- SafeProcessHandle.cs
- JoinTreeSlot.cs
- DialogWindow.cs
- WindowsSlider.cs
- Literal.cs
- XmlDownloadManager.cs
- PriorityItem.cs
- WorkflowApplication.cs
- SafeHandles.cs
- RemoteWebConfigurationHostStream.cs
- DetailsViewRowCollection.cs
- BooleanStorage.cs
- QuadraticBezierSegment.cs
- EntityParameter.cs
- ExceptionUtility.cs
- DataBindingExpressionBuilder.cs
- TypedTableHandler.cs
- BuildProvidersCompiler.cs
- MergeExecutor.cs
- XPathMultyIterator.cs
- XmlWriterSettings.cs
- XmlAnyElementAttributes.cs
- DirectionalLight.cs
- InvalidDataException.cs
- MsmqBindingBase.cs
- CodeMemberMethod.cs
- HtmlInputImage.cs
- ProcessManager.cs
- RefType.cs
- AccessDataSourceDesigner.cs
- XmlSchemaChoice.cs
- DataGridViewColumnEventArgs.cs
- DesignerActionHeaderItem.cs
- BulletDecorator.cs
- IProvider.cs
- BaseDataBoundControl.cs
- FixedSOMPageElement.cs
- Scanner.cs
- _CookieModule.cs
- TextStore.cs
- Query.cs
- FileVersion.cs
- NativeMsmqMessage.cs
- LogSwitch.cs
- DocumentAutomationPeer.cs
- SpeechRecognizer.cs
- StorageEndPropertyMapping.cs
- ObjectDataSourceEventArgs.cs
- PropertyToken.cs
- MethodRental.cs
- StyleModeStack.cs
- TypeSystemProvider.cs
- LicenseContext.cs
- EventSinkHelperWriter.cs
- Floater.cs
- LingerOption.cs
- Hashtable.cs
- XPathAncestorQuery.cs
- TabRenderer.cs
- ViewBase.cs
- X509Certificate2Collection.cs
- KnownTypes.cs
- ChannelBinding.cs
- Calendar.cs
- UriWriter.cs
- FontStretches.cs
- CellParagraph.cs
- SecurityPolicySection.cs
- HtmlImage.cs
- InvalidPropValue.cs
- LassoHelper.cs
- QilExpression.cs
- ObjectReaderCompiler.cs
- XsltInput.cs
- Section.cs
- TextTreeUndo.cs
- SerialPinChanges.cs
- XmlDomTextWriter.cs
- Predicate.cs
- TypeInitializationException.cs
- XmlSchemaObjectTable.cs
- PrimitiveCodeDomSerializer.cs
- DesignerVerb.cs
- SingleAnimationUsingKeyFrames.cs
- TableFieldsEditor.cs
- WebRequestModulesSection.cs
- StructuralCache.cs
- FieldBuilder.cs
- XmlHierarchyData.cs
- RightsManagementInformation.cs