diff --git a/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml b/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml
index aaa318cabb..0a5ff3f982 100644
--- a/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml
+++ b/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml
@@ -45,6 +45,7 @@
+
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteXInventoryServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteXInventoryServiceConnector.cs
index fb353c2893..8504b677c2 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteXInventoryServiceConnector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteXInventoryServiceConnector.cs
@@ -183,6 +183,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
public override InventoryCollection GetFolderContent(UUID userID, UUID folderID)
{
+ m_log.DebugFormat("[XINVENTORY CONNECTOR]: GetFolderContent {0}", folderID);
try
{
return m_RemoteConnector.GetFolderContent(userID, folderID);
@@ -295,6 +296,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
public override InventoryFolderBase GetFolder(InventoryFolderBase folder)
{
+ m_log.DebugFormat("[XINVENTORY CONNECTOR]: GetFolder {0}", folder.ID);
if (folder == null)
return null;
diff --git a/OpenSim/Server/Handlers/Inventory/XInventoryInConnector.cs b/OpenSim/Server/Handlers/Inventory/XInventoryInConnector.cs
index 7164520f14..c95b4d44e3 100644
--- a/OpenSim/Server/Handlers/Inventory/XInventoryInConnector.cs
+++ b/OpenSim/Server/Handlers/Inventory/XInventoryInConnector.cs
@@ -228,9 +228,17 @@ namespace OpenSim.Server.Handlers.Asset
List folders = m_InventoryService.GetInventorySkeleton(new UUID(request["PRINCIPAL"].ToString()));
+ Dictionary sfolders = new Dictionary();
if (folders != null)
+ {
+ int i = 0;
foreach (InventoryFolderBase f in folders)
- result[f.ID.ToString()] = EncodeFolder(f);
+ {
+ sfolders["folder_" + i.ToString()] = EncodeFolder(f);
+ i++;
+ }
+ }
+ result["FOLDERS"] = sfolders;
string xmlString = ServerUtils.BuildXmlResponse(result);
m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
@@ -246,7 +254,7 @@ namespace OpenSim.Server.Handlers.Asset
UUID.TryParse(request["PRINCIPAL"].ToString(), out principal);
InventoryFolderBase rfolder = m_InventoryService.GetRootFolder(principal);
if (rfolder != null)
- result[rfolder.ID.ToString()] = EncodeFolder(rfolder);
+ result["folder"] = EncodeFolder(rfolder);
string xmlString = ServerUtils.BuildXmlResponse(result);
m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
@@ -263,7 +271,7 @@ namespace OpenSim.Server.Handlers.Asset
Int32.TryParse(request["TYPE"].ToString(), out type);
InventoryFolderBase folder = m_InventoryService.GetFolderForType(principal, (AssetType)type);
if (folder != null)
- result[folder.ID.ToString()] = EncodeFolder(folder);
+ result["folder"] = EncodeFolder(folder);
string xmlString = ServerUtils.BuildXmlResponse(result);
m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
@@ -283,13 +291,21 @@ namespace OpenSim.Server.Handlers.Asset
if (icoll != null)
{
Dictionary folders = new Dictionary();
+ int i = 0;
foreach (InventoryFolderBase f in icoll.Folders)
- folders[f.ID.ToString()] = EncodeFolder(f);
+ {
+ folders["folder_" + i.ToString()] = EncodeFolder(f);
+ i++;
+ }
result["FOLDERS"] = folders;
+ i = 0;
Dictionary items = new Dictionary();
- foreach (InventoryItemBase i in icoll.Items)
- items[i.ID.ToString()] = EncodeItem(i);
+ foreach (InventoryItemBase it in icoll.Items)
+ {
+ items["item_" + i.ToString()] = EncodeItem(it);
+ i++;
+ }
result["ITEMS"] = items;
}
@@ -308,9 +324,18 @@ namespace OpenSim.Server.Handlers.Asset
UUID.TryParse(request["FOLDER"].ToString(), out folderID);
List items = m_InventoryService.GetFolderItems(principal, folderID);
+ Dictionary sitems = new Dictionary();
+
if (items != null)
+ {
+ int i = 0;
foreach (InventoryItemBase item in items)
- result[item.ID.ToString()] = EncodeItem(item);
+ {
+ sitems["item_" + i.ToString()] = EncodeItem(item);
+ i++;
+ }
+ }
+ result["ITEMS"] = sitems;
string xmlString = ServerUtils.BuildXmlResponse(result);
m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
@@ -483,7 +508,7 @@ namespace OpenSim.Server.Handlers.Asset
InventoryItemBase item = new InventoryItemBase(id);
item = m_InventoryService.GetItem(item);
if (item != null)
- result[item.ID.ToString()] = EncodeItem(item);
+ result["item"] = EncodeItem(item);
string xmlString = ServerUtils.BuildXmlResponse(result);
m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
@@ -500,7 +525,7 @@ namespace OpenSim.Server.Handlers.Asset
InventoryFolderBase folder = new InventoryFolderBase(id);
folder = m_InventoryService.GetFolder(folder);
if (folder != null)
- result[folder.ID.ToString()] = EncodeFolder(folder);
+ result["folder"] = EncodeFolder(folder);
string xmlString = ServerUtils.BuildXmlResponse(result);
m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
@@ -515,9 +540,17 @@ namespace OpenSim.Server.Handlers.Asset
UUID.TryParse(request["PRINCIPAL"].ToString(), out principal);
List gestures = m_InventoryService.GetActiveGestures(principal);
+ Dictionary items = new Dictionary();
if (gestures != null)
+ {
+ int i = 0;
foreach (InventoryItemBase item in gestures)
- result[item.ID.ToString()] = EncodeItem(item);
+ {
+ items["item_" + i.ToString()] = EncodeItem(item);
+ i++;
+ }
+ }
+ result["ITEMS"] = items;
string xmlString = ServerUtils.BuildXmlResponse(result);
m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
@@ -549,10 +582,16 @@ namespace OpenSim.Server.Handlers.Asset
UUID.TryParse(request["PRINCIPAL"].ToString(), out principal);
Dictionary sfolders = GetSystemFolders(principal);
+ m_log.DebugFormat("[XXX]: SystemFolders got {0} folders", sfolders.Count);
- if (sfolders != null)
- foreach (KeyValuePair kvp in sfolders)
- result[kvp.Key.ToString()] = EncodeFolder(kvp.Value);
+ Dictionary folders = new Dictionary();
+ int i = 0;
+ foreach (KeyValuePair kvp in sfolders)
+ {
+ folders["folder_" + i.ToString()] = EncodeFolder(kvp.Value);
+ i++;
+ }
+ result["FOLDERS"] = folders;
string xmlString = ServerUtils.BuildXmlResponse(result);
m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
@@ -589,7 +628,7 @@ namespace OpenSim.Server.Handlers.Asset
ret["Flags"] = item.Flags.ToString();
ret["Folder"] = item.Folder.ToString();
ret["GroupID"] = item.GroupID.ToString();
- ret["GroupedOwned"] = item.GroupOwned.ToString();
+ ret["GroupOwned"] = item.GroupOwned.ToString();
ret["GroupPermissions"] = item.GroupPermissions.ToString();
ret["ID"] = item.ID.ToString();
ret["InvType"] = item.InvType.ToString();
@@ -664,7 +703,7 @@ namespace OpenSim.Server.Handlers.Asset
return folders;
}
}
- m_log.WarnFormat("[INVENTORY SERVICE]: System folders for {0} not found", userID);
+ m_log.WarnFormat("[XINVENTORY SERVICE]: System folders for {0} not found", userID);
return new Dictionary();
}
#endregion
diff --git a/OpenSim/Services/Connectors/Inventory/XInventoryConnector.cs b/OpenSim/Services/Connectors/Inventory/XInventoryConnector.cs
index edf224f741..52294dab71 100644
--- a/OpenSim/Services/Connectors/Inventory/XInventoryConnector.cs
+++ b/OpenSim/Services/Connectors/Inventory/XInventoryConnector.cs
@@ -112,8 +112,15 @@ namespace OpenSim.Services.Connectors
List folders = new List();
- foreach (Object o in ret.Values)
- folders.Add(BuildFolder((Dictionary)o));
+ try
+ {
+ foreach (Object o in ret.Values)
+ folders.Add(BuildFolder((Dictionary)o));
+ }
+ catch (Exception e)
+ {
+ m_log.DebugFormat("[XINVENTORY CONNECTOR STUB]: Exception unwrapping folder list: {0}", e.Message);
+ }
return folders;
}
@@ -130,7 +137,7 @@ namespace OpenSim.Services.Connectors
if (ret.Count == 0)
return null;
- return BuildFolder(ret);
+ return BuildFolder((Dictionary)ret["folder"]);
}
public InventoryFolderBase GetFolderForType(UUID principalID, AssetType type)
@@ -146,7 +153,7 @@ namespace OpenSim.Services.Connectors
if (ret.Count == 0)
return null;
- return BuildFolder(ret);
+ return BuildFolder((Dictionary)ret["folder"]);
}
public InventoryCollection GetFolderContent(UUID principalID, UUID folderID)
@@ -173,10 +180,17 @@ namespace OpenSim.Services.Connectors
Dictionary items =
(Dictionary)ret["ITEMS"];
- foreach (Object o in folders.Values)
- inventory.Folders.Add(BuildFolder((Dictionary)o));
- foreach (Object o in items.Values)
- inventory.Items.Add(BuildItem((Dictionary)o));
+ try
+ {
+ foreach (Object o in folders.Values) // getting the values directly, we don't care about the keys folder_i
+ inventory.Folders.Add(BuildFolder((Dictionary)o));
+ foreach (Object o in items.Values) // getting the values directly, we don't care about the keys item_i
+ inventory.Items.Add(BuildItem((Dictionary)o));
+ }
+ catch (Exception e)
+ {
+ m_log.DebugFormat("[XINVENTORY CONNECTOR STUB]: Exception unwrapping content list: {0}", e.Message);
+ }
return inventory;
}
@@ -194,13 +208,12 @@ namespace OpenSim.Services.Connectors
if (ret.Count == 0)
return null;
-
- List items = new List();
-
- foreach (Object o in ret.Values)
- items.Add(BuildItem((Dictionary)o));
+ Dictionary items = (Dictionary)ret["ITEMS"];
+ List fitems = new List();
+ foreach (Object o in items.Values) // getting the values directly, we don't care about the keys item_i
+ fitems.Add(BuildItem((Dictionary)o));
- return items;
+ return fitems;
}
public bool AddFolder(InventoryFolderBase folder)
@@ -405,7 +418,7 @@ namespace OpenSim.Services.Connectors
if (ret.Count == 0)
return null;
- return BuildItem(ret);
+ return BuildItem((Dictionary)ret["item"]);
}
public InventoryFolderBase GetFolder(InventoryFolderBase folder)
@@ -420,7 +433,7 @@ namespace OpenSim.Services.Connectors
if (ret.Count == 0)
return null;
- return BuildFolder(ret);
+ return BuildFolder((Dictionary)ret["folder"]);
}
public List GetActiveGestures(UUID principalID)
@@ -435,8 +448,8 @@ namespace OpenSim.Services.Connectors
List items = new List();
- foreach (Object o in ret.Values)
- items.Add(BuildItem((Dictionary)o));
+ foreach (Object o in ret.Values) // getting the values directly, we don't care about the keys item_i
+ items.Add(BuildItem((Dictionary)o));
return items;
}
@@ -469,13 +482,14 @@ namespace OpenSim.Services.Connectors
try
{
- foreach (KeyValuePair kvp in ret)
+ Dictionary folders = (Dictionary)ret["FOLDERS"];
+
+ foreach (Object o in folders.Values) // getting the values directly, we don't care about the keys folder_i
{
- InventoryFolderBase folder = BuildFolder((Dictionary)(kvp.Value));
- short type = 0;
- if (Int16.TryParse(kvp.Key, out type))
- sfolders.Add((AssetType)type, folder);
+ InventoryFolderBase folder = BuildFolder((Dictionary)o);
+ sfolders.Add((AssetType)folder.Type, folder);
}
+
}
catch (Exception e)
{
@@ -522,13 +536,20 @@ namespace OpenSim.Services.Connectors
{
InventoryFolderBase folder = new InventoryFolderBase();
- folder.ParentID = new UUID(data["ParentID"].ToString());
- folder.Type = short.Parse(data["Type"].ToString());
- folder.Version = ushort.Parse(data["Version"].ToString());
- folder.Name = data["Name"].ToString();
- folder.Owner = new UUID(data["Owner"].ToString());
- folder.ID = new UUID(data["ID"].ToString());
-
+ try
+ {
+ folder.ParentID = new UUID(data["ParentID"].ToString());
+ folder.Type = short.Parse(data["Type"].ToString());
+ folder.Version = ushort.Parse(data["Version"].ToString());
+ folder.Name = data["Name"].ToString();
+ folder.Owner = new UUID(data["Owner"].ToString());
+ folder.ID = new UUID(data["ID"].ToString());
+ }
+ catch (Exception e)
+ {
+ m_log.DebugFormat("[XINVENTORY CONNECTOR STUB]: Exception building folder: {0}", e.Message);
+ }
+
return folder;
}
@@ -536,26 +557,33 @@ namespace OpenSim.Services.Connectors
{
InventoryItemBase item = new InventoryItemBase();
- item.AssetID = new UUID(data["AssetID"].ToString());
- item.AssetType = int.Parse(data["AssetType"].ToString());
- item.Name = data["Name"].ToString();
- item.Owner = new UUID(data["Owner"].ToString());
- item.ID = new UUID(data["ID"].ToString());
- item.InvType = int.Parse(data["InvType"].ToString());
- item.Folder = new UUID(data["Folder"].ToString());
- item.CreatorId = data["CreatorId"].ToString();
- item.Description = data["Description"].ToString();
- item.NextPermissions = uint.Parse(data["NextPermissions"].ToString());
- item.CurrentPermissions = uint.Parse(data["CurrentPermissions"].ToString());
- item.BasePermissions = uint.Parse(data["BasePermissions"].ToString());
- item.EveryOnePermissions = uint.Parse(data["EveryOnePermissions"].ToString());
- item.GroupPermissions = uint.Parse(data["GroupPermissions"].ToString());
- item.GroupID = new UUID(data["GroupID"].ToString());
- item.GroupOwned = bool.Parse(data["GroupOwned"].ToString());
- item.SalePrice = int.Parse(data["SalePrice"].ToString());
- item.SaleType = byte.Parse(data["SaleType"].ToString());
- item.Flags = uint.Parse(data["Flags"].ToString());
- item.CreationDate = int.Parse(data["CreationDate"].ToString());
+ try
+ {
+ item.AssetID = new UUID(data["AssetID"].ToString());
+ item.AssetType = int.Parse(data["AssetType"].ToString());
+ item.Name = data["Name"].ToString();
+ item.Owner = new UUID(data["Owner"].ToString());
+ item.ID = new UUID(data["ID"].ToString());
+ item.InvType = int.Parse(data["InvType"].ToString());
+ item.Folder = new UUID(data["Folder"].ToString());
+ item.CreatorId = data["CreatorId"].ToString();
+ item.Description = data["Description"].ToString();
+ item.NextPermissions = uint.Parse(data["NextPermissions"].ToString());
+ item.CurrentPermissions = uint.Parse(data["CurrentPermissions"].ToString());
+ item.BasePermissions = uint.Parse(data["BasePermissions"].ToString());
+ item.EveryOnePermissions = uint.Parse(data["EveryOnePermissions"].ToString());
+ item.GroupPermissions = uint.Parse(data["GroupPermissions"].ToString());
+ item.GroupID = new UUID(data["GroupID"].ToString());
+ item.GroupOwned = bool.Parse(data["GroupOwned"].ToString());
+ item.SalePrice = int.Parse(data["SalePrice"].ToString());
+ item.SaleType = byte.Parse(data["SaleType"].ToString());
+ item.Flags = uint.Parse(data["Flags"].ToString());
+ item.CreationDate = int.Parse(data["CreationDate"].ToString());
+ }
+ catch (Exception e)
+ {
+ m_log.DebugFormat("[XINVENTORY CONNECTOR STUB]: Exception building item: {0}", e.Message);
+ }
return item;
}
diff --git a/OpenSim/Services/InventoryService/XInventoryService.cs b/OpenSim/Services/InventoryService/XInventoryService.cs
index bbd37d123a..1409a0192d 100644
--- a/OpenSim/Services/InventoryService/XInventoryService.cs
+++ b/OpenSim/Services/InventoryService/XInventoryService.cs
@@ -184,7 +184,7 @@ namespace OpenSim.Services.InventoryService
foreach (XInventoryFolder x in allFolders)
{
- m_log.DebugFormat("[INVENTORY]: Adding folder {0} to skeleton", x.folderName);
+ m_log.DebugFormat("[XINVENTORY]: Adding folder {0} to skeleton", x.folderName);
folders.Add(ConvertToOpenSim(x));
}
@@ -221,7 +221,7 @@ namespace OpenSim.Services.InventoryService
// connector. So we disregard the principal and look
// by ID.
//
- m_log.DebugFormat("[INVENTORY]: Fetch contents for folder {0}", folderID.ToString());
+ m_log.DebugFormat("[XINVENTORY]: Fetch contents for folder {0}", folderID.ToString());
InventoryCollection inventory = new InventoryCollection();
inventory.UserID = principalID;
inventory.Folders = new List();
@@ -233,7 +233,7 @@ namespace OpenSim.Services.InventoryService
foreach (XInventoryFolder x in folders)
{
- m_log.DebugFormat("[INVENTORY]: Adding folder {0} to response", x.folderName);
+ m_log.DebugFormat("[XINVENTORY]: Adding folder {0} to response", x.folderName);
inventory.Folders.Add(ConvertToOpenSim(x));
}
@@ -243,7 +243,7 @@ namespace OpenSim.Services.InventoryService
foreach (XInventoryItem i in items)
{
- m_log.DebugFormat("[INVENTORY]: Adding item {0} to response", i.inventoryName);
+ m_log.DebugFormat("[XINVENTORY]: Adding item {0} to response", i.inventoryName);
inventory.Items.Add(ConvertToOpenSim(i));
}