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
- RotateTransform.cs
- ObjectViewFactory.cs
- MetadataArtifactLoaderComposite.cs
- CodeEventReferenceExpression.cs
- RegistryPermission.cs
- UnsafeNativeMethods.cs
- CodeStatement.cs
- FormViewDeletedEventArgs.cs
- TextShapeableCharacters.cs
- MobilePage.cs
- BufferModesCollection.cs
- ObjectMemberMapping.cs
- MetabaseServerConfig.cs
- ChannelServices.cs
- listitem.cs
- SpoolingTaskBase.cs
- AccessibleObject.cs
- D3DImage.cs
- ImageMapEventArgs.cs
- Point3DKeyFrameCollection.cs
- DomNameTable.cs
- WebPartChrome.cs
- Transform3DCollection.cs
- Rijndael.cs
- SerializerDescriptor.cs
- ServiceCredentialsElement.cs
- WindowProviderWrapper.cs
- Pkcs7Recipient.cs
- GlobalItem.cs
- WarningException.cs
- XmlProcessingInstruction.cs
- ToolStripContentPanel.cs
- ValidatorCompatibilityHelper.cs
- WebResponse.cs
- ConnectionManagementElementCollection.cs
- Focus.cs
- TextSelectionProcessor.cs
- DataGridViewCellStateChangedEventArgs.cs
- ListViewPagedDataSource.cs
- DocumentGridPage.cs
- MyContact.cs
- ModifiableIteratorCollection.cs
- TrackingStringDictionary.cs
- followingsibling.cs
- ResourceDescriptionAttribute.cs
- SQLBinary.cs
- XmlSchemaObject.cs
- TagMapInfo.cs
- MultiPropertyDescriptorGridEntry.cs
- DataObject.cs
- TabControlEvent.cs
- Cursor.cs
- Baml2006KnownTypes.cs
- FlowLayoutPanel.cs
- HtmlElementEventArgs.cs
- XPathArrayIterator.cs
- FlowLayoutSettings.cs
- DataBoundControl.cs
- InvalidateEvent.cs
- Adorner.cs
- PropertyContainer.cs
- InfoCardSymmetricAlgorithm.cs
- FormattedTextSymbols.cs
- Expression.cs
- DesignerSerializationVisibilityAttribute.cs
- HitTestResult.cs
- InfoCardRSACryptoProvider.cs
- StandardBindingCollectionElement.cs
- TdsEnums.cs
- IgnorePropertiesAttribute.cs
- StrokeCollectionConverter.cs
- DesignerAdapterAttribute.cs
- SmiRecordBuffer.cs
- HWStack.cs
- DefaultWorkflowLoaderService.cs
- ConfigurationLocation.cs
- TextBlock.cs
- NamespaceList.cs
- COM2PropertyPageUITypeConverter.cs
- QueryCacheManager.cs
- DesignerSelectionListAdapter.cs
- RealizationDrawingContextWalker.cs
- SmiTypedGetterSetter.cs
- __Filters.cs
- RSAOAEPKeyExchangeFormatter.cs
- WebConvert.cs
- RequiredAttributeAttribute.cs
- DataConnectionHelper.cs
- TemplateInstanceAttribute.cs
- RawStylusInputCustomData.cs
- NTAccount.cs
- ToolStripContentPanel.cs
- StringAttributeCollection.cs
- ELinqQueryState.cs
- ReadOnlyNameValueCollection.cs
- QueueAccessMode.cs
- DataGridItem.cs
- TraceSection.cs
- XmlText.cs
- TypeTypeConverter.cs