diff --git a/OpenSim/Framework/Communications/Cache/InventoryFolderImpl.cs b/OpenSim/Framework/Communications/Cache/InventoryFolderImpl.cs
index ad55c444db..933d40a535 100644
--- a/OpenSim/Framework/Communications/Cache/InventoryFolderImpl.cs
+++ b/OpenSim/Framework/Communications/Cache/InventoryFolderImpl.cs
@@ -106,6 +106,23 @@ namespace OpenSim.Framework.Communications.Cache
}
}
+ ///
+ /// Get a child folder
+ ///
+ ///
+ /// The folder if it exists, null if it doesn't
+ public InventoryFolderImpl GetChildFolder(UUID folderID)
+ {
+ InventoryFolderImpl folder = null;
+
+ lock (SubFolders)
+ {
+ SubFolders.TryGetValue(folderID, out folder);
+ }
+
+ return folder;
+ }
+
///
/// Removes the given child subfolder.
///
diff --git a/OpenSim/Framework/Communications/Tests/Cache/UserProfileCacheServiceTests.cs b/OpenSim/Framework/Communications/Tests/Cache/UserProfileCacheServiceTests.cs
index d73d3d5b65..f209fd4c05 100644
--- a/OpenSim/Framework/Communications/Tests/Cache/UserProfileCacheServiceTests.cs
+++ b/OpenSim/Framework/Communications/Tests/Cache/UserProfileCacheServiceTests.cs
@@ -112,5 +112,32 @@ namespace OpenSim.Framework.Communications.Tests
Assert.That(inventoryDataPlugin.getInventoryFolder(folderId), Is.Not.Null);
Assert.That(userInfo.RootFolder.SubFolders.ContainsKey(folderId), Is.True);
}
+
+ ///
+ /// Test retrieving a child folder
+ ///
+ [Test]
+ public void TestGetChildFolder()
+ {
+ UUID userId = UUID.Parse("00000000-0000-0000-0000-000000000005");
+
+ CommunicationsManager commsManager = new TestCommunicationsManager();
+ LocalUserServices lus = (LocalUserServices)commsManager.UserService;
+ lus.AddPlugin(new TestUserDataPlugin());
+ ((LocalInventoryService)commsManager.InventoryService).AddPlugin(new TestInventoryDataPlugin());
+
+ lus.AddUser("Bill", "Bailey", "troll", "bill@bailey.com", 1000, 1000, userId);
+
+ commsManager.UserProfileCacheService.RequestInventoryForUser(userId);
+
+ CachedUserInfo userInfo = commsManager.UserProfileCacheService.GetUserDetails(userId);
+
+ UUID folderId = UUID.Parse("00000000-0000-0000-0000-000000000011");
+
+ Assert.That(userInfo.RootFolder.GetChildFolder(folderId), Is.Null);
+ userInfo.CreateFolder("testFolder", folderId, (ushort)AssetType.Animation, userInfo.RootFolder.ID);
+
+ Assert.That(userInfo.RootFolder.GetChildFolder(folderId), Is.Not.Null);
+ }
}
}