You've already forked linux-packaging-mono
Imported Upstream version 4.6.0.125
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
This commit is contained in:
parent
a569aebcfd
commit
e79aa3c0ed
@ -0,0 +1,109 @@
|
||||
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 readonly ConcurrentDictionary<Tuple<String, Assembly>, ScriptResourceDefinition> _definitions =
|
||||
new ConcurrentDictionary<Tuple<String, Assembly>, ScriptResourceDefinition>();
|
||||
|
||||
public void AddDefinition(string name, ScriptResourceDefinition definition) {
|
||||
AddDefinition(name, assembly: AssemblyCache.SystemWebExtensions, definition: 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);
|
||||
assembly = NormalizeAssembly(assembly);
|
||||
_definitions[new Tuple<String, Assembly>(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) {
|
||||
return GetDefinition(name, AssemblyCache.SystemWebExtensions);
|
||||
}
|
||||
|
||||
public ScriptResourceDefinition GetDefinition(string name, Assembly assembly) {
|
||||
if (String.IsNullOrEmpty(name)) {
|
||||
throw new ArgumentException(AtlasWeb.Common_NullOrEmpty, "name");
|
||||
}
|
||||
ScriptResourceDefinition definition;
|
||||
assembly = NormalizeAssembly(assembly);
|
||||
_definitions.TryGetValue(new Tuple<string, Assembly>(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();
|
||||
definition = ScriptManager.ScriptResourceMapping.GetDefinition(name, assembly);
|
||||
}
|
||||
return definition;
|
||||
}
|
||||
|
||||
public ScriptResourceDefinition RemoveDefinition(string name) {
|
||||
return RemoveDefinition(name, AssemblyCache.SystemWebExtensions);
|
||||
}
|
||||
|
||||
public ScriptResourceDefinition RemoveDefinition(string name, Assembly assembly) {
|
||||
if (String.IsNullOrEmpty(name)) {
|
||||
throw new ArgumentException(AtlasWeb.Common_NullOrEmpty, "name");
|
||||
}
|
||||
ScriptResourceDefinition definition;
|
||||
assembly = NormalizeAssembly(assembly);
|
||||
_definitions.TryRemove(new Tuple<String, Assembly>(name, assembly), out definition);
|
||||
return definition;
|
||||
}
|
||||
|
||||
#region IScriptResourceMapping Members
|
||||
IScriptResourceDefinition IScriptResourceMapping.GetDefinition(string name) {
|
||||
return GetDefinition(name);
|
||||
}
|
||||
|
||||
IScriptResourceDefinition IScriptResourceMapping.GetDefinition(string name, Assembly assembly) {
|
||||
return GetDefinition(name, assembly);
|
||||
}
|
||||
#endregion
|
||||
|
||||
private static Assembly NormalizeAssembly(Assembly assembly) {
|
||||
if ((assembly != null) && AssemblyCache.IsAjaxFrameworkAssembly(assembly)) {
|
||||
assembly = null;
|
||||
}
|
||||
return assembly;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user