From 57c4b699169017e9552309c53f520b318cc8a1c0 Mon Sep 17 00:00:00 2001 From: diva Date: Thu, 11 Jun 2009 13:46:44 +0000 Subject: [PATCH] Changed the inventory service so that is uses exactly one DB plugin, not many. The composition of plugins can be done at the service and connector levels. This fixes the unit tests that were failing yesterday, but I'm not committing those yet, because I'm seeing 2 of those tests having pass and fail outcomes randomly which suggests that the tests are buggy. --- .../InventoryService/InventoryService.cs | 102 +++++------------- .../InventoryService/InventoryServiceBase.cs | 41 +------ 2 files changed, 28 insertions(+), 115 deletions(-) diff --git a/OpenSim/Services/InventoryService/InventoryService.cs b/OpenSim/Services/InventoryService/InventoryService.cs index 9dbd591cb5..1190b38118 100644 --- a/OpenSim/Services/InventoryService/InventoryService.cs +++ b/OpenSim/Services/InventoryService/InventoryService.cs @@ -72,16 +72,10 @@ namespace OpenSim.Services.InventoryService userFolders.Add(rootFolder); - foreach (IInventoryDataPlugin plugin in m_plugins) - { - IList folders = plugin.getFolderHierarchy(rootFolder.ID); - userFolders.AddRange(folders); - } + IList folders = m_Database.getFolderHierarchy(rootFolder.ID); + userFolders.AddRange(folders); -// foreach (InventoryFolderBase folder in userFolders) -// { -// m_log.DebugFormat("[INVENTORY SERVICE]: Got folder {0} {1}", folder.name, folder.folderID); -// } +// m_log.DebugFormat("[INVENTORY SERVICE]: Got folder {0} {1}", folder.name, folder.folderID); return userFolders; } @@ -94,15 +88,12 @@ namespace OpenSim.Services.InventoryService // See IInventoryServices public virtual InventoryFolderBase RequestRootFolder(UUID userID) { - // Retrieve the first root folder we get from the list of plugins. - foreach (IInventoryDataPlugin plugin in m_plugins) - { - InventoryFolderBase rootFolder = plugin.getUserRootFolder(userID); - if (rootFolder != null) - return rootFolder; - } + // Retrieve the first root folder we get from the DB. + InventoryFolderBase rootFolder = m_Database.getUserRootFolder(userID); + if (rootFolder != null) + return rootFolder; - // Return nothing if no plugin was able to supply a root folder + // Return nothing if the plugin was unable to supply a root folder return null; } @@ -246,10 +237,7 @@ namespace OpenSim.Services.InventoryService public List GetActiveGestures(UUID userId) { List activeGestures = new List(); - foreach (IInventoryDataPlugin plugin in m_plugins) - { - activeGestures.AddRange(plugin.fetchActiveGestures(userId)); - } + activeGestures.AddRange(m_Database.fetchActiveGestures(userId)); return activeGestures; } @@ -262,10 +250,7 @@ namespace OpenSim.Services.InventoryService { List inventoryList = new List(); - foreach (IInventoryDataPlugin plugin in m_plugins) - { - inventoryList.AddRange(plugin.getInventoryFolders(parentFolderID)); - } + inventoryList.AddRange(m_Database.getInventoryFolders(parentFolderID)); return inventoryList; } @@ -274,10 +259,7 @@ namespace OpenSim.Services.InventoryService { List itemsList = new List(); - foreach (IInventoryDataPlugin plugin in m_plugins) - { - itemsList.AddRange(plugin.getInventoryInFolder(folderID)); - } + itemsList.AddRange(m_Database.getInventoryInFolder(folderID)); return itemsList; } @@ -290,10 +272,7 @@ namespace OpenSim.Services.InventoryService m_log.DebugFormat( "[INVENTORY SERVICE]: Adding folder {0} {1} to folder {2}", folder.Name, folder.ID, folder.ParentID); - foreach (IInventoryDataPlugin plugin in m_plugins) - { - plugin.addInventoryFolder(folder); - } + m_Database.addInventoryFolder(folder); // FIXME: Should return false on failure return true; @@ -305,10 +284,7 @@ namespace OpenSim.Services.InventoryService m_log.DebugFormat( "[INVENTORY SERVICE]: Updating folder {0} {1} to folder {2}", folder.Name, folder.ID, folder.ParentID); - foreach (IInventoryDataPlugin plugin in m_plugins) - { - plugin.updateInventoryFolder(folder); - } + m_Database.updateInventoryFolder(folder); // FIXME: Should return false on failure return true; @@ -320,10 +296,7 @@ namespace OpenSim.Services.InventoryService m_log.DebugFormat( "[INVENTORY SERVICE]: Moving folder {0} {1} to folder {2}", folder.Name, folder.ID, folder.ParentID); - foreach (IInventoryDataPlugin plugin in m_plugins) - { - plugin.moveInventoryFolder(folder); - } + m_Database.moveInventoryFolder(folder); // FIXME: Should return false on failure return true; @@ -335,10 +308,7 @@ namespace OpenSim.Services.InventoryService m_log.DebugFormat( "[INVENTORY SERVICE]: Adding item {0} {1} to folder {2}", item.Name, item.ID, item.Folder); - foreach (IInventoryDataPlugin plugin in m_plugins) - { - plugin.addInventoryItem(item); - } + m_Database.addInventoryItem(item); // FIXME: Should return false on failure return true; @@ -350,10 +320,7 @@ namespace OpenSim.Services.InventoryService m_log.InfoFormat( "[INVENTORY SERVICE]: Updating item {0} {1} in folder {2}", item.Name, item.ID, item.Folder); - foreach (IInventoryDataPlugin plugin in m_plugins) - { - plugin.updateInventoryItem(item); - } + m_Database.updateInventoryItem(item); // FIXME: Should return false on failure return true; @@ -365,10 +332,7 @@ namespace OpenSim.Services.InventoryService m_log.InfoFormat( "[INVENTORY SERVICE]: Deleting item {0} {1} from folder {2}", item.Name, item.ID, item.Folder); - foreach (IInventoryDataPlugin plugin in m_plugins) - { - plugin.deleteInventoryItem(item.ID); - } + m_Database.deleteInventoryItem(item.ID); // FIXME: Should return false on failure return true; @@ -376,24 +340,18 @@ namespace OpenSim.Services.InventoryService public virtual InventoryItemBase QueryItem(InventoryItemBase item) { - foreach (IInventoryDataPlugin plugin in m_plugins) - { - InventoryItemBase result = plugin.queryInventoryItem(item.ID); - if (result != null) - return result; - } + InventoryItemBase result = m_Database.queryInventoryItem(item.ID); + if (result != null) + return result; return null; } public virtual InventoryFolderBase QueryFolder(InventoryFolderBase item) { - foreach (IInventoryDataPlugin plugin in m_plugins) - { - InventoryFolderBase result = plugin.queryInventoryFolder(item.ID); - if (result != null) - return result; - } + InventoryFolderBase result = m_Database.queryInventoryFolder(item.ID); + if (result != null) + return result; return null; } @@ -416,10 +374,7 @@ namespace OpenSim.Services.InventoryService { // m_log.DebugFormat("[INVENTORY SERVICE]: Deleting folder {0} {1}", subFolder.Name, subFolder.ID); - foreach (IInventoryDataPlugin plugin in m_plugins) - { - plugin.deleteInventoryFolder(subFolder.ID); - } + m_Database.deleteInventoryFolder(subFolder.ID); } List items = GetFolderItems(folder.ID); @@ -443,12 +398,9 @@ namespace OpenSim.Services.InventoryService public InventoryItemBase GetInventoryItem(UUID itemID) { - foreach (IInventoryDataPlugin plugin in m_plugins) - { - InventoryItemBase item = plugin.getInventoryItem(itemID); - if (item != null) - return item; - } + InventoryItemBase item = m_Database.getInventoryItem(itemID); + if (item != null) + return item; return null; } diff --git a/OpenSim/Services/InventoryService/InventoryServiceBase.cs b/OpenSim/Services/InventoryService/InventoryServiceBase.cs index 4526c34e2e..456e4557db 100644 --- a/OpenSim/Services/InventoryService/InventoryServiceBase.cs +++ b/OpenSim/Services/InventoryService/InventoryServiceBase.cs @@ -40,8 +40,6 @@ namespace OpenSim.Services.InventoryService { protected IInventoryDataPlugin m_Database = null; - protected List m_plugins = new List(); - public InventoryServiceBase(IConfigSource config) : base(config) { string dllName = String.Empty; @@ -56,8 +54,6 @@ namespace OpenSim.Services.InventoryService dllName = dbConfig.GetString("StorageProvider", String.Empty); connString = dbConfig.GetString("ConnectionString", String.Empty); } - else - Console.WriteLine("------ dbConfig = null!"); // // Try reading the more specific [InventoryService] section, if it exists @@ -79,43 +75,8 @@ namespace OpenSim.Services.InventoryService if (m_Database == null) throw new Exception("Could not find a storage interface in the given module"); - //m_Database.Initialise(connString); - List plugins - = DataPluginFactory.LoadDataPlugins(dllName, connString); - - foreach (IInventoryDataPlugin plugin in plugins) - AddPlugin(plugin); - + m_Database.Initialise(connString); } - #region Plugin methods - - /// - /// Add a new inventory data plugin - plugins will be requested in the order they were added. - /// - /// The plugin that will provide data - public void AddPlugin(IInventoryDataPlugin plugin) - { - m_plugins.Add(plugin); - } - - /// - /// Adds a list of inventory data plugins, as described by `provider' - /// and `connect', to `m_plugins'. - /// - /// - /// The filename of the inventory server plugin DLL. - /// - /// - /// The connection string for the storage backend. - /// - public void AddPlugins(string provider, string connect) - { - m_plugins.AddRange(DataPluginFactory.LoadDataPlugins(provider, connect)); - } - - #endregion - - } }