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
- HtmlShimManager.cs
- AutomationElementCollection.cs
- ProtectedConfiguration.cs
- HostProtectionException.cs
- PerspectiveCamera.cs
- MsmqIntegrationBindingElement.cs
- CollectionChangedEventManager.cs
- IconHelper.cs
- RuleSetReference.cs
- ControlCachePolicy.cs
- TextBox.cs
- TextureBrush.cs
- ContentAlignmentEditor.cs
- XpsFilter.cs
- DataSourceProvider.cs
- WebPartConnectVerb.cs
- CompilationUnit.cs
- TargetInvocationException.cs
- DocumentXmlWriter.cs
- MachineKeyConverter.cs
- OSFeature.cs
- IFlowDocumentViewer.cs
- CodeStatement.cs
- EntityDataSourceChangingEventArgs.cs
- NonBatchDirectoryCompiler.cs
- DataGridViewCellStateChangedEventArgs.cs
- ServerType.cs
- SQLBinary.cs
- RoutedEvent.cs
- DispatcherExceptionEventArgs.cs
- LocationReferenceValue.cs
- ParserStack.cs
- PageTheme.cs
- BackStopAuthenticationModule.cs
- TemplateColumn.cs
- XmlTextReader.cs
- LightweightCodeGenerator.cs
- GenericXmlSecurityToken.cs
- DataGridViewColumnDesigner.cs
- SafeNativeMethodsMilCoreApi.cs
- RightsManagementInformation.cs
- Token.cs
- ActivityDesignerAccessibleObject.cs
- CrossAppDomainChannel.cs
- PixelShader.cs
- LocalBuilder.cs
- EncodingTable.cs
- ZipIOExtraField.cs
- StylusButton.cs
- WithStatement.cs
- LogConverter.cs
- HttpHandlerActionCollection.cs
- FrameworkTemplate.cs
- AlternateView.cs
- FontStyles.cs
- WorkflowOwnerAsyncResult.cs
- TempFiles.cs
- SHA384.cs
- SqlRowUpdatingEvent.cs
- ControlIdConverter.cs
- EventSourceCreationData.cs
- NamespaceMapping.cs
- EnumUnknown.cs
- GridProviderWrapper.cs
- CultureSpecificStringDictionary.cs
- DesignerToolboxInfo.cs
- LockCookie.cs
- RSAProtectedConfigurationProvider.cs
- EmissiveMaterial.cs
- UnsafeNativeMethods.cs
- MultiBinding.cs
- Rijndael.cs
- LayoutSettings.cs
- XmlEncoding.cs
- MetafileHeaderWmf.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- CssStyleCollection.cs
- SqlBooleanizer.cs
- ColorAnimationBase.cs
- CompensatableTransactionScopeActivityDesigner.cs
- PropertyValueEditor.cs
- CopyCodeAction.cs
- Metadata.cs
- ValidationResult.cs
- DelegatedStream.cs
- ObjectTypeMapping.cs
- WebPartZone.cs
- NativeMethods.cs
- WindowsIPAddress.cs
- RegistryPermission.cs
- OptimizedTemplateContent.cs
- DataColumnCollection.cs
- WsdlBuildProvider.cs
- DataGridViewTextBoxEditingControl.cs
- ElementNotAvailableException.cs
- RuntimeVariableList.cs
- BitmapSizeOptions.cs
- ContourSegment.cs
- Stack.cs
- ByteConverter.cs