private void MergeExtension(ProjectConfiguration extensionConfig)
{
string extensionName = extensionConfig.Name;
foreach (string name in extensionConfig.Routing.Keys)
{
if (this.Routing.ContainsKey(name))
{
log.WarnFormat("Skipped registering route '{0}' from extension '{1}' because a route with the same name already exists.", name, extensionName);
continue;
}
extensionConfig.Routing[name].Extension = extensionName;
this.Routing.Add(name, extensionConfig.Routing[name]);
}
foreach (KeyValuePair<string, ExtensionString> pair in extensionConfig.Linking.Links)
{
if (this.Linking.Links.ContainsKey(pair.Key))
{
log.WarnFormat("Skipped registering link '{0}' from extension '{1}' because a link with the same name already exists.", pair.Key, extensionName);
continue;
}
var newLink = this.Linking.AddLink(pair.Key, pair.Value.Value);
newLink.Extension = extensionName;
}
foreach (KeyValuePair<string, ExtensionString> pair in extensionConfig.Linking.Formats)
{
if (this.Linking.Formats.ContainsKey(pair.Key))
{
log.WarnFormat("Skipped registering format '{0}' from extension '{1}' because a link with the same name already exists.", pair.Key, extensionName);
continue;
}
var newFormat = this.Linking.AddFormat(pair.Key, pair.Value.Value);
newFormat.Extension = extensionName;
}
foreach (string name in extensionConfig.ResourceLibraries.Keys)
{
if (this.ResourceLibraries.ContainsKey(name))
{
log.WarnFormat("Skipped registering script library '{0}' from extension '{1}' because a script library with the same name already exists.", name, extensionName);
continue;
}
ResourceLibraryInfo library = extensionConfig.ResourceLibraries[name];
library.Resources.Each(r => r.Extension = extensionName);
library.Extension = extensionName;
this.ResourceLibraries.Add(name, library);
}
foreach (string name in extensionConfig.MetaViews.Keys)
{
if (this.MetaViews.ContainsKey(name))
{
log.WarnFormat("Skipped registering meta view '{0}' from extension '{1}' because a meta view with the same name already exists.", name, extensionName);
continue;
}
MetaViewInfo info = extensionConfig.MetaViews[name];
info.Extension = extensionName;
this.MetaViews.Add(name, info);
}
foreach (string number in extensionConfig.ErrorViews.Keys)
{
if (this.ErrorViews.ContainsKey(number))
{
log.WarnFormat("Skipped registering error view '{0}' from extension '{1}' because an error view with the same number already exists.", number, extensionName);
continue;
}
ErrorViewInfo info = extensionConfig.ErrorViews[number];
info.Extension = extensionName;
this.ErrorViews.Add(number, info);
}
foreach (string name in extensionConfig.Modules.Keys)
{
if (this.Modules.ContainsKey(name))
{
log.WarnFormat("Skipped registering module '{0}' from extension '{1}' because a module with the same name already exists.", name, extensionName);
continue;
}
ModuleConfiguration module = extensionConfig.Modules[name];
module.Resources.Each(r => r.Extension = extensionName);
module.Extension = extensionName;
this.Modules.Add(name, module);
}
}