diff options
author | Justin Clarke Casey | 2009-04-29 18:52:10 +0000 |
---|---|---|
committer | Justin Clarke Casey | 2009-04-29 18:52:10 +0000 |
commit | 1bf0bc8bb3c3d78f2616397b7a4f048ae5ea1ac3 (patch) | |
tree | 163b606708688dfcd147cf47494e976cd125e968 | |
parent | * Apply http://opensimulator.org/mantis/view.php?id=3557 (diff) | |
download | opensim-SC_OLD-1bf0bc8bb3c3d78f2616397b7a4f048ae5ea1ac3.zip opensim-SC_OLD-1bf0bc8bb3c3d78f2616397b7a4f048ae5ea1ac3.tar.gz opensim-SC_OLD-1bf0bc8bb3c3d78f2616397b7a4f048ae5ea1ac3.tar.bz2 opensim-SC_OLD-1bf0bc8bb3c3d78f2616397b7a4f048ae5ea1ac3.tar.xz |
* Apply further groups xmlrpc to stop an exception in the exception handler
* Thanks mcortez
-rw-r--r-- | OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs | 76 | ||||
-rw-r--r-- | OpenSim/Region/OptionalModules/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 20d4e47..9bec7ed 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 | |||
194 | } | 194 | } |
195 | 195 | ||
196 | /// <summary> | 196 | /// <summary> |
197 | /// Test loading a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet). | 197 | /// Test loading a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet) where |
198 | /// an account exists with the creator name. | ||
198 | /// </summary> | 199 | /// </summary> |
199 | [Test] | 200 | [Test] |
200 | public void TestLoadIarV0p1() | 201 | public void TestLoadIarV0p1ExistingUsers() |
201 | { | 202 | { |
202 | Console.WriteLine("Started {0}", MethodBase.GetCurrentMethod()); | 203 | Console.WriteLine("Started {0}", MethodBase.GetCurrentMethod()); |
203 | 204 | ||
204 | log4net.Config.XmlConfigurator.Configure(); | 205 | //log4net.Config.XmlConfigurator.Configure(); |
205 | 206 | ||
206 | string userFirstName = "Mr"; | 207 | string userFirstName = "Mr"; |
207 | string userLastName = "Tiddles"; | 208 | string userLastName = "Tiddles"; |
@@ -256,6 +257,75 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests | |||
256 | 257 | ||
257 | Console.WriteLine("Successfully completed {0}", MethodBase.GetCurrentMethod()); | 258 | Console.WriteLine("Successfully completed {0}", MethodBase.GetCurrentMethod()); |
258 | } | 259 | } |
260 | |||
261 | /* | ||
262 | /// <summary> | ||
263 | /// Test loading a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet) where | ||
264 | /// no account exists with the creator name | ||
265 | /// </summary> | ||
266 | [Test] | ||
267 | public void TestLoadIarV0p1TempProfiles() | ||
268 | { | ||
269 | Console.WriteLine("### Started {0} ###", MethodBase.GetCurrentMethod()); | ||
270 | |||
271 | log4net.Config.XmlConfigurator.Configure(); | ||
272 | |||
273 | string userFirstName = "Dennis"; | ||
274 | string userLastName = "Menace"; | ||
275 | UUID userUuid = UUID.Parse("00000000-0000-0000-0000-000000000aaa"); | ||
276 | string user2FirstName = "Walter"; | ||
277 | string user2LastName = "Mitty"; | ||
278 | |||
279 | string itemName = "b.lsl"; | ||
280 | string archiveItemName | ||
281 | = string.Format("{0}{1}{2}", itemName, "_", UUID.Random()); | ||
282 | |||
283 | MemoryStream archiveWriteStream = new MemoryStream(); | ||
284 | TarArchiveWriter tar = new TarArchiveWriter(archiveWriteStream); | ||
285 | |||
286 | InventoryItemBase item1 = new InventoryItemBase(); | ||
287 | item1.Name = itemName; | ||
288 | item1.AssetID = UUID.Random(); | ||
289 | item1.GroupID = UUID.Random(); | ||
290 | item1.CreatorId = OspResolver.MakeOspa(user2FirstName, user2LastName); | ||
291 | item1.Owner = UUID.Zero; | ||
292 | |||
293 | string item1FileName | ||
294 | = string.Format("{0}{1}", ArchiveConstants.INVENTORY_PATH, archiveItemName); | ||
295 | tar.WriteFile(item1FileName, UserInventoryItemSerializer.Serialize(item1)); | ||
296 | tar.Close(); | ||
297 | |||
298 | MemoryStream archiveReadStream = new MemoryStream(archiveWriteStream.ToArray()); | ||
299 | SerialiserModule serialiserModule = new SerialiserModule(); | ||
300 | InventoryArchiverModule archiverModule = new InventoryArchiverModule(); | ||
301 | |||
302 | // Annoyingly, we have to set up a scene even though inventory loading has nothing to do with a scene | ||
303 | Scene scene = SceneSetupHelpers.SetupScene(); | ||
304 | IUserAdminService userAdminService = scene.CommsManager.UserAdminService; | ||
305 | |||
306 | SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule); | ||
307 | userAdminService.AddUser( | ||
308 | userFirstName, userLastName, "meowfood", String.Empty, 1000, 1000, userUuid); | ||
309 | |||
310 | archiverModule.DearchiveInventory(userFirstName, userLastName, "/", archiveReadStream); | ||
311 | |||
312 | // Check that a suitable temporary user profile has been created. | ||
313 | UserProfileData user2Profile | ||
314 | = scene.CommsManager.UserService.GetUserProfile(user2FirstName, user2LastName); | ||
315 | Assert.That(user2Profile, Is.Not.Null); | ||
316 | Assert.That(user2Profile.FirstName == user2FirstName); | ||
317 | Assert.That(user2Profile.SurName == user2LastName); | ||
318 | |||
319 | CachedUserInfo userInfo | ||
320 | = scene.CommsManager.UserProfileCacheService.GetUserDetails(userFirstName, userLastName); | ||
321 | InventoryItemBase foundItem = userInfo.RootFolder.FindItemByPath(itemName); | ||
322 | |||
323 | Assert.That(foundItem.CreatorId, Is.EqualTo(user2Profile.ID.ToString())); | ||
324 | Assert.That(foundItem.Owner, Is.EqualTo(userUuid)); | ||
325 | |||
326 | Console.WriteLine("### Successfully completed {0} ###", MethodBase.GetCurrentMethod()); | ||
327 | } | ||
328 | */ | ||
259 | 329 | ||
260 | /// <summary> | 330 | /// <summary> |
261 | /// Test replication of an archive path to the user's inventory. | 331 | /// 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 e913543..25ce093 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 | |||
146 | | GroupPowers.VoteOnProposal; | 146 | | GroupPowers.VoteOnProposal; |
147 | param["OwnersPowers"] = ((ulong)OwnerPowers).ToString(); | 147 | param["OwnersPowers"] = ((ulong)OwnerPowers).ToString(); |
148 | 148 | ||
149 | |||
150 | |||
151 | |||
152 | Hashtable respData = XmlRpcCall("groups.createGroup", param); | 149 | Hashtable respData = XmlRpcCall("groups.createGroup", param); |
153 | 150 | ||
154 | if (respData.Contains("error")) | 151 | if (respData.Contains("error")) |
@@ -237,7 +234,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
237 | param["Name"] = GroupName.ToString(); | 234 | param["Name"] = GroupName.ToString(); |
238 | } | 235 | } |
239 | 236 | ||
240 | |||
241 | Hashtable respData = XmlRpcCall("groups.getGroup", param); | 237 | Hashtable respData = XmlRpcCall("groups.getGroup", param); |
242 | 238 | ||
243 | if (respData.Contains("error")) | 239 | if (respData.Contains("error")) |
@@ -246,7 +242,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
246 | } | 242 | } |
247 | 243 | ||
248 | return GroupProfileHashtableToGroupRecord(respData); | 244 | return GroupProfileHashtableToGroupRecord(respData); |
249 | |||
250 | } | 245 | } |
251 | 246 | ||
252 | public GroupProfileData GetMemberGroupProfile(UUID GroupID, UUID AgentID) | 247 | public GroupProfileData GetMemberGroupProfile(UUID GroupID, UUID AgentID) |
@@ -254,7 +249,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
254 | Hashtable param = new Hashtable(); | 249 | Hashtable param = new Hashtable(); |
255 | param["GroupID"] = GroupID.ToString(); | 250 | param["GroupID"] = GroupID.ToString(); |
256 | 251 | ||
257 | |||
258 | Hashtable respData = XmlRpcCall("groups.getGroup", param); | 252 | Hashtable respData = XmlRpcCall("groups.getGroup", param); |
259 | 253 | ||
260 | if (respData.Contains("error")) | 254 | if (respData.Contains("error")) |
@@ -270,7 +264,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
270 | MemberGroupProfile.PowersMask = MemberInfo.GroupPowers; | 264 | MemberGroupProfile.PowersMask = MemberInfo.GroupPowers; |
271 | 265 | ||
272 | return MemberGroupProfile; | 266 | return MemberGroupProfile; |
273 | |||
274 | } | 267 | } |
275 | 268 | ||
276 | private GroupProfileData GroupProfileHashtableToGroupProfileData(Hashtable groupProfile) | 269 | private GroupProfileData GroupProfileHashtableToGroupProfileData(Hashtable groupProfile) |
@@ -350,7 +343,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
350 | param["ListInProfile"] = ListInProfile ? "1" : "0"; | 343 | param["ListInProfile"] = ListInProfile ? "1" : "0"; |
351 | 344 | ||
352 | XmlRpcCall("groups.setAgentGroupInfo", param); | 345 | XmlRpcCall("groups.setAgentGroupInfo", param); |
353 | |||
354 | } | 346 | } |
355 | 347 | ||
356 | public void AddAgentToGroupInvite(UUID inviteID, UUID groupID, UUID roleID, UUID agentID) | 348 | public void AddAgentToGroupInvite(UUID inviteID, UUID groupID, UUID roleID, UUID agentID) |
@@ -362,7 +354,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
362 | param["GroupID"] = groupID.ToString(); | 354 | param["GroupID"] = groupID.ToString(); |
363 | 355 | ||
364 | XmlRpcCall("groups.addAgentToGroupInvite", param); | 356 | XmlRpcCall("groups.addAgentToGroupInvite", param); |
365 | |||
366 | } | 357 | } |
367 | 358 | ||
368 | public GroupInviteInfo GetAgentToGroupInvite(UUID inviteID) | 359 | public GroupInviteInfo GetAgentToGroupInvite(UUID inviteID) |
@@ -434,7 +425,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
434 | XmlRpcCall("groups.removeAgentFromGroupRole", param); | 425 | XmlRpcCall("groups.removeAgentFromGroupRole", param); |
435 | } | 426 | } |
436 | 427 | ||
437 | |||
438 | public List<DirGroupsReplyData> FindGroups(string search) | 428 | public List<DirGroupsReplyData> FindGroups(string search) |
439 | { | 429 | { |
440 | Hashtable param = new Hashtable(); | 430 | Hashtable param = new Hashtable(); |
@@ -495,7 +485,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
495 | return HashTableToGroupMembershipData(respData); | 485 | return HashTableToGroupMembershipData(respData); |
496 | } | 486 | } |
497 | 487 | ||
498 | |||
499 | public List<GroupMembershipData> GetAgentGroupMemberships(UUID AgentID) | 488 | public List<GroupMembershipData> GetAgentGroupMemberships(UUID AgentID) |
500 | { | 489 | { |
501 | Hashtable param = new Hashtable(); | 490 | Hashtable param = new Hashtable(); |
@@ -543,8 +532,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
543 | } | 532 | } |
544 | 533 | ||
545 | return Roles; | 534 | return Roles; |
546 | |||
547 | |||
548 | } | 535 | } |
549 | 536 | ||
550 | public List<GroupRolesData> GetGroupRoles(UUID GroupID) | 537 | public List<GroupRolesData> GetGroupRoles(UUID GroupID) |
@@ -575,7 +562,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
575 | } | 562 | } |
576 | 563 | ||
577 | return Roles; | 564 | return Roles; |
578 | |||
579 | } | 565 | } |
580 | 566 | ||
581 | private static GroupMembershipData HashTableToGroupMembershipData(Hashtable respData) | 567 | private static GroupMembershipData HashTableToGroupMembershipData(Hashtable respData) |
@@ -643,7 +629,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
643 | } | 629 | } |
644 | 630 | ||
645 | return members; | 631 | return members; |
646 | |||
647 | } | 632 | } |
648 | 633 | ||
649 | public List<GroupRoleMembersData> GetGroupRoleMembers(UUID GroupID) | 634 | public List<GroupRoleMembersData> GetGroupRoleMembers(UUID GroupID) |
@@ -667,6 +652,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
667 | members.Add(data); | 652 | members.Add(data); |
668 | } | 653 | } |
669 | } | 654 | } |
655 | |||
670 | return members; | 656 | return members; |
671 | } | 657 | } |
672 | 658 | ||
@@ -694,9 +680,10 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
694 | values.Add(data); | 680 | values.Add(data); |
695 | } | 681 | } |
696 | } | 682 | } |
683 | |||
697 | return values; | 684 | return values; |
698 | |||
699 | } | 685 | } |
686 | |||
700 | public GroupNoticeInfo GetGroupNotice(UUID noticeID) | 687 | public GroupNoticeInfo GetGroupNotice(UUID noticeID) |
701 | { | 688 | { |
702 | Hashtable param = new Hashtable(); | 689 | Hashtable param = new Hashtable(); |
@@ -704,7 +691,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
704 | 691 | ||
705 | Hashtable respData = XmlRpcCall("groups.getGroupNotice", param); | 692 | Hashtable respData = XmlRpcCall("groups.getGroupNotice", param); |
706 | 693 | ||
707 | |||
708 | if (respData.Contains("error")) | 694 | if (respData.Contains("error")) |
709 | { | 695 | { |
710 | return null; | 696 | return null; |
@@ -728,6 +714,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
728 | 714 | ||
729 | return data; | 715 | return data; |
730 | } | 716 | } |
717 | |||
731 | public void AddGroupNotice(UUID groupID, UUID noticeID, string fromName, string subject, string message, byte[] binaryBucket) | 718 | public void AddGroupNotice(UUID groupID, UUID noticeID, string fromName, string subject, string message, byte[] binaryBucket) |
732 | { | 719 | { |
733 | string binBucket = OpenMetaverse.Utils.BytesToHexString(binaryBucket, ""); | 720 | string binBucket = OpenMetaverse.Utils.BytesToHexString(binaryBucket, ""); |
@@ -768,14 +755,16 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
768 | } | 755 | } |
769 | catch (Exception e) | 756 | catch (Exception e) |
770 | { | 757 | { |
771 | m_log.Error("[GROUPS] An error has occured while attempting to access the XmlRpcGroups server"); | 758 | m_log.ErrorFormat("[GROUPS]: An error has occured while attempting to access the XmlRpcGroups server method: {0}", function); |
772 | m_log.ErrorFormat("[GROUPS] {0} ", e.ToString()); | 759 | m_log.ErrorFormat("[GROUPS]: {0} ", e.ToString()); |
773 | 760 | ||
774 | foreach (KeyValuePair<object, object> kvp in param) | 761 | foreach (KeyValuePair<object, object> kvp in param) |
775 | { | 762 | { |
776 | m_log.WarnFormat("[GROUPS] {0} :: {1}", kvp.Key.ToString(), kvp.Value.ToString()); | 763 | m_log.WarnFormat("[GROUPS]: {0} :: {1}", kvp.Key.ToString(), kvp.Value.ToString()); |
777 | } | 764 | } |
778 | Hashtable respData = (Hashtable)resp.Value; | 765 | |
766 | |||
767 | Hashtable respData = new Hashtable(); | ||
779 | respData.Add("error", e.ToString()); | 768 | respData.Add("error", e.ToString()); |
780 | return respData; | 769 | return respData; |
781 | } | 770 | } |
@@ -791,21 +780,21 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
791 | return respData; | 780 | return respData; |
792 | } | 781 | } |
793 | 782 | ||
794 | m_log.ErrorFormat("[XmlRpcGroupData] The XmlRpc server returned a {1} instead of a hashtable for {0}", function, resp.Value.GetType().ToString()); | 783 | m_log.ErrorFormat("[GROUPS]: The XmlRpc server returned a {1} instead of a hashtable for {0}", function, resp.Value.GetType().ToString()); |
795 | 784 | ||
796 | if (resp.Value is ArrayList) | 785 | if (resp.Value is ArrayList) |
797 | { | 786 | { |
798 | ArrayList al = (ArrayList)resp.Value; | 787 | ArrayList al = (ArrayList)resp.Value; |
799 | m_log.ErrorFormat("[XmlRpcGroupData] Contains {0} elements", al.Count); | 788 | m_log.ErrorFormat("[GROUPS]: Contains {0} elements", al.Count); |
800 | 789 | ||
801 | foreach (object o in al) | 790 | foreach (object o in al) |
802 | { | 791 | { |
803 | m_log.ErrorFormat("[XmlRpcGroupData] {0} :: {1}", o.GetType().ToString(), o.ToString()); | 792 | m_log.ErrorFormat("[GROUPS]: {0} :: {1}", o.GetType().ToString(), o.ToString()); |
804 | } | 793 | } |
805 | } | 794 | } |
806 | else | 795 | else |
807 | { | 796 | { |
808 | m_log.ErrorFormat("[XmlRpcGroupData] Function returned: {0}", resp.Value.ToString()); | 797 | m_log.ErrorFormat("[GROUPS]: Function returned: {0}", resp.Value.ToString()); |
809 | } | 798 | } |
810 | 799 | ||
811 | Hashtable error = new Hashtable(); | 800 | Hashtable error = new Hashtable(); |
@@ -815,21 +804,19 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
815 | 804 | ||
816 | private void LogRespDataToConsoleError(Hashtable respData) | 805 | private void LogRespDataToConsoleError(Hashtable respData) |
817 | { | 806 | { |
818 | m_log.Error("[GROUPDATA] Error:"); | 807 | m_log.Error("[GROUPS]: Error:"); |
819 | 808 | ||
820 | foreach (string key in respData.Keys) | 809 | foreach (string key in respData.Keys) |
821 | { | 810 | { |
822 | m_log.ErrorFormat("[GROUPDATA] Key: {0}", key); | 811 | m_log.ErrorFormat("[GROUPS]: Key: {0}", key); |
823 | 812 | ||
824 | string[] lines = respData[key].ToString().Split(new char[] { '\n' }); | 813 | string[] lines = respData[key].ToString().Split(new char[] { '\n' }); |
825 | foreach (string line in lines) | 814 | foreach (string line in lines) |
826 | { | 815 | { |
827 | m_log.ErrorFormat("[GROUPDATA] {0}", line); | 816 | m_log.ErrorFormat("[GROUPS]: {0}", line); |
828 | } | 817 | } |
829 | |||
830 | } | 818 | } |
831 | } | 819 | } |
832 | |||
833 | } | 820 | } |
834 | 821 | ||
835 | public class GroupNoticeInfo | 822 | public class GroupNoticeInfo |