diff --git a/OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs b/OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs index 61ec4839dd..1e3dbb6d00 100644 --- a/OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs +++ b/OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs @@ -523,14 +523,7 @@ namespace OpenSim.Framework.Communications.Cache purgedBaseFolder.Type = purgedFolder.Type; purgedBaseFolder.Version = purgedFolder.Version; - m_commsManager.InventoryService.PurgeInventoryFolder(remoteClient.AgentId, purgedBaseFolder); - - // XXX Remains temporarily so that we still delete items in the grid case. - List items = purgedFolder.RequestListOfItems(); - foreach (InventoryItemBase item in items) - { - userProfile.DeleteItem(remoteClient.AgentId, item); - } + m_commsManager.InventoryService.PurgeInventoryFolder(remoteClient.AgentId, purgedBaseFolder); purgedFolder.Purge(); } diff --git a/OpenSim/Framework/Communications/InventoryServiceBase.cs b/OpenSim/Framework/Communications/InventoryServiceBase.cs index 5cbfcf935e..0528b9149a 100644 --- a/OpenSim/Framework/Communications/InventoryServiceBase.cs +++ b/OpenSim/Framework/Communications/InventoryServiceBase.cs @@ -259,13 +259,12 @@ namespace OpenSim.Framework.Communications } } - // XXX Temporarily don't delete the items since UserProfileCacheService is still doing this -// List items = RequestFolderItems(folder.ID); -// -// foreach (InventoryItemBase item : items) -// { -// DeleteItem(item); -// } + List items = RequestFolderItems(folder.ID); + + foreach (InventoryItemBase item in items) + { + DeleteItem(item); + } } private void AddNewInventorySet(UsersInventory inventory) diff --git a/OpenSim/Grid/InventoryServer/GridInventoryService.cs b/OpenSim/Grid/InventoryServer/GridInventoryService.cs index 016ecffef1..efa6a6eb00 100644 --- a/OpenSim/Grid/InventoryServer/GridInventoryService.cs +++ b/OpenSim/Grid/InventoryServer/GridInventoryService.cs @@ -198,6 +198,11 @@ namespace OpenSim.Grid.InventoryServer { MoveFolder(folder); } + + public override void PurgeInventoryFolder(LLUUID userID, InventoryFolderBase folder) + { + PurgeFolder(folder); + } public override void AddNewInventoryItem(LLUUID userID, InventoryItemBase item) { @@ -207,7 +212,8 @@ namespace OpenSim.Grid.InventoryServer public bool AddInventoryFolder(InventoryFolderBase folder) { // Right now, this actions act more like an update/insert combination than a simple create. - m_log.InfoFormat("[GRID AGENT INVENTORY]: Creating folder {0} {1} in folder {2}", folder.Name, folder.ID, folder.ParentID); + m_log.InfoFormat( + "[GRID AGENT INVENTORY]: Creating folder {0} {1} in folder {2}", folder.Name, folder.ID, folder.ParentID); AddNewInventoryFolder(folder.Owner, folder); return true; @@ -215,20 +221,20 @@ namespace OpenSim.Grid.InventoryServer public bool MoveInventoryFolder(InventoryFolderBase folder) { - m_log.InfoFormat("[GRID AGENT INVENTORY]: Moving folder {0} {1} to folder {2}", folder.Name, folder.ID, folder.ParentID); + m_log.InfoFormat( + "[GRID AGENT INVENTORY]: Moving folder {0} {1} to folder {2}", folder.Name, folder.ID, folder.ParentID); MoveExistingInventoryFolder(folder); return true; } - /// - /// - /// - /// - /// - public override void PurgeInventoryFolder(LLUUID userID, InventoryFolderBase folder) + public bool PurgeInventoryFolder(InventoryFolderBase folder) { - // XXX No implementation yet (temporarily)! + m_log.InfoFormat( + "[GRID AGENT INVENTORY]: Purging folder {0} {1} of its contents", folder.Name, folder.ID); + + PurgeInventoryFolder(folder.Owner, folder); + return true; } public bool AddInventoryItem(InventoryItemBase item) diff --git a/OpenSim/Grid/InventoryServer/Main.cs b/OpenSim/Grid/InventoryServer/Main.cs index 85d9ba5961..870997b6a4 100644 --- a/OpenSim/Grid/InventoryServer/Main.cs +++ b/OpenSim/Grid/InventoryServer/Main.cs @@ -100,6 +100,10 @@ namespace OpenSim.Grid.InventoryServer m_httpServer.AddStreamHandler( new RestDeserialisehandler( "POST", "/MoveFolder/", m_inventoryService.MoveInventoryFolder)); + + m_httpServer.AddStreamHandler( + new RestDeserialisehandler( + "POST", "/PurgeFolder/", m_inventoryService.PurgeInventoryFolder)); m_httpServer.AddStreamHandler( new RestDeserialisehandler( diff --git a/OpenSim/Region/Communications/OGS1/OGS1InventoryService.cs b/OpenSim/Region/Communications/OGS1/OGS1InventoryService.cs index 8c27cb1494..65f3ee3292 100644 --- a/OpenSim/Region/Communications/OGS1/OGS1InventoryService.cs +++ b/OpenSim/Region/Communications/OGS1/OGS1InventoryService.cs @@ -53,7 +53,11 @@ namespace OpenSim.Region.Communications.OGS1 #region IInventoryServices Members - // See IInventoryServices + /// + /// + /// + /// + /// public void RequestInventoryForUser(LLUUID userID, InventoryReceiptCallback callback) { if (!m_RequestingInventory.ContainsKey(userID)) @@ -148,6 +152,11 @@ namespace OpenSim.Region.Communications.OGS1 } } + /// + /// + /// + /// + /// public void AddNewInventoryFolder(LLUUID userID, InventoryFolderBase folder) { try @@ -162,6 +171,11 @@ namespace OpenSim.Region.Communications.OGS1 } } + /// + /// + /// + /// + /// public void MoveInventoryFolder(LLUUID userID, InventoryFolderBase folder) { try @@ -181,11 +195,26 @@ namespace OpenSim.Region.Communications.OGS1 /// /// /// + /// public void PurgeInventoryFolder(LLUUID userID, InventoryFolderBase folder) { - // XXX No implementation yet (temporarily)! + try + { + SynchronousRestObjectPoster.BeginPostObject( + "POST", _inventoryServerUrl + "/PurgeFolder/", folder); + } + catch (WebException e) + { + m_log.ErrorFormat("[OGS1 INVENTORY SERVICE]: Move inventory folder operation failed, {0} {1}", + e.Source, e.Message); + } } + /// + /// + /// + /// + /// public void AddNewInventoryItem(LLUUID userID, InventoryItemBase item) { try @@ -200,6 +229,11 @@ namespace OpenSim.Region.Communications.OGS1 } } + /// + /// + /// + /// + /// public void DeleteInventoryItem(LLUUID userID, InventoryItemBase item) { try