From ed69e84874b710c2cc3b8af94dd00cf725cf6d03 Mon Sep 17 00:00:00 2001 From: mingchen Date: Thu, 19 Jul 2007 20:39:33 +0000 Subject: *Moved XmlConfiguration to its own project *Made it possible to load a configuration interface by DLL *Deleted the 1024 config files until they are updated --- .../Configuration/XML/XmlConfiguration.cs | 124 +++++++++++++++++++++ .../General/Configuration/ConfigurationMember.cs | 52 +++++++-- .../Configuration/Interfaces/IGenericConfig.cs | 3 +- .../General/Configuration/XmlConfiguration.cs | 123 -------------------- OpenSim/Grid/AssetServer/Main.cs | 28 ----- OpenSim/Grid/GridServer/Main.cs | 4 +- OpenSim/Grid/UserServer/Main.cs | 4 +- OpenSim/Region/Application/OpenSimMain.cs | 4 +- 8 files changed, 173 insertions(+), 169 deletions(-) create mode 100644 OpenSim/Framework/Configuration/XML/XmlConfiguration.cs delete mode 100644 OpenSim/Framework/General/Configuration/XmlConfiguration.cs (limited to 'OpenSim') diff --git a/OpenSim/Framework/Configuration/XML/XmlConfiguration.cs b/OpenSim/Framework/Configuration/XML/XmlConfiguration.cs new file mode 100644 index 0000000..e56c657 --- /dev/null +++ b/OpenSim/Framework/Configuration/XML/XmlConfiguration.cs @@ -0,0 +1,124 @@ +/* +* Copyright (c) Contributors, http://www.openmetaverse.org/ +* See CONTRIBUTORS.TXT for a full list of copyright holders. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions are met: +* * Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* * Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in the +* documentation and/or other materials provided with the distribution. +* * Neither the name of the OpenSim Project nor the +* names of its contributors may be used to endorse or promote products +* derived from this software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY +* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY +* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* +*/ +using System; +using System.IO; +using System.Xml; + +using OpenSim.Framework.Interfaces; +using OpenSim.Framework.Configuration.Interfaces; + +namespace OpenSim.Framework.Configuration +{ + public class XmlConfiguration : IGenericConfig + { + private XmlDocument doc; + private XmlNode rootNode; + private XmlNode configNode; + private string fileName; + private bool createdFile = false; + + public void SetFileName(string file) + { + fileName = file; + } + + public void LoadData() + { + doc = new XmlDocument(); + + if (File.Exists(fileName)) + { + XmlTextReader reader = new XmlTextReader(fileName); + reader.WhitespaceHandling = WhitespaceHandling.None; + doc.Load(reader); + reader.Close(); + } + else + { + createdFile = true; + rootNode = doc.CreateNode(XmlNodeType.Element, "Root", ""); + doc.AppendChild(rootNode); + configNode = doc.CreateNode(XmlNodeType.Element, "Config", ""); + rootNode.AppendChild(configNode); + } + + + rootNode = doc.FirstChild; + if (rootNode.Name != "Root") + throw new Exception("Error: Invalid .xml File. Missing "); + + configNode = rootNode.FirstChild; + if (configNode.Name != "Config") + throw new Exception("Error: Invalid .xml File. first child should be "); + + if (createdFile) + { + this.Commit(); + } + } + + public string GetAttribute(string attributeName) + { + string result = null; + if (configNode.Attributes[attributeName] != null) + { + result = ((XmlAttribute)configNode.Attributes.GetNamedItem(attributeName)).Value; + } + return result; + } + + public bool SetAttribute(string attributeName, string attributeValue) + { + if (configNode.Attributes[attributeName] != null) + { + ((XmlAttribute)configNode.Attributes.GetNamedItem(attributeName)).Value = attributeValue; + } + else + { + XmlAttribute attri; + attri = doc.CreateAttribute(attributeName); + attri.Value = attributeValue; + configNode.Attributes.Append(attri); + } + return true; + } + + public void Commit() + { + doc.Save(fileName); + } + + public void Close() + { + configNode = null; + rootNode = null; + doc = null; + } + + } +} diff --git a/OpenSim/Framework/General/Configuration/ConfigurationMember.cs b/OpenSim/Framework/General/Configuration/ConfigurationMember.cs index e93a576..4546683 100644 --- a/OpenSim/Framework/General/Configuration/ConfigurationMember.cs +++ b/OpenSim/Framework/General/Configuration/ConfigurationMember.cs @@ -1,4 +1,5 @@ using System; +using System.Reflection; using System.Collections; using System.Collections.Generic; using System.Text; @@ -7,6 +8,7 @@ using System.Net; using libsecondlife; using OpenSim.Framework.Console; +using OpenSim.Framework.Configuration.Interfaces; namespace OpenSim.Framework.Configuration { @@ -22,12 +24,14 @@ namespace OpenSim.Framework.Configuration private ConfigurationOptionsLoad loadFunction; private ConfigurationOptionResult resultFunction; + private IGenericConfig configurationPlugin = null; public ConfigurationMember(string configuration_filename, string configuration_description, ConfigurationOptionsLoad load_function, ConfigurationOptionResult result_function) { this.configurationFilename = configuration_filename; this.configurationDescription = configuration_description; this.loadFunction = load_function; this.resultFunction = result_function; + this.configurationPlugin = this.LoadConfigDll("OpenSim.Framework.Configuration.XML.dll"); } public void setConfigurationFilename(string filename) @@ -91,18 +95,19 @@ namespace OpenSim.Framework.Configuration } bool useFile = true; - XmlConfiguration xmlConfig = null; - if (configurationFilename.Trim() != "") + if (configurationPlugin == null) { - xmlConfig = new XmlConfiguration(configurationFilename); - + MainLog.Instance.Error("Configuration Plugin NOT LOADED!"); + return; } - if(xmlConfig != null) + if (configurationFilename.Trim() != "") { - xmlConfig.LoadData(); + configurationPlugin.SetFileName(configurationFilename); + configurationPlugin.LoadData(); useFile = true; } + else { MainLog.Instance.Notice("XML Configuration Filename is not valid; will not save to the file."); @@ -124,7 +129,7 @@ namespace OpenSim.Framework.Configuration { if (!ignoreNextFromConfig) { - attribute = xmlConfig.GetAttribute(configOption.configurationKey); + attribute = configurationPlugin.GetAttribute(configOption.configurationKey); } else { @@ -304,7 +309,7 @@ namespace OpenSim.Framework.Configuration { if (useFile) { - xmlConfig.SetAttribute(configOption.configurationKey, console_result); + configurationPlugin.SetAttribute(configOption.configurationKey, console_result); } @@ -333,9 +338,34 @@ namespace OpenSim.Framework.Configuration if(useFile) { - xmlConfig.Commit(); - xmlConfig.Close(); + configurationPlugin.Commit(); + configurationPlugin.Close(); } - } + } + + private IGenericConfig LoadConfigDll(string dllName) + { + Assembly pluginAssembly = Assembly.LoadFrom(dllName); + IGenericConfig plug = null; + + foreach (Type pluginType in pluginAssembly.GetTypes()) + { + if (pluginType.IsPublic) + { + if (!pluginType.IsAbstract) + { + Type typeInterface = pluginType.GetInterface("IGenericConfig", true); + + if (typeInterface != null) + { + plug = (IGenericConfig)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString())); + } + } + } + } + + pluginAssembly = null; + return plug; + } } } diff --git a/OpenSim/Framework/General/Configuration/Interfaces/IGenericConfig.cs b/OpenSim/Framework/General/Configuration/Interfaces/IGenericConfig.cs index 2c379dd..5a5a20e 100644 --- a/OpenSim/Framework/General/Configuration/Interfaces/IGenericConfig.cs +++ b/OpenSim/Framework/General/Configuration/Interfaces/IGenericConfig.cs @@ -25,10 +25,11 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ -namespace OpenSim.Framework.Interfaces +namespace OpenSim.Framework.Configuration.Interfaces { public interface IGenericConfig { + void SetFileName(string fileName); void LoadData(); string GetAttribute(string attributeName); bool SetAttribute(string attributeName, string attributeValue); diff --git a/OpenSim/Framework/General/Configuration/XmlConfiguration.cs b/OpenSim/Framework/General/Configuration/XmlConfiguration.cs deleted file mode 100644 index e1f3816..0000000 --- a/OpenSim/Framework/General/Configuration/XmlConfiguration.cs +++ /dev/null @@ -1,123 +0,0 @@ -/* -* Copyright (c) Contributors, http://www.openmetaverse.org/ -* See CONTRIBUTORS.TXT for a full list of copyright holders. -* -* Redistribution and use in source and binary forms, with or without -* modification, are permitted provided that the following conditions are met: -* * Redistributions of source code must retain the above copyright -* notice, this list of conditions and the following disclaimer. -* * Redistributions in binary form must reproduce the above copyright -* notice, this list of conditions and the following disclaimer in the -* documentation and/or other materials provided with the distribution. -* * Neither the name of the OpenSim Project nor the -* names of its contributors may be used to endorse or promote products -* derived from this software without specific prior written permission. -* -* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY -* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY -* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -* -*/ -using System; -using System.IO; -using System.Xml; - -using OpenSim.Framework.Interfaces; - -namespace OpenSim.Framework.Configuration -{ - public class XmlConfiguration : IGenericConfig - { - private XmlDocument doc; - private XmlNode rootNode; - private XmlNode configNode; - private string fileName; - private bool createdFile = false; - - public XmlConfiguration(string filename) - { - fileName = filename; - } - - public void LoadData() - { - doc = new XmlDocument(); - - if (File.Exists(fileName)) - { - XmlTextReader reader = new XmlTextReader(fileName); - reader.WhitespaceHandling = WhitespaceHandling.None; - doc.Load(reader); - reader.Close(); - } - else - { - createdFile = true; - rootNode = doc.CreateNode(XmlNodeType.Element, "Root", ""); - doc.AppendChild(rootNode); - configNode = doc.CreateNode(XmlNodeType.Element, "Config", ""); - rootNode.AppendChild(configNode); - } - - - rootNode = doc.FirstChild; - if (rootNode.Name != "Root") - throw new Exception("Error: Invalid .xml File. Missing "); - - configNode = rootNode.FirstChild; - if (configNode.Name != "Config") - throw new Exception("Error: Invalid .xml File. first child should be "); - - if (createdFile) - { - this.Commit(); - } - } - - public string GetAttribute(string attributeName) - { - string result = null; - if (configNode.Attributes[attributeName] != null) - { - result = ((XmlAttribute)configNode.Attributes.GetNamedItem(attributeName)).Value; - } - return result; - } - - public bool SetAttribute(string attributeName, string attributeValue) - { - if (configNode.Attributes[attributeName] != null) - { - ((XmlAttribute)configNode.Attributes.GetNamedItem(attributeName)).Value = attributeValue; - } - else - { - XmlAttribute attri; - attri = doc.CreateAttribute(attributeName); - attri.Value = attributeValue; - configNode.Attributes.Append(attri); - } - return true; - } - - public void Commit() - { - doc.Save(fileName); - } - - public void Close() - { - configNode = null; - rootNode = null; - doc = null; - } - - } -} diff --git a/OpenSim/Grid/AssetServer/Main.cs b/OpenSim/Grid/AssetServer/Main.cs index f29a540..5a8368c 100644 --- a/OpenSim/Grid/AssetServer/Main.cs +++ b/OpenSim/Grid/AssetServer/Main.cs @@ -291,34 +291,6 @@ namespace OpenSim.Grid.AssetServer //info.loaded=true; } - /*private GridConfig LoadConfigDll(string dllName) - { - Assembly pluginAssembly = Assembly.LoadFrom(dllName); - GridConfig config = null; - - foreach (Type pluginType in pluginAssembly.GetTypes()) - { - if (pluginType.IsPublic) - { - if (!pluginType.IsAbstract) - { - Type typeInterface = pluginType.GetInterface("IGridConfig", true); - - if (typeInterface != null) - { - IGridConfig plug = (IGridConfig)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString())); - config = plug.GetConfigObject(); - break; - } - - typeInterface = null; - } - } - } - pluginAssembly = null; - return config; - }*/ - public void CreateAsset(LLUUID assetId, byte[] assetData) { AssetBase asset = new AssetBase(); diff --git a/OpenSim/Grid/GridServer/Main.cs b/OpenSim/Grid/GridServer/Main.cs index 94ecbfc..c72948d 100644 --- a/OpenSim/Grid/GridServer/Main.cs +++ b/OpenSim/Grid/GridServer/Main.cs @@ -197,7 +197,7 @@ namespace OpenSim.Grid.GridServer { } - private void ConfigDB(IGenericConfig configData) + /*private void ConfigDB(IGenericConfig configData) { try { @@ -218,6 +218,6 @@ namespace OpenSim.Grid.GridServer { } - } + }*/ } } diff --git a/OpenSim/Grid/UserServer/Main.cs b/OpenSim/Grid/UserServer/Main.cs index da53e11..99401fc 100644 --- a/OpenSim/Grid/UserServer/Main.cs +++ b/OpenSim/Grid/UserServer/Main.cs @@ -147,7 +147,7 @@ namespace OpenSim.Grid.UserServer } } - private void ConfigDB(IGenericConfig configData) + /*private void ConfigDB(IGenericConfig configData) { try { @@ -168,7 +168,7 @@ namespace OpenSim.Grid.UserServer { } - } + }*/ public void Show(string ShowWhat) { diff --git a/OpenSim/Region/Application/OpenSimMain.cs b/OpenSim/Region/Application/OpenSimMain.cs index 8a1e0f1..3c11b90 100644 --- a/OpenSim/Region/Application/OpenSimMain.cs +++ b/OpenSim/Region/Application/OpenSimMain.cs @@ -197,7 +197,7 @@ namespace OpenSim #endregion - private void SetupFromConfigFile(IGenericConfig configData) + /*private void SetupFromConfigFile(IGenericConfig configData) { // Log filename string attri = ""; @@ -295,7 +295,7 @@ namespace OpenSim configData.Commit(); - } + }*/ /// /// Performs any last-minute sanity checking and shuts down the region server -- cgit v1.1