Make XInventoryServicesConnector properly handle a RESULT = false return for methods where this contains failure rather than throwing an exception.
Result = False is generated for methods such as GetFolderForType() when the other end wants to signal a failure of the operation in methods such as GetFolderForType()cpu-performance
parent
824a4b4808
commit
7759b05dcb
|
@ -84,6 +84,30 @@ namespace OpenSim.Services.Connectors
|
||||||
m_ServerURI = serviceURI;
|
m_ServerURI = serviceURI;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool CheckReturn(Dictionary<string, object> ret)
|
||||||
|
{
|
||||||
|
if (ret == null)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (ret.Count == 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (ret.ContainsKey("RESULT"))
|
||||||
|
{
|
||||||
|
if (ret["RESULT"] is string)
|
||||||
|
{
|
||||||
|
bool result;
|
||||||
|
|
||||||
|
if (bool.TryParse((string)ret["RESULT"], out result))
|
||||||
|
return result;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
public bool CreateUserInventory(UUID principalID)
|
public bool CreateUserInventory(UUID principalID)
|
||||||
{
|
{
|
||||||
Dictionary<string,object> ret = MakeRequest("CREATEUSERINVENTORY",
|
Dictionary<string,object> ret = MakeRequest("CREATEUSERINVENTORY",
|
||||||
|
@ -91,12 +115,7 @@ namespace OpenSim.Services.Connectors
|
||||||
{ "PRINCIPAL", principalID.ToString() }
|
{ "PRINCIPAL", principalID.ToString() }
|
||||||
});
|
});
|
||||||
|
|
||||||
if (ret == null)
|
return CheckReturn(ret);
|
||||||
return false;
|
|
||||||
if (ret.Count == 0)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
return bool.Parse(ret["RESULT"].ToString());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<InventoryFolderBase> GetInventorySkeleton(UUID principalID)
|
public List<InventoryFolderBase> GetInventorySkeleton(UUID principalID)
|
||||||
|
@ -106,9 +125,7 @@ namespace OpenSim.Services.Connectors
|
||||||
{ "PRINCIPAL", principalID.ToString() }
|
{ "PRINCIPAL", principalID.ToString() }
|
||||||
});
|
});
|
||||||
|
|
||||||
if (ret == null)
|
if (!CheckReturn(ret))
|
||||||
return null;
|
|
||||||
if (ret.Count == 0)
|
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
Dictionary<string, object> folders = (Dictionary<string, object>)ret["FOLDERS"];
|
Dictionary<string, object> folders = (Dictionary<string, object>)ret["FOLDERS"];
|
||||||
|
@ -135,9 +152,7 @@ namespace OpenSim.Services.Connectors
|
||||||
{ "PRINCIPAL", principalID.ToString() }
|
{ "PRINCIPAL", principalID.ToString() }
|
||||||
});
|
});
|
||||||
|
|
||||||
if (ret == null)
|
if (!CheckReturn(ret))
|
||||||
return null;
|
|
||||||
if (ret.Count == 0)
|
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
return BuildFolder((Dictionary<string, object>)ret["folder"]);
|
return BuildFolder((Dictionary<string, object>)ret["folder"]);
|
||||||
|
@ -151,9 +166,7 @@ namespace OpenSim.Services.Connectors
|
||||||
{ "TYPE", ((int)type).ToString() }
|
{ "TYPE", ((int)type).ToString() }
|
||||||
});
|
});
|
||||||
|
|
||||||
if (ret == null)
|
if (!CheckReturn(ret))
|
||||||
return null;
|
|
||||||
if (ret.Count == 0)
|
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
return BuildFolder((Dictionary<string, object>)ret["folder"]);
|
return BuildFolder((Dictionary<string, object>)ret["folder"]);
|
||||||
|
@ -174,9 +187,7 @@ namespace OpenSim.Services.Connectors
|
||||||
{ "FOLDER", folderID.ToString() }
|
{ "FOLDER", folderID.ToString() }
|
||||||
});
|
});
|
||||||
|
|
||||||
if (ret == null)
|
if (!CheckReturn(ret))
|
||||||
return null;
|
|
||||||
if (ret.Count == 0)
|
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
Dictionary<string,object> folders =
|
Dictionary<string,object> folders =
|
||||||
|
@ -205,9 +216,7 @@ namespace OpenSim.Services.Connectors
|
||||||
{ "FOLDER", folderID.ToString() }
|
{ "FOLDER", folderID.ToString() }
|
||||||
});
|
});
|
||||||
|
|
||||||
if (ret == null)
|
if (!CheckReturn(ret))
|
||||||
return null;
|
|
||||||
if (ret.Count == 0)
|
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
Dictionary<string, object> items = (Dictionary<string, object>)ret["ITEMS"];
|
Dictionary<string, object> items = (Dictionary<string, object>)ret["ITEMS"];
|
||||||
|
@ -230,10 +239,7 @@ namespace OpenSim.Services.Connectors
|
||||||
{ "ID", folder.ID.ToString() }
|
{ "ID", folder.ID.ToString() }
|
||||||
});
|
});
|
||||||
|
|
||||||
if (ret == null)
|
return CheckReturn(ret);
|
||||||
return false;
|
|
||||||
|
|
||||||
return bool.Parse(ret["RESULT"].ToString());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool UpdateFolder(InventoryFolderBase folder)
|
public bool UpdateFolder(InventoryFolderBase folder)
|
||||||
|
@ -248,10 +254,7 @@ namespace OpenSim.Services.Connectors
|
||||||
{ "ID", folder.ID.ToString() }
|
{ "ID", folder.ID.ToString() }
|
||||||
});
|
});
|
||||||
|
|
||||||
if (ret == null)
|
return CheckReturn(ret);
|
||||||
return false;
|
|
||||||
|
|
||||||
return bool.Parse(ret["RESULT"].ToString());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool MoveFolder(InventoryFolderBase folder)
|
public bool MoveFolder(InventoryFolderBase folder)
|
||||||
|
@ -263,10 +266,7 @@ namespace OpenSim.Services.Connectors
|
||||||
{ "PRINCIPAL", folder.Owner.ToString() }
|
{ "PRINCIPAL", folder.Owner.ToString() }
|
||||||
});
|
});
|
||||||
|
|
||||||
if (ret == null)
|
return CheckReturn(ret);
|
||||||
return false;
|
|
||||||
|
|
||||||
return bool.Parse(ret["RESULT"].ToString());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool DeleteFolders(UUID principalID, List<UUID> folderIDs)
|
public bool DeleteFolders(UUID principalID, List<UUID> folderIDs)
|
||||||
|
@ -282,10 +282,7 @@ namespace OpenSim.Services.Connectors
|
||||||
{ "FOLDERS", slist }
|
{ "FOLDERS", slist }
|
||||||
});
|
});
|
||||||
|
|
||||||
if (ret == null)
|
return CheckReturn(ret);
|
||||||
return false;
|
|
||||||
|
|
||||||
return bool.Parse(ret["RESULT"].ToString());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool PurgeFolder(InventoryFolderBase folder)
|
public bool PurgeFolder(InventoryFolderBase folder)
|
||||||
|
@ -295,10 +292,7 @@ namespace OpenSim.Services.Connectors
|
||||||
{ "ID", folder.ID.ToString() }
|
{ "ID", folder.ID.ToString() }
|
||||||
});
|
});
|
||||||
|
|
||||||
if (ret == null)
|
return CheckReturn(ret);
|
||||||
return false;
|
|
||||||
|
|
||||||
return bool.Parse(ret["RESULT"].ToString());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool AddItem(InventoryItemBase item)
|
public bool AddItem(InventoryItemBase item)
|
||||||
|
@ -330,10 +324,7 @@ namespace OpenSim.Services.Connectors
|
||||||
{ "CreationDate", item.CreationDate.ToString() }
|
{ "CreationDate", item.CreationDate.ToString() }
|
||||||
});
|
});
|
||||||
|
|
||||||
if (ret == null)
|
return CheckReturn(ret);
|
||||||
return false;
|
|
||||||
|
|
||||||
return bool.Parse(ret["RESULT"].ToString());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool UpdateItem(InventoryItemBase item)
|
public bool UpdateItem(InventoryItemBase item)
|
||||||
|
@ -365,10 +356,7 @@ namespace OpenSim.Services.Connectors
|
||||||
{ "CreationDate", item.CreationDate.ToString() }
|
{ "CreationDate", item.CreationDate.ToString() }
|
||||||
});
|
});
|
||||||
|
|
||||||
if (ret == null)
|
return CheckReturn(ret);
|
||||||
return false;
|
|
||||||
|
|
||||||
return bool.Parse(ret["RESULT"].ToString());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool MoveItems(UUID principalID, List<InventoryItemBase> items)
|
public bool MoveItems(UUID principalID, List<InventoryItemBase> items)
|
||||||
|
@ -389,10 +377,7 @@ namespace OpenSim.Services.Connectors
|
||||||
{ "DESTLIST", destlist }
|
{ "DESTLIST", destlist }
|
||||||
});
|
});
|
||||||
|
|
||||||
if (ret == null)
|
return CheckReturn(ret);
|
||||||
return false;
|
|
||||||
|
|
||||||
return bool.Parse(ret["RESULT"].ToString());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool DeleteItems(UUID principalID, List<UUID> itemIDs)
|
public bool DeleteItems(UUID principalID, List<UUID> itemIDs)
|
||||||
|
@ -408,10 +393,7 @@ namespace OpenSim.Services.Connectors
|
||||||
{ "ITEMS", slist }
|
{ "ITEMS", slist }
|
||||||
});
|
});
|
||||||
|
|
||||||
if (ret == null)
|
return CheckReturn(ret);
|
||||||
return false;
|
|
||||||
|
|
||||||
return bool.Parse(ret["RESULT"].ToString());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public InventoryItemBase GetItem(InventoryItemBase item)
|
public InventoryItemBase GetItem(InventoryItemBase item)
|
||||||
|
@ -423,9 +405,7 @@ namespace OpenSim.Services.Connectors
|
||||||
{ "ID", item.ID.ToString() }
|
{ "ID", item.ID.ToString() }
|
||||||
});
|
});
|
||||||
|
|
||||||
if (ret == null)
|
if (!CheckReturn(ret))
|
||||||
return null;
|
|
||||||
if (ret.Count == 0)
|
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
return BuildItem((Dictionary<string, object>)ret["item"]);
|
return BuildItem((Dictionary<string, object>)ret["item"]);
|
||||||
|
@ -447,9 +427,7 @@ namespace OpenSim.Services.Connectors
|
||||||
{ "ID", folder.ID.ToString() }
|
{ "ID", folder.ID.ToString() }
|
||||||
});
|
});
|
||||||
|
|
||||||
if (ret == null)
|
if (!CheckReturn(ret))
|
||||||
return null;
|
|
||||||
if (ret.Count == 0)
|
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
return BuildFolder((Dictionary<string, object>)ret["folder"]);
|
return BuildFolder((Dictionary<string, object>)ret["folder"]);
|
||||||
|
@ -469,7 +447,7 @@ namespace OpenSim.Services.Connectors
|
||||||
{ "PRINCIPAL", principalID.ToString() }
|
{ "PRINCIPAL", principalID.ToString() }
|
||||||
});
|
});
|
||||||
|
|
||||||
if (ret == null)
|
if (!CheckReturn(ret))
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
List<InventoryItemBase> items = new List<InventoryItemBase>();
|
List<InventoryItemBase> items = new List<InventoryItemBase>();
|
||||||
|
@ -488,10 +466,22 @@ namespace OpenSim.Services.Connectors
|
||||||
{ "ASSET", assetID.ToString() }
|
{ "ASSET", assetID.ToString() }
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// We cannot use CheckReturn() here because valid values for RESULT are "false" (in the case of request failure) or an int
|
||||||
if (ret == null)
|
if (ret == null)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return int.Parse(ret["RESULT"].ToString());
|
if (ret.ContainsKey("RESULT"))
|
||||||
|
{
|
||||||
|
if (ret["RESULT"] is string)
|
||||||
|
{
|
||||||
|
int intResult;
|
||||||
|
|
||||||
|
if (int.TryParse ((string)ret["RESULT"], out intResult))
|
||||||
|
return intResult;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public InventoryCollection GetUserInventory(UUID principalID)
|
public InventoryCollection GetUserInventory(UUID principalID)
|
||||||
|
@ -508,9 +498,7 @@ namespace OpenSim.Services.Connectors
|
||||||
{ "PRINCIPAL", principalID.ToString() }
|
{ "PRINCIPAL", principalID.ToString() }
|
||||||
});
|
});
|
||||||
|
|
||||||
if (ret == null)
|
if (!CheckReturn(ret))
|
||||||
return null;
|
|
||||||
if (ret.Count == 0)
|
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
Dictionary<string, object> folders =
|
Dictionary<string, object> folders =
|
||||||
|
|
Loading…
Reference in New Issue