From 1bf0bc8bb3c3d78f2616397b7a4f048ae5ea1ac3 Mon Sep 17 00:00:00 2001
From: Justin Clarke Casey
Date: Wed, 29 Apr 2009 18:52:10 +0000
Subject: * 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 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
}
///
- /// 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 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
| 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