* Fixes mantis http://opensimulator.org/mantis/view.php?id=4044. Turns out folders were never being removed from trash when they were singled out for purging in trash. They were being removed when Trash was purged as a whole. That behavior is now fixed for the new InventoryService set.

* Removed left-overs from AssetInventoryServer.
This commit is contained in:
Diva Canto
2009-08-22 10:24:26 -07:00
parent 8ef758d826
commit b03eeeb9f6
19 changed files with 150 additions and 89 deletions

View File

@@ -201,6 +201,19 @@ namespace OpenSim.Services.Connectors.Inventory
return false;
}
public bool DeleteFolders(string id, List<UUID> folders, UUID sessionID)
{
string url = string.Empty;
string userID = string.Empty;
if (StringToUrlAndUserID(id, out url, out userID))
{
ISessionAuthInventoryService connector = GetConnector(url);
return connector.DeleteFolders(userID, folders, sessionID);
}
return false;
}
public bool PurgeFolder(string id, InventoryFolderBase folder, UUID sessionID)
{
string url = string.Empty;

View File

@@ -88,6 +88,11 @@ namespace OpenSim.Services.Connectors
/// <returns>true if the folder was successfully moved</returns>
bool MoveFolder(string userID, InventoryFolderBase folder, UUID session_id);
/// <summary>
/// Delete a list of inventory folders (from trash)
/// </summary>
bool DeleteFolders(string userID, List<UUID> folders, UUID session_id);
/// <summary>
/// Purge an inventory folder of all its items and subfolders.
/// </summary>

View File

@@ -308,6 +308,25 @@ namespace OpenSim.Services.Connectors
return false;
}
public bool DeleteFolders(string userID, List<UUID> folderIDs, UUID sessionID)
{
try
{
List<Guid> guids = new List<Guid>();
foreach (UUID u in folderIDs)
guids.Add(u.Guid);
return SynchronousRestSessionObjectPoster<List<Guid>, bool>.BeginPostObject(
"POST", m_ServerURI + "/DeleteFolders/", guids, sessionID.ToString(), userID);
}
catch (Exception e)
{
m_log.ErrorFormat("[INVENTORY CONNECTOR]: Delete inventory folders operation failed, {0} {1}",
e.Source, e.Message);
}
return false;
}
public bool MoveFolder(string userID, InventoryFolderBase folder, UUID sessionID)
{
try
@@ -481,12 +500,12 @@ namespace OpenSim.Services.Connectors
return null;
}
public InventoryFolderBase QueryFolder(string userID, InventoryFolderBase item, UUID sessionID)
public InventoryFolderBase QueryFolder(string userID, InventoryFolderBase folder, UUID sessionID)
{
try
{
return SynchronousRestSessionObjectPoster<InventoryFolderBase, InventoryFolderBase>.BeginPostObject(
"POST", m_ServerURI + "/QueryFolder/", item, sessionID.ToString(), item.Owner.ToString());
"POST", m_ServerURI + "/QueryFolder/", folder, sessionID.ToString(), userID);
}
catch (Exception e)
{

View File

@@ -136,6 +136,12 @@ namespace OpenSim.Services.Connectors
return false;
}
public bool DeleteFolders(UUID ownerID, List<UUID> folderIDs)
{
return false;
}
public bool PurgeFolder(InventoryFolderBase folder)
{
return false;

View File

@@ -121,6 +121,14 @@ namespace OpenSim.Services.Interfaces
/// <returns>true if the folder was successfully moved</returns>
bool MoveFolder(InventoryFolderBase folder);
/// <summary>
/// Delete an item from the user's inventory
/// </summary>
/// <param name="item"></param>
/// <returns>true if the item was successfully deleted</returns>
//bool DeleteItem(InventoryItemBase item);
bool DeleteFolders(UUID userID, List<UUID> folderIDs);
/// <summary>
/// Purge an inventory folder of all its items and subfolders.
/// </summary>

View File

@@ -425,15 +425,27 @@ namespace OpenSim.Services.InventoryService
return null;
}
public virtual InventoryFolderBase GetFolder(InventoryFolderBase item)
public virtual InventoryFolderBase GetFolder(InventoryFolderBase folder)
{
InventoryFolderBase result = m_Database.getInventoryFolder(item.ID);
m_log.DebugFormat("[INVENTORY SERVICE]: GetFolder {0}", folder.ID);
InventoryFolderBase result = m_Database.getInventoryFolder(folder.ID);
if (result != null)
return result;
return null;
}
public virtual bool DeleteFolders(UUID ownerID, List<UUID> folderIDs)
{
foreach (UUID id in folderIDs)
{
InventoryFolderBase folder = new InventoryFolderBase(id, ownerID);
PurgeFolder(folder);
m_Database.deleteInventoryFolder(id);
}
return true;
}
/// <summary>
/// Purge a folder of all items items and subfolders.
///