diff --git a/OpenSim/Framework/Communications/IInventoryServices.cs b/OpenSim/Framework/Communications/IInventoryServices.cs
index 15a2f02ab5..ddb19baae9 100644
--- a/OpenSim/Framework/Communications/IInventoryServices.cs
+++ b/OpenSim/Framework/Communications/IInventoryServices.cs
@@ -36,19 +36,54 @@ namespace OpenSim.Framework.Communications
public delegate void InventoryItemInfo(LLUUID userID, InventoryItemBase itemInfo);
+ ///
+ /// Defines all the operations one can perform on a user's inventory.
+ ///
public interface IInventoryServices
{
void RequestInventoryForUser(LLUUID userID, InventoryFolderInfo folderCallBack, InventoryItemInfo itemCallBack);
+
+ ///
+ /// Add a new folder to the given user's inventory
+ ///
+ ///
+ ///
void AddNewInventoryFolder(LLUUID userID, InventoryFolderBase folder);
+
void MoveInventoryFolder(LLUUID userID, InventoryFolderBase folder);
+
+ ///
+ /// Add a new item to the given user's inventory
+ ///
+ ///
+ ///
void AddNewInventoryItem(LLUUID userID, InventoryItemBase item);
+
+ ///
+ /// Delete an item from the given user's inventory
+ ///
+ ///
+ ///
void DeleteInventoryItem(LLUUID userID, InventoryItemBase item);
+
+ ///
+ /// Create a new inventory for the given user
+ ///
+ ///
void CreateNewUserInventory(LLUUID user);
+
bool HasInventoryForUser(LLUUID userID);
+
+ ///
+ /// Retrieve the root inventory folder for the given user.
+ ///
+ ///
+ /// null if no root folder was found
InventoryFolderBase RequestRootFolder(LLUUID userID);
///
/// Returns the root folder plus any folders in root (so down one level in the Inventory folders tree)
+ /// for the given user.
///
///
///
diff --git a/OpenSim/Framework/Communications/InventoryServiceBase.cs b/OpenSim/Framework/Communications/InventoryServiceBase.cs
index 897aa9a043..fd9ab1b849 100644
--- a/OpenSim/Framework/Communications/InventoryServiceBase.cs
+++ b/OpenSim/Framework/Communications/InventoryServiceBase.cs
@@ -36,16 +36,13 @@ namespace OpenSim.Framework.Communications
{
public abstract class InventoryServiceBase : IInventoryServices
{
- private static readonly log4net.ILog m_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
+ private static readonly log4net.ILog m_log
+ = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
protected Dictionary m_plugins = new Dictionary();
- //protected IAssetServer m_assetServer;
-
- public InventoryServiceBase()
- {
- //m_assetServer = assetServer;
- }
+ #region Plugin methods
+
///
/// Adds a new user server plugin - plugins will be requested in the order they were loaded.
///
@@ -75,18 +72,19 @@ namespace OpenSim.Framework.Communications
}
}
}
+
+ #endregion
+
+ #region IInventoryServices methods
+ // See IInventoryServices
public List RequestFirstLevelFolders(Guid rawUserID)
{
LLUUID userID = new LLUUID(rawUserID);
return RequestFirstLevelFolders(userID);
}
- ///
- /// Returns the root folder plus any folders in root (so down one level in the Inventory folders tree)
- ///
- ///
- ///
+ // See IInventoryServices
public List RequestFirstLevelFolders(LLUUID userID)
{
List inventoryList = new List();
@@ -112,11 +110,7 @@ namespace OpenSim.Framework.Communications
return inventoryList;
}
- ///
- /// Get the root folder for a user
- ///
- ///
- /// null if no root folder was found
+ // See IInventoryServices
public InventoryFolderBase RequestUsersRoot(LLUUID userID)
{
foreach (KeyValuePair plugin in m_plugins)
@@ -126,9 +120,7 @@ namespace OpenSim.Framework.Communications
return null;
}
- ///
- ///
- ///
+ // See IInventoryServices
public void MoveInventoryFolder(LLUUID userID, InventoryFolderBase folder)
{
foreach (KeyValuePair plugin in m_plugins)
@@ -136,12 +128,49 @@ namespace OpenSim.Framework.Communications
plugin.Value.moveInventoryFolder(folder);
}
}
+
+ public virtual bool HasInventoryForUser(LLUUID userID)
+ {
+ return false;
+ }
+
+ // See IInventoryServices
+ public InventoryFolderBase RequestRootFolder(LLUUID userID)
+ {
+ return RequestUsersRoot(userID);
+ }
+
+ // See IInventoryServices
+ public void CreateNewUserInventory(LLUUID user)
+ {
+ InventoryFolderBase existingRootFolder = RequestUsersRoot(user);
+
+ if (null != existingRootFolder)
+ {
+ m_log.Error(
+ String.Format("[AGENTINVENTORY]: " +
+ "Did not create a new inventory for user {0} since they already have "
+ + "a root inventory folder with id {1}", user, existingRootFolder));
+ }
+ else
+ {
+ UsersInventory inven = new UsersInventory();
+ inven.CreateNewInventorySet(user);
+ AddNewInventorySet(inven);
+ }
+ }
+
+ public abstract void RequestInventoryForUser(LLUUID userID, InventoryFolderInfo folderCallBack,
+ InventoryItemInfo itemCallBack);
+ public abstract void AddNewInventoryFolder(LLUUID userID, InventoryFolderBase folder);
+ public abstract void MoveExistingInventoryFolder(InventoryFolderBase folder);
+ public abstract void AddNewInventoryItem(LLUUID userID, InventoryItemBase item);
+ public abstract void DeleteInventoryItem(LLUUID userID, InventoryItemBase item);
+
+ #endregion
+
+ #region Methods used by GridInventoryService
- ///
- ///
- ///
- ///
- ///
public List RequestSubFolders(LLUUID parentFolderID)
{
List inventoryList = new List();
@@ -162,8 +191,10 @@ namespace OpenSim.Framework.Communications
}
return itemsList;
}
+
+ #endregion
- public void AddFolder(InventoryFolderBase folder)
+ protected void AddFolder(InventoryFolderBase folder)
{
foreach (KeyValuePair plugin in m_plugins)
{
@@ -171,7 +202,7 @@ namespace OpenSim.Framework.Communications
}
}
- public void MoveFolder(InventoryFolderBase folder)
+ protected void MoveFolder(InventoryFolderBase folder)
{
foreach (KeyValuePair plugin in m_plugins)
{
@@ -179,7 +210,7 @@ namespace OpenSim.Framework.Communications
}
}
- public void AddItem(InventoryItemBase item)
+ protected void AddItem(InventoryItemBase item)
{
foreach (KeyValuePair plugin in m_plugins)
{
@@ -187,68 +218,27 @@ namespace OpenSim.Framework.Communications
}
}
- public void DeleteItem(InventoryItemBase item)
+ protected void DeleteItem(InventoryItemBase item)
{
foreach (KeyValuePair plugin in m_plugins)
{
plugin.Value.deleteInventoryItem(item.inventoryID);
}
}
-
- public virtual bool HasInventoryForUser(LLUUID userID)
- {
- return false;
- }
-
- public InventoryFolderBase RequestRootFolder(LLUUID userID)
- {
- return RequestUsersRoot(userID);
- }
-
- ///
- ///
- ///
- ///
- public void AddNewInventorySet(UsersInventory inventory)
+
+ private void AddNewInventorySet(UsersInventory inventory)
{
foreach (InventoryFolderBase folder in inventory.Folders.Values)
{
AddFolder(folder);
}
- }
+ }
- ///
- /// Create a new set of inventory folders for the given user.
- ///
- ///
- public void CreateNewUserInventory(LLUUID user)
- {
- InventoryFolderBase existingRootFolder = RequestUsersRoot(user);
-
- if (null != existingRootFolder)
- {
- m_log.Error(
- String.Format("[AGENTINVENTORY]: " +
- "Did not create a new inventory for user {0} since they already have "
- + "a root inventory folder with id {1}", user, existingRootFolder));
- }
- else
- {
- UsersInventory inven = new UsersInventory();
- inven.CreateNewInventorySet(user);
- AddNewInventorySet(inven);
- }
- }
-
- public class UsersInventory
+ private class UsersInventory
{
public Dictionary Folders = new Dictionary();
public Dictionary Items = new Dictionary();
- public UsersInventory()
- {
- }
-
public virtual void CreateNewInventorySet(LLUUID user)
{
InventoryFolderBase folder = new InventoryFolderBase();
@@ -390,13 +380,5 @@ namespace OpenSim.Framework.Communications
Folders.Add(folder.folderID, folder);
}
}
-
- public abstract void RequestInventoryForUser(LLUUID userID, InventoryFolderInfo folderCallBack,
- InventoryItemInfo itemCallBack);
-
- public abstract void AddNewInventoryFolder(LLUUID userID, InventoryFolderBase folder);
- public abstract void MoveExistingInventoryFolder(InventoryFolderBase folder);
- public abstract void AddNewInventoryItem(LLUUID userID, InventoryItemBase item);
- public abstract void DeleteInventoryItem(LLUUID userID, InventoryItemBase item);
}
}
\ No newline at end of file
diff --git a/OpenSim/Region/Communications/Local/LocalInventoryService.cs b/OpenSim/Region/Communications/Local/LocalInventoryService.cs
index da4e473f6c..35eb89ae5b 100644
--- a/OpenSim/Region/Communications/Local/LocalInventoryService.cs
+++ b/OpenSim/Region/Communications/Local/LocalInventoryService.cs
@@ -34,6 +34,10 @@ using OpenSim.Framework.Communications.Cache;
namespace OpenSim.Region.Communications.Local
{
+ ///
+ /// An implementation of user inventory where the inventory is held locally (e.g. when OpenSim is
+ /// operating in standalone mode.
+ ///
public class LocalInventoryService : InventoryServiceBase
{
public override void RequestInventoryForUser(LLUUID userID, InventoryFolderInfo folderCallBack,