From 1bf0bc8bb3c3d78f2616397b7a4f048ae5ea1ac3 Mon Sep 17 00:00:00 2001 From: Justin Clarke Casey Date: Wed, 29 Apr 2009 18:52:10 +0000 Subject: [PATCH] * Apply further groups xmlrpc to stop an exception in the exception handler * Thanks mcortez --- .../Archiver/Tests/InventoryArchiverTests.cs | 76 ++++++++++++++++++- .../Avatar/XmlRpcGroups/XmlRpcGroupData.cs | 47 +++++------- 2 files changed, 90 insertions(+), 33 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs index 20d4e47b89..9bec7ed21a 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs @@ -194,14 +194,15 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests } /// - /// Test loading a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet). + /// Test loading a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet) where + /// an account exists with the creator name. /// [Test] - public void TestLoadIarV0p1() + public void TestLoadIarV0p1ExistingUsers() { Console.WriteLine("Started {0}", MethodBase.GetCurrentMethod()); - log4net.Config.XmlConfigurator.Configure(); + //log4net.Config.XmlConfigurator.Configure(); string userFirstName = "Mr"; string userLastName = "Tiddles"; @@ -256,6 +257,75 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests Console.WriteLine("Successfully completed {0}", MethodBase.GetCurrentMethod()); } + + /* + /// + /// Test loading a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet) where + /// no account exists with the creator name + /// + [Test] + public void TestLoadIarV0p1TempProfiles() + { + Console.WriteLine("### Started {0} ###", MethodBase.GetCurrentMethod()); + + log4net.Config.XmlConfigurator.Configure(); + + string userFirstName = "Dennis"; + string userLastName = "Menace"; + UUID userUuid = UUID.Parse("00000000-0000-0000-0000-000000000aaa"); + string user2FirstName = "Walter"; + string user2LastName = "Mitty"; + + string itemName = "b.lsl"; + string archiveItemName + = string.Format("{0}{1}{2}", itemName, "_", UUID.Random()); + + MemoryStream archiveWriteStream = new MemoryStream(); + TarArchiveWriter tar = new TarArchiveWriter(archiveWriteStream); + + InventoryItemBase item1 = new InventoryItemBase(); + item1.Name = itemName; + item1.AssetID = UUID.Random(); + item1.GroupID = UUID.Random(); + item1.CreatorId = OspResolver.MakeOspa(user2FirstName, user2LastName); + item1.Owner = UUID.Zero; + + string item1FileName + = string.Format("{0}{1}", ArchiveConstants.INVENTORY_PATH, archiveItemName); + tar.WriteFile(item1FileName, UserInventoryItemSerializer.Serialize(item1)); + tar.Close(); + + 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(); + IUserAdminService userAdminService = scene.CommsManager.UserAdminService; + + SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule); + userAdminService.AddUser( + userFirstName, userLastName, "meowfood", String.Empty, 1000, 1000, userUuid); + + archiverModule.DearchiveInventory(userFirstName, userLastName, "/", archiveReadStream); + + // Check that a suitable temporary user profile has been created. + UserProfileData user2Profile + = scene.CommsManager.UserService.GetUserProfile(user2FirstName, user2LastName); + Assert.That(user2Profile, Is.Not.Null); + Assert.That(user2Profile.FirstName == user2FirstName); + Assert.That(user2Profile.SurName == user2LastName); + + CachedUserInfo userInfo + = scene.CommsManager.UserProfileCacheService.GetUserDetails(userFirstName, userLastName); + InventoryItemBase foundItem = userInfo.RootFolder.FindItemByPath(itemName); + + Assert.That(foundItem.CreatorId, Is.EqualTo(user2Profile.ID.ToString())); + Assert.That(foundItem.Owner, Is.EqualTo(userUuid)); + + Console.WriteLine("### Successfully completed {0} ###", MethodBase.GetCurrentMethod()); + } + */ /// /// Test replication of an archive path to the user's inventory. diff --git a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/XmlRpcGroupData.cs b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/XmlRpcGroupData.cs index e913543ef3..25ce0931a5 100644 --- a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/XmlRpcGroupData.cs +++ b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/XmlRpcGroupData.cs @@ -146,9 +146,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | GroupPowers.VoteOnProposal; param["OwnersPowers"] = ((ulong)OwnerPowers).ToString(); - - - Hashtable respData = XmlRpcCall("groups.createGroup", param); if (respData.Contains("error")) @@ -237,7 +234,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups param["Name"] = GroupName.ToString(); } - Hashtable respData = XmlRpcCall("groups.getGroup", param); if (respData.Contains("error")) @@ -246,7 +242,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups } return GroupProfileHashtableToGroupRecord(respData); - } public GroupProfileData GetMemberGroupProfile(UUID GroupID, UUID AgentID) @@ -254,7 +249,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups Hashtable param = new Hashtable(); param["GroupID"] = GroupID.ToString(); - Hashtable respData = XmlRpcCall("groups.getGroup", param); if (respData.Contains("error")) @@ -270,7 +264,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups MemberGroupProfile.PowersMask = MemberInfo.GroupPowers; return MemberGroupProfile; - } private GroupProfileData GroupProfileHashtableToGroupProfileData(Hashtable groupProfile) @@ -350,7 +343,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups param["ListInProfile"] = ListInProfile ? "1" : "0"; XmlRpcCall("groups.setAgentGroupInfo", param); - } public void AddAgentToGroupInvite(UUID inviteID, UUID groupID, UUID roleID, UUID agentID) @@ -362,7 +354,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups param["GroupID"] = groupID.ToString(); XmlRpcCall("groups.addAgentToGroupInvite", param); - } public GroupInviteInfo GetAgentToGroupInvite(UUID inviteID) @@ -434,7 +425,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups XmlRpcCall("groups.removeAgentFromGroupRole", param); } - public List FindGroups(string search) { Hashtable param = new Hashtable(); @@ -495,7 +485,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups return HashTableToGroupMembershipData(respData); } - public List GetAgentGroupMemberships(UUID AgentID) { Hashtable param = new Hashtable(); @@ -543,8 +532,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups } return Roles; - - } public List GetGroupRoles(UUID GroupID) @@ -575,7 +562,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups } return Roles; - } private static GroupMembershipData HashTableToGroupMembershipData(Hashtable respData) @@ -643,7 +629,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups } return members; - } public List GetGroupRoleMembers(UUID GroupID) @@ -667,6 +652,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups members.Add(data); } } + return members; } @@ -694,9 +680,10 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups values.Add(data); } } + return values; - } + public GroupNoticeInfo GetGroupNotice(UUID noticeID) { Hashtable param = new Hashtable(); @@ -704,7 +691,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups Hashtable respData = XmlRpcCall("groups.getGroupNotice", param); - if (respData.Contains("error")) { return null; @@ -728,6 +714,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups return data; } + public void AddGroupNotice(UUID groupID, UUID noticeID, string fromName, string subject, string message, byte[] binaryBucket) { string binBucket = OpenMetaverse.Utils.BytesToHexString(binaryBucket, ""); @@ -768,14 +755,16 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups } catch (Exception e) { - m_log.Error("[GROUPS] An error has occured while attempting to access the XmlRpcGroups server"); - m_log.ErrorFormat("[GROUPS] {0} ", e.ToString()); + m_log.ErrorFormat("[GROUPS]: An error has occured while attempting to access the XmlRpcGroups server method: {0}", function); + m_log.ErrorFormat("[GROUPS]: {0} ", e.ToString()); foreach (KeyValuePair kvp in param) { - m_log.WarnFormat("[GROUPS] {0} :: {1}", kvp.Key.ToString(), kvp.Value.ToString()); + m_log.WarnFormat("[GROUPS]: {0} :: {1}", kvp.Key.ToString(), kvp.Value.ToString()); } - Hashtable respData = (Hashtable)resp.Value; + + + Hashtable respData = new Hashtable(); respData.Add("error", e.ToString()); return respData; } @@ -791,21 +780,21 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups return respData; } - m_log.ErrorFormat("[XmlRpcGroupData] The XmlRpc server returned a {1} instead of a hashtable for {0}", function, resp.Value.GetType().ToString()); + m_log.ErrorFormat("[GROUPS]: The XmlRpc server returned a {1} instead of a hashtable for {0}", function, resp.Value.GetType().ToString()); if (resp.Value is ArrayList) { ArrayList al = (ArrayList)resp.Value; - m_log.ErrorFormat("[XmlRpcGroupData] Contains {0} elements", al.Count); + m_log.ErrorFormat("[GROUPS]: Contains {0} elements", al.Count); foreach (object o in al) { - m_log.ErrorFormat("[XmlRpcGroupData] {0} :: {1}", o.GetType().ToString(), o.ToString()); + m_log.ErrorFormat("[GROUPS]: {0} :: {1}", o.GetType().ToString(), o.ToString()); } } else { - m_log.ErrorFormat("[XmlRpcGroupData] Function returned: {0}", resp.Value.ToString()); + m_log.ErrorFormat("[GROUPS]: Function returned: {0}", resp.Value.ToString()); } Hashtable error = new Hashtable(); @@ -815,21 +804,19 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups private void LogRespDataToConsoleError(Hashtable respData) { - m_log.Error("[GROUPDATA] Error:"); + m_log.Error("[GROUPS]: Error:"); foreach (string key in respData.Keys) { - m_log.ErrorFormat("[GROUPDATA] Key: {0}", key); + m_log.ErrorFormat("[GROUPS]: Key: {0}", key); string[] lines = respData[key].ToString().Split(new char[] { '\n' }); foreach (string line in lines) { - m_log.ErrorFormat("[GROUPDATA] {0}", line); + m_log.ErrorFormat("[GROUPS]: {0}", line); } - } } - } public class GroupNoticeInfo