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
- WindowsAltTab.cs
- cookie.cs
- SqlException.cs
- RegisteredExpandoAttribute.cs
- XmlParserContext.cs
- ColumnMapProcessor.cs
- DefinitionProperties.cs
- PathGeometry.cs
- ImageCreator.cs
- InstanceHandleReference.cs
- VirtualPathProvider.cs
- MDIWindowDialog.cs
- ToolStripLabel.cs
- SendKeys.cs
- BooleanToVisibilityConverter.cs
- AssemblyName.cs
- BitmapEffectInput.cs
- StrokeCollection.cs
- RotationValidation.cs
- DelegatedStream.cs
- FlowDocumentFormatter.cs
- SpStreamWrapper.cs
- CompositionTarget.cs
- XpsFontSerializationService.cs
- QueryStringParameter.cs
- PartitionerQueryOperator.cs
- ProfileBuildProvider.cs
- QueueProcessor.cs
- CommonObjectSecurity.cs
- DataTableMapping.cs
- DocumentPageHost.cs
- ExtensionWindow.cs
- ByteAnimationBase.cs
- AlphabeticalEnumConverter.cs
- CharacterMetricsDictionary.cs
- XmlSchemaComplexContentRestriction.cs
- Int16Animation.cs
- SecurityManager.cs
- DataSet.cs
- RangeValuePattern.cs
- DataGridViewCellMouseEventArgs.cs
- OciLobLocator.cs
- WinEventWrap.cs
- DataGridTemplateColumn.cs
- WrapPanel.cs
- Stream.cs
- Subtree.cs
- DbParameterHelper.cs
- XmlSerializerImportOptions.cs
- ListViewItemCollectionEditor.cs
- ButtonPopupAdapter.cs
- Focus.cs
- CriticalHandle.cs
- PeerInvitationResponse.cs
- ToolStripContentPanelRenderEventArgs.cs
- PropertyToken.cs
- ValueQuery.cs
- BaseHashHelper.cs
- TemplateKey.cs
- FontFamilyValueSerializer.cs
- QualificationDataItem.cs
- PerformanceCounters.cs
- RegexCaptureCollection.cs
- ChangesetResponse.cs
- figurelengthconverter.cs
- TypedElement.cs
- Animatable.cs
- InternalReceiveMessage.cs
- SecurityContext.cs
- VarInfo.cs
- DataControlPagerLinkButton.cs
- CodeLabeledStatement.cs
- SafeCoTaskMem.cs
- Keyboard.cs
- BorderGapMaskConverter.cs
- WindowsSlider.cs
- TypeLoadException.cs
- ResourceProviderFactory.cs
- InvalidEnumArgumentException.cs
- StorageConditionPropertyMapping.cs
- TrackBarDesigner.cs
- XmlLanguage.cs
- AssemblyInfo.cs
- SqlServer2KCompatibilityAnnotation.cs
- WhitespaceRuleLookup.cs
- ListenerElementsCollection.cs
- HandlerBase.cs
- LogicalExpressionTypeConverter.cs
- TreeNodeBindingCollection.cs
- RuntimeHelpers.cs
- CatalogPart.cs
- BuildResult.cs
- DBSchemaRow.cs
- EllipseGeometry.cs
- TypeDelegator.cs
- GroupAggregateExpr.cs
- ListControl.cs
- DataGridViewCellCancelEventArgs.cs
- BinaryObjectInfo.cs
- DragDropHelper.cs