From 52d56288060caca4f92fee9549090390d7053549 Mon Sep 17 00:00:00 2001 From: Justin Clarke Casey Date: Tue, 28 Apr 2009 17:47:09 +0000 Subject: * Add preliminary code for resolving iar profile names * Not yet active --- .../Archiver/InventoryArchiveReadRequest.cs | 13 ++++++----- .../Archiver/Tests/InventoryArchiverTests.cs | 26 ++++++++++++---------- 2 files changed, 22 insertions(+), 17 deletions(-) (limited to 'OpenSim/Region/CoreModules') diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs index 2ecb7d4..75e39d1 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs @@ -57,7 +57,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver /// private Stream m_loadStream; - CommunicationsManager commsManager; + protected CommunicationsManager m_commsManager; public InventoryArchiveReadRequest( CachedUserInfo userInfo, string invPath, string loadPath, CommunicationsManager commsManager) @@ -75,7 +75,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver m_userInfo = userInfo; m_invPath = invPath; m_loadStream = loadStream; - this.commsManager = commsManager; + m_commsManager = commsManager; } /// @@ -101,7 +101,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver // // FIXME: FetchInventory should probably be assumed to by async anyway, since even standalones might // use a remote inventory service, though this is vanishingly rare at the moment. - if (null == commsManager.UserAdminService) + if (null == m_commsManager.UserAdminService) { m_log.ErrorFormat( "[INVENTORY ARCHIVER]: Have not yet received inventory info for user {0} {1}", @@ -156,7 +156,10 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver // Don't use the item ID that's in the file item.ID = UUID.Random(); - item.CreatorId = m_userInfo.UserProfile.ID.ToString(); + string ospResolvedId = OspResolver.Resolve(item.CreatorId, m_commsManager); + if (null != ospResolvedId) + item.CreatorId = ospResolvedId; + item.Owner = m_userInfo.UserProfile.ID; // Reset folder ID to the one in which we want to load it @@ -352,7 +355,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver asset.Type = assetType; asset.Data = data; - commsManager.AssetCache.AddAsset(asset); + m_commsManager.AssetCache.AddAsset(asset); return true; } diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs index 302d214..5ae1cbd 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs @@ -204,9 +204,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests string userFirstName = "Mr"; string userLastName = "Tiddles"; - string folderName = "a"; - string archiveFolderName - = string.Format("{0}{1}{2}", folderName, ArchiveConstants.INVENTORY_NODE_NAME_COMPONENT_SEPARATOR, UUID.Random()); + UUID userUuid = UUID.Parse("00000000-0000-0000-0000-000000000555"); string itemName = "b.lsl"; string archiveItemName = string.Format("{0}{1}{2}", itemName, "_", UUID.Random()); @@ -218,29 +216,33 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests item1.Name = itemName; item1.AssetID = UUID.Random(); item1.GroupID = UUID.Random(); + item1.CreatorId = userUuid.ToString(); + //item1.CreatorId = "00000000-0000-0000-0000-000000000444"; + item1.Owner = UUID.Parse(item1.CreatorId); string item1FileName - = string.Format("{0}{1}/{2}", ArchiveConstants.INVENTORY_PATH, archiveFolderName, archiveItemName); + = string.Format("{0}{1}", ArchiveConstants.INVENTORY_PATH, archiveItemName); tar.WriteFile(item1FileName, UserInventoryItemSerializer.Serialize(item1)); tar.Close(); - MemoryStream archiveReadStream = new MemoryStream(archiveWriteStream.ToArray()); - + MemoryStream archiveReadStream = new MemoryStream(archiveWriteStream.ToArray()); SerialiserModule serialiserModule = new SerialiserModule(); InventoryArchiverModule archiverModule = new InventoryArchiverModule(); // Annoyingly, we have to set up a scene even though inventory loading has nothing to do with a scene Scene scene = SceneSetupHelpers.SetupScene(); SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule); - scene.CommsManager.UserAdminService.AddUser(userFirstName, userLastName, "meowfood", String.Empty, 1000, 1000); + scene.CommsManager.UserAdminService.AddUser( + userFirstName, userLastName, "meowfood", String.Empty, 1000, 1000, userUuid); archiverModule.DearchiveInventory(userFirstName, userLastName, "/", archiveReadStream); - CachedUserInfo userInfo = scene.CommsManager.UserProfileCacheService.GetUserDetails(userFirstName, userLastName); - InventoryFolderImpl foundFolder = userInfo.RootFolder.FindFolderByPath(folderName); - Assert.That(foundFolder, Is.Not.Null, string.Format("Folder {0} not found on load", folderName)); + CachedUserInfo userInfo + = scene.CommsManager.UserProfileCacheService.GetUserDetails(userFirstName, userLastName); + InventoryItemBase foundItem = userInfo.RootFolder.FindItemByPath(itemName); - InventoryItemBase foundItem = foundFolder.FindItemByPath(itemName); - Assert.That(foundItem, Is.Not.Null, string.Format("Item {0} not found on load", itemName)); + // Currently, creator and ownership both revert to the loader + Assert.That(foundItem.CreatorId, Is.EqualTo(userUuid.ToString())); + Assert.That(foundItem.Owner, Is.EqualTo(userUuid)); Console.WriteLine("Finished TestLoadIarV0p1()"); } -- cgit v1.1