diff --git a/OpenSim/Addons/Groups/GroupsModule.cs b/OpenSim/Addons/Groups/GroupsModule.cs
index 11a2a127e6..1afdd0fba3 100644
--- a/OpenSim/Addons/Groups/GroupsModule.cs
+++ b/OpenSim/Addons/Groups/GroupsModule.cs
@@ -445,8 +445,7 @@ namespace OpenSim.Groups
UUID itemID = binBucketMap["item_id"].AsUUID();
UUID ownerID = binBucketMap["owner_id"].AsUUID();
- item = new InventoryItemBase(itemID, ownerID);
- item = m_sceneList[0].InventoryService.GetItem(item);
+ item = m_sceneList[0].InventoryService.GetItem(ownerID, itemID);
}
else
m_log.DebugFormat("[Groups]: Received OSD with unexpected type: {0}", binBucketOSD.GetType());
diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs
index bae15820dd..1a7c698eb1 100644
--- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs
+++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs
@@ -2836,8 +2836,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
if (wearable[0].ItemID != UUID.Zero)
{
// Get inventory item and copy it
- InventoryItemBase item = new InventoryItemBase(wearable[0].ItemID, source);
- item = inventoryService.GetItem(item);
+ InventoryItemBase item = inventoryService.GetItem(source, wearable[0].ItemID);
if (item != null)
{
@@ -2890,8 +2889,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
if (itemID != UUID.Zero)
{
// Get inventory item and copy it
- InventoryItemBase item = new InventoryItemBase(itemID, source);
- item = inventoryService.GetItem(item);
+ InventoryItemBase item = inventoryService.GetItem(source, itemID);
if (item != null)
{
diff --git a/OpenSim/Capabilities/Handlers/FetchInventory/FetchInvDescHandler.cs b/OpenSim/Capabilities/Handlers/FetchInventory/FetchInvDescHandler.cs
index 4da6c3df9b..e3a9a2213b 100644
--- a/OpenSim/Capabilities/Handlers/FetchInventory/FetchInvDescHandler.cs
+++ b/OpenSim/Capabilities/Handlers/FetchInventory/FetchInvDescHandler.cs
@@ -403,10 +403,7 @@ namespace OpenSim.Capabilities.Handlers
return contents;
}
contents = fetchedContents;
- InventoryFolderBase containingFolder = new InventoryFolderBase();
- containingFolder.ID = folderID;
- containingFolder.Owner = agentID;
- containingFolder = m_InventoryService.GetFolder(containingFolder);
+ InventoryFolderBase containingFolder = m_InventoryService.GetFolder(agentID, folderID);
if (containingFolder != null)
{
@@ -429,7 +426,7 @@ namespace OpenSim.Capabilities.Handlers
{
if (item.AssetType == (int)AssetType.Link)
{
- InventoryItemBase linkedItem = m_InventoryService.GetItem(new InventoryItemBase(item.AssetID));
+ InventoryItemBase linkedItem = m_InventoryService.GetItem(agentID, item.AssetID);
// Take care of genuinely broken links where the target doesn't exist
// HACK: Also, don't follow up links that just point to other links. In theory this is legitimate,
@@ -659,10 +656,7 @@ from docs seems this was never a spec
// Must fetch it individually
else if (contents.FolderID == UUID.Zero)
{
- InventoryFolderBase containingFolder = new InventoryFolderBase();
- containingFolder.ID = freq.folder_id;
- containingFolder.Owner = freq.owner_id;
- containingFolder = m_InventoryService.GetFolder(containingFolder);
+ InventoryFolderBase containingFolder = m_InventoryService.GetFolder(freq.owner_id, freq.folder_id);
if (containingFolder != null)
{
@@ -759,12 +753,9 @@ from docs seems this was never a spec
m_log.WarnFormat("[WEB FETCH INV DESC HANDLER]: GetMultipleItems failed. Falling back to fetching inventory items one by one.");
linked = new InventoryItemBase[itemIDs.Count];
int i = 0;
- InventoryItemBase item = new InventoryItemBase();
- item.Owner = freq.owner_id;
foreach (UUID id in itemIDs)
{
- item.ID = id;
- linked[i++] = m_InventoryService.GetItem(item);
+ linked[i++] = m_InventoryService.GetItem(freq.owner_id, id);
}
}
@@ -850,4 +841,4 @@ from docs seems this was never a spec
public InventoryCollection Collection;
public int Descendents;
}
-}
\ No newline at end of file
+}
diff --git a/OpenSim/Capabilities/Handlers/FetchInventory/FetchInventory2Handler.cs b/OpenSim/Capabilities/Handlers/FetchInventory/FetchInventory2Handler.cs
index 1753f60411..8200a96caf 100644
--- a/OpenSim/Capabilities/Handlers/FetchInventory/FetchInventory2Handler.cs
+++ b/OpenSim/Capabilities/Handlers/FetchInventory/FetchInventory2Handler.cs
@@ -81,24 +81,15 @@ namespace OpenSim.Capabilities.Handlers
// OMG!!! One by one!!! This is fallback code, in case the backend isn't updated
m_log.WarnFormat("[FETCH INVENTORY HANDLER]: GetMultipleItems failed. Falling back to fetching inventory items one by one.");
items = new InventoryItemBase[itemsRequested.Count];
- InventoryItemBase item = new InventoryItemBase();
- item.Owner = m_agentID;
foreach (UUID id in itemIDs)
- {
- item.ID = id;
- items[i++] = m_inventoryService.GetItem(item);
- }
+ items[i++] = m_inventoryService.GetItem(m_agentID, id);
}
}
else
{
items = new InventoryItemBase[itemsRequested.Count];
- InventoryItemBase item = new InventoryItemBase();
foreach (UUID id in itemIDs)
- {
- item.ID = id;
- items[i++] = m_inventoryService.GetItem(item);
- }
+ items[i++] = m_inventoryService.GetItem(UUID.Zero, id);
}
foreach (InventoryItemBase item in items)
@@ -152,4 +143,4 @@ namespace OpenSim.Capabilities.Handlers
return llsdItem;
}
}
-}
\ No newline at end of file
+}
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs
index 39ba708a8a..19619c1e1a 100644
--- a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs
+++ b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs
@@ -1386,7 +1386,7 @@ namespace OpenSim.Region.ClientStack.Linden
IClientAPI client = null;
m_Scene.TryGetClient(m_HostCapsObj.AgentID, out client);
- item = m_Scene.InventoryService.GetItem(new InventoryItemBase(itemID));
+ item = m_Scene.InventoryService.GetItem(m_HostCapsObj.AgentID, itemID);
if (item != null)
{
string message;
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
index 0cc630f608..8f03a0ac7a 100644
--- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
@@ -898,8 +898,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
string sceneObjectXml = SceneObjectSerializer.ToOriginalXmlFormat(grp, scriptedState);
- InventoryItemBase item = new InventoryItemBase(grp.FromItemID, sp.UUID);
- item = m_scene.InventoryService.GetItem(item);
+ InventoryItemBase item = m_scene.InventoryService.GetItem(sp.UUID, grp.FromItemID);
if (item != null)
{
@@ -1223,8 +1222,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
return;
}
- InventoryItemBase item = new InventoryItemBase(itemID, sp.UUID);
- item = m_scene.InventoryService.GetItem(item);
+ InventoryItemBase item = m_scene.InventoryService.GetItem(sp.UUID, itemID);
if (item == null)
return;
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/Tests/AttachmentsModuleTests.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/Tests/AttachmentsModuleTests.cs
index 10b2ff6ed9..a83342c902 100644
--- a/OpenSim/Region/CoreModules/Avatar/Attachments/Tests/AttachmentsModuleTests.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Attachments/Tests/AttachmentsModuleTests.cs
@@ -219,7 +219,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests
// sp.Appearance.GetAttachpoint(attSo.FromItemID),
// Is.EqualTo((int)AttachmentPoint.Chest));
- InventoryItemBase attachmentItem = scene.InventoryService.GetItem(new InventoryItemBase(attSo.FromItemID));
+ InventoryItemBase attachmentItem = scene.InventoryService.GetItem(sp.UUID, attSo.FromItemID);
Assert.That(attachmentItem, Is.Not.Null);
Assert.That(attachmentItem.Name, Is.EqualTo(attName));
@@ -266,7 +266,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests
// sp.Appearance.GetAttachpoint(attSo.FromItemID),
// Is.EqualTo((int)AttachmentPoint.LeftHand));
- InventoryItemBase attachmentItem = scene.InventoryService.GetItem(new InventoryItemBase(attSo.FromItemID));
+ InventoryItemBase attachmentItem = scene.InventoryService.GetItem(sp.UUID, attSo.FromItemID);
Assert.That(attachmentItem, Is.Not.Null);
Assert.That(attachmentItem.Name, Is.EqualTo(so.Name));
@@ -299,7 +299,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests
// sp.Appearance.GetAttachpoint(attSo.FromItemID),
// Is.EqualTo((int)AttachmentPoint.LeftHand));
- InventoryItemBase attachmentItem = scene.InventoryService.GetItem(new InventoryItemBase(attSo.FromItemID));
+ InventoryItemBase attachmentItem = scene.InventoryService.GetItem(sp.UUID, attSo.FromItemID);
Assert.That(attachmentItem, Is.Not.Null);
Assert.That(attachmentItem.Name, Is.EqualTo(so2.Name));
@@ -332,7 +332,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests
// sp.Appearance.GetAttachpoint(attSo.FromItemID),
// Is.EqualTo((int)AttachmentPoint.LeftHand));
- InventoryItemBase attachmentItem = scene.InventoryService.GetItem(new InventoryItemBase(attSo.FromItemID));
+ InventoryItemBase attachmentItem = scene.InventoryService.GetItem(sp.UUID, attSo.FromItemID);
Assert.That(attachmentItem, Is.Not.Null);
Assert.That(attachmentItem.Name, Is.EqualTo(so2.Name));
@@ -600,7 +600,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests
// Assert.That(sp.Appearance.GetAttachments().Count, Is.EqualTo(0));
// Check item status
- Assert.That(scene.InventoryService.GetItem(new InventoryItemBase(attItem.ID)), Is.Null);
+ Assert.That(scene.InventoryService.GetItem(sp.UUID, attItem.ID), Is.Null);
// Check object in scene
SceneObjectGroup soInScene = scene.GetSceneObjectGroup("att");
@@ -679,7 +679,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests
scene.AttachmentsModule.DetachSingleAttachmentToInv(sp, rezzedSo);
- InventoryItemBase userItemUpdated = scene.InventoryService.GetItem(userItem);
+ InventoryItemBase userItemUpdated = scene.InventoryService.GetItem(userItem.Owner, userItem.ID);
AssetBase asset = scene.AssetService.Get(userItemUpdated.AssetID.ToString());
// TODO: It would probably be better here to check script state via the saving and retrieval of state
diff --git a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs
index c8003831fa..08b276dba0 100644
--- a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs
@@ -904,8 +904,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
continue;
}
- InventoryItemBase baseItem = new InventoryItemBase(appearance.Wearables[i][j].ItemID, userID);
- baseItem = invService.GetItem(baseItem);
+ InventoryItemBase baseItem = invService.GetItem(userID, appearance.Wearables[i][j].ItemID);
if (baseItem != null)
{
diff --git a/OpenSim/Region/CoreModules/Avatar/Friends/CallingCardModule.cs b/OpenSim/Region/CoreModules/Avatar/Friends/CallingCardModule.cs
index eb23e8386c..e5bf919e8e 100644
--- a/OpenSim/Region/CoreModules/Avatar/Friends/CallingCardModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Friends/CallingCardModule.cs
@@ -239,8 +239,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
InventoryFolderBase trashFolder =
invService.GetFolderForType(client.AgentId, FolderType.Trash);
- InventoryItemBase item = new InventoryItemBase(transactionID, client.AgentId);
- item = invService.GetItem(item);
+ InventoryItemBase item = invService.GetItem(client.AgentId, transactionID);
if (item != null && trashFolder != null)
{
diff --git a/OpenSim/Region/CoreModules/Avatar/Gestures/GesturesModule.cs b/OpenSim/Region/CoreModules/Avatar/Gestures/GesturesModule.cs
index 095c57b2bc..4efcd3b629 100644
--- a/OpenSim/Region/CoreModules/Avatar/Gestures/GesturesModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Gestures/GesturesModule.cs
@@ -86,8 +86,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Gestures
{
IInventoryService invService = m_scene.InventoryService;
- InventoryItemBase item = new InventoryItemBase(gestureId, client.AgentId);
- item = invService.GetItem(item);
+ InventoryItemBase item = invService.GetItem(client.AgentId, gestureId);
if (item != null)
{
item.Flags |= 1;
@@ -102,8 +101,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Gestures
{
IInventoryService invService = m_scene.InventoryService;
- InventoryItemBase item = new InventoryItemBase(gestureId, client.AgentId);
- item = invService.GetItem(item);
+ InventoryItemBase item = invService.GetItem(client.AgentId, gestureId);
if (item != null)
{
item.Flags &= ~(uint)1;
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs
index 085328c84a..6c2cf0aeef 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs
@@ -270,8 +270,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
// RLV uses this
if (im.dialog == (byte) InstantMessageDialog.TaskInventoryAccepted)
{
- InventoryFolderBase folder = new InventoryFolderBase(inventoryID, client.AgentId);
- folder = invService.GetFolder(folder);
+ InventoryFolderBase folder = invService.GetFolder(client.AgentId, inventoryID);
if (folder != null)
{
@@ -280,8 +279,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
UUID destFolderID = new UUID(im.binaryBucket, 0);
if (destFolderID != UUID.Zero)
{
- InventoryFolderBase destFolder = new InventoryFolderBase(destFolderID, client.AgentId);
- destFolder = invService.GetFolder(destFolder);
+ InventoryFolderBase destFolder = invService.GetFolder(client.AgentId, destFolderID);
if (destFolder != null)
{
if (folder.ParentID != destFolder.ID)
@@ -339,8 +337,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
UUID inventoryID = new UUID(im.imSessionID); // The inventory item/folder, back from it's trip
- InventoryItemBase item = new InventoryItemBase(inventoryID, client.AgentId);
- item = invService.GetItem(item);
+ InventoryItemBase item = invService.GetItem(client.AgentId, inventoryID);
InventoryFolderBase folder = null;
UUID? previousParentFolderID = null;
@@ -354,8 +351,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
}
else
{
- folder = new InventoryFolderBase(inventoryID, client.AgentId);
- folder = invService.GetFolder(folder);
+ folder = invService.GetFolder(client.AgentId, inventoryID);
if (folder != null) // It's a folder
{
@@ -368,9 +364,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
// Tell client about updates to original parent and new parent (this should probably be factored with existing move item/folder code).
if (previousParentFolderID != null)
{
- InventoryFolderBase previousParentFolder
- = new InventoryFolderBase((UUID)previousParentFolderID, client.AgentId);
- previousParentFolder = invService.GetFolder(previousParentFolder);
+ InventoryFolderBase previousParentFolder = invService.GetFolder(client.AgentId, (UUID)previousParentFolderID);
scene.SendInventoryUpdate(client, previousParentFolder, true, true);
scene.SendInventoryUpdate(client, destinationFolder, true, true);
@@ -392,8 +386,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
UUID inventoryID = new UUID(im.imSessionID); // The inventory item/folder, back from it's trip
- InventoryItemBase item = new InventoryItemBase(inventoryID, client.AgentId);
- item = invService.GetItem(item);
+ InventoryItemBase item = invService.GetItem(client.AgentId, inventoryID);
InventoryFolderBase folder = null;
UUID? previousParentFolderID = null;
@@ -410,8 +403,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
}
else
{
- folder = new InventoryFolderBase(inventoryID, client.AgentId);
- folder = invService.GetFolder(folder);
+ folder = invService.GetFolder(client.AgentId, inventoryID);
if (folder != null & trashFolder != null)
{
@@ -439,9 +431,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
// Tell client about updates to original parent and new parent (this should probably be factored with existing move item/folder code).
else if (previousParentFolderID != null)
{
- InventoryFolderBase previousParentFolder
- = new InventoryFolderBase((UUID)previousParentFolderID, client.AgentId);
- previousParentFolder = invService.GetFolder(previousParentFolder);
+ InventoryFolderBase previousParentFolder = invService.GetFolder(client.AgentId, (UUID)previousParentFolderID);
scene.SendInventoryUpdate(client, previousParentFolder, true, true);
scene.SendInventoryUpdate(client, trashFolder, true, true);
@@ -500,10 +490,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
{
UUID folderID = new UUID(im.binaryBucket, 1);
- InventoryFolderBase given =
- new InventoryFolderBase(folderID, recipientID);
InventoryFolderBase folder =
- scene.InventoryService.GetFolder(given);
+ scene.InventoryService.GetFolder(recipientID, folderID);
if (folder != null)
user.ControllingClient.SendBulkUpdateInventory(folder);
@@ -512,10 +500,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
{
UUID itemID = new UUID(im.binaryBucket, 1);
- InventoryItemBase given =
- new InventoryItemBase(itemID, recipientID);
InventoryItemBase item =
- scene.InventoryService.GetItem(given);
+ scene.InventoryService.GetItem(recipientID, itemID);
if (item != null)
{
@@ -538,10 +524,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
{
UUID folderID = new UUID(im.imSessionID);
- InventoryFolderBase given =
- new InventoryFolderBase(folderID, recipientID);
InventoryFolderBase folder =
- scene.InventoryService.GetFolder(given);
+ scene.InventoryService.GetFolder(recipientID, folderID);
if (folder != null)
user.ControllingClient.SendBulkUpdateInventory(folder);
@@ -550,10 +534,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
{
UUID itemID = new UUID(im.imSessionID);
- InventoryItemBase given =
- new InventoryItemBase(itemID, recipientID);
InventoryItemBase item =
- scene.InventoryService.GetItem(given);
+ scene.InventoryService.GetItem(recipientID, itemID);
if (item != null)
{
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs
index dfc880a9ff..a9aaf124b9 100644
--- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs
@@ -95,8 +95,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
foreach (AvatarAttachment att in a.GetAttachments())
{
- InventoryItemBase item = new InventoryItemBase(att.ItemID, account.PrincipalID);
- item = Scene.InventoryService.GetItem(item);
+ InventoryItemBase item = Scene.InventoryService.GetItem(account.PrincipalID, att.ItemID);
if (item != null)
a.SetAttachment(att.AttachPoint, att.ItemID, item.AssetID);
else
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs
index 06a8f25baf..4119f909c7 100644
--- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs
@@ -314,9 +314,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
//if (fromTaskID.Equals(UUID.Zero))
//{
- InventoryItemBase item = new InventoryItemBase(itemID);
- item.Owner = remoteClient.AgentId;
- item = m_Scene.InventoryService.GetItem(item);
+ InventoryItemBase item = m_Scene.InventoryService.GetItem(remoteClient.AgentId, itemID);
//if (item == null)
//{ // Fetch the item
// item = new InventoryItemBase();
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
index 64233d5be0..781b9ffcbd 100644
--- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
@@ -184,8 +184,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
if (!m_Scene.Permissions.CanCreateUserInventory(invType, remoteClient.AgentId))
return;
- InventoryFolderBase f = new InventoryFolderBase(folderID, remoteClient.AgentId);
- InventoryFolderBase folder = m_Scene.InventoryService.GetFolder(f);
+ InventoryFolderBase folder = m_Scene.InventoryService.GetFolder(remoteClient.AgentId, folderID);
if (folder == null && Enum.IsDefined(typeof(FolderType), (sbyte)invType))
{
@@ -260,8 +259,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
///
public virtual UUID CapsUpdateInventoryItemAsset(IClientAPI remoteClient, UUID itemID, byte[] data)
{
- InventoryItemBase item = new InventoryItemBase(itemID, remoteClient.AgentId);
- item = m_Scene.InventoryService.GetItem(item);
+ InventoryItemBase item = m_Scene.InventoryService.GetItem(remoteClient.AgentId, itemID);
if (item.Owner != remoteClient.AgentId)
return UUID.Zero;
@@ -719,8 +717,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
if (DeRezAction.SaveToExistingUserInventoryItem == action)
{
- item = new InventoryItemBase(so.RootPart.FromUserInventoryItemID, userID);
- item = m_Scene.InventoryService.GetItem(item);
+ item = m_Scene.InventoryService.GetItem(userID, so.RootPart.FromUserInventoryItemID);
//item = userInfo.RootFolder.FindItem(
// objectGroup.RootPart.FromUserInventoryItemID);
@@ -792,9 +789,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
{
if (so.FromFolderID != UUID.Zero && so.RootPart.OwnerID == remoteClient.AgentId)
{
- InventoryFolderBase f = new InventoryFolderBase(so.FromFolderID, userID);
- if (f != null)
- folder = m_Scene.InventoryService.GetFolder(f);
+ folder = m_Scene.InventoryService.GetFolder(userID, so.FromFolderID);
if(folder.Type == 14 || folder.Type == 16)
{
@@ -830,8 +825,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
bool RezSelected, bool RemoveItem, UUID fromTaskID, bool attachment)
{
// m_log.DebugFormat("[INVENTORY ACCESS MODULE]: RezObject for {0}, item {1}", remoteClient.Name, itemID);
- InventoryItemBase item = new InventoryItemBase(itemID, remoteClient.AgentId);
- item = m_Scene.InventoryService.GetItem(item);
+ InventoryItemBase item = m_Scene.InventoryService.GetItem(remoteClient.AgentId, itemID);
if (item == null)
{
@@ -1289,8 +1283,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
protected virtual InventoryItemBase GetItem(UUID agentID, UUID itemID)
{
IInventoryService invService = m_Scene.RequestModuleInterface();
- InventoryItemBase item = new InventoryItemBase(itemID, agentID);
- item = invService.GetItem(item);
+ InventoryItemBase item = invService.GetItem(agentID, itemID);
if (item != null && item.CreatorData != null && item.CreatorData != string.Empty)
UserManagementModule.AddUser(item.CreatorIdAsUuid, item.CreatorData);
diff --git a/OpenSim/Region/CoreModules/Framework/Library/LocalInventoryService.cs b/OpenSim/Region/CoreModules/Framework/Library/LocalInventoryService.cs
index e1e1838b2f..21e00b25be 100644
--- a/OpenSim/Region/CoreModules/Framework/Library/LocalInventoryService.cs
+++ b/OpenSim/Region/CoreModules/Framework/Library/LocalInventoryService.cs
@@ -103,13 +103,8 @@ namespace OpenSim.Region.CoreModules.Framework.Library
{
InventoryItemBase[] itemColl = new InventoryItemBase[itemIDs.Length];
int i = 0;
- InventoryItemBase item = new InventoryItemBase();
- item.Owner = principalID;
foreach (UUID fid in itemIDs)
- {
- item.ID = fid;
- itemColl[i++] = GetItem(item);
- }
+ itemColl[i++] = GetItem(principalID, fid);
return itemColl;
}
@@ -239,14 +234,14 @@ namespace OpenSim.Region.CoreModules.Framework.Library
///
///
///
- public InventoryItemBase GetItem(InventoryItemBase item) { return null; }
+ public InventoryItemBase GetItem(UUID principalID, UUID itemID) { return null; }
///
/// Get a folder, given by its UUID
///
///
///
- public InventoryFolderBase GetFolder(InventoryFolderBase folder) { return null; }
+ public InventoryFolderBase GetFolder(UUID principalID, UUID folderID) { return null; }
///
/// Does the given user have an inventory structure?
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs
index 48f228a654..863560b5e2 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs
@@ -598,21 +598,19 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
return connector.DeleteItems(ownerID, itemIDs);
}
- public InventoryItemBase GetItem(InventoryItemBase item)
+ public InventoryItemBase GetItem(UUID principalID, UUID itemID)
{
- if (item == null)
- return null;
//m_log.Debug("[HG INVENTORY CONNECTOR]: GetItem " + item.ID);
- string invURL = GetInventoryServiceURL(item.Owner);
+ string invURL = GetInventoryServiceURL(principalID);
if (invURL == null) // not there, forward to local inventory connector to resolve
lock (m_Lock)
- return m_LocalGridInventoryService.GetItem(item);
+ return m_LocalGridInventoryService.GetItem(principalID, itemID);
IInventoryService connector = GetConnector(invURL);
- return connector.GetItem(item);
+ return connector.GetItem(principalID, itemID);
}
public InventoryItemBase[] GetMultipleItems(UUID userID, UUID[] itemIDs)
@@ -632,22 +630,19 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
return connector.GetMultipleItems(userID, itemIDs);
}
- public InventoryFolderBase GetFolder(InventoryFolderBase folder)
+ public InventoryFolderBase GetFolder(UUID principalID, UUID folderID)
{
- if (folder == null)
- return null;
-
//m_log.Debug("[HG INVENTORY CONNECTOR]: GetFolder " + folder.ID);
- string invURL = GetInventoryServiceURL(folder.Owner);
+ string invURL = GetInventoryServiceURL(principalID);
if (invURL == null) // not there, forward to local inventory connector to resolve
lock (m_Lock)
- return m_LocalGridInventoryService.GetFolder(folder);
+ return m_LocalGridInventoryService.GetFolder(principalID, folderID);
IInventoryService connector = GetConnector(invURL);
- return connector.GetFolder(folder);
+ return connector.GetFolder(principalID, folderID);
}
public bool HasInventoryForUser(UUID userID)
@@ -710,4 +705,4 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
return connector;
}
}
-}
\ No newline at end of file
+}
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs
index 20d4e02786..0d36725a5b 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs
@@ -292,13 +292,13 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
return m_InventoryService.DeleteItems(ownerID, itemIDs);
}
- public InventoryItemBase GetItem(InventoryItemBase item)
+ public InventoryItemBase GetItem(UUID principalID, UUID itemID)
{
// m_log.DebugFormat("[LOCAL INVENTORY SERVICES CONNECTOR]: Requesting inventory item {0}", item.ID);
// UUID requestedItemId = item.ID;
- item = m_InventoryService.GetItem(item);
+ InventoryItemBase item = m_InventoryService.GetItem(principalID, itemID);
// if (null == item)
// m_log.ErrorFormat(
@@ -312,9 +312,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
return m_InventoryService.GetMultipleItems(userID, itemIDs);
}
- public InventoryFolderBase GetFolder(InventoryFolderBase folder)
+ public InventoryFolderBase GetFolder(UUID principalID, UUID folderID)
{
- return m_InventoryService.GetFolder(folder);
+ return m_InventoryService.GetFolder(principalID, folderID);
}
///
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteXInventoryServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteXInventoryServiceConnector.cs
index 978b9d9932..62b44b1106 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteXInventoryServiceConnector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteXInventoryServiceConnector.cs
@@ -292,15 +292,13 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
return m_RemoteConnector.DeleteItems(ownerID, itemIDs);
}
- public InventoryItemBase GetItem(InventoryItemBase item)
+ public InventoryItemBase GetItem(UUID userID, UUID itemID)
{
//m_log.DebugFormat("[XINVENTORY CONNECTOR]: GetItem {0}", item.ID);
- if (item == null)
- return null;
if (m_RemoteConnector == null)
m_log.DebugFormat("[XINVENTORY CONNECTOR]: connector stub is null!!!");
- return m_RemoteConnector.GetItem(item);
+ return m_RemoteConnector.GetItem(userID, itemID);
}
public InventoryItemBase[] GetMultipleItems(UUID userID, UUID[] itemIDs)
@@ -311,13 +309,11 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
return m_RemoteConnector.GetMultipleItems(userID, itemIDs);
}
- public InventoryFolderBase GetFolder(InventoryFolderBase folder)
+ public InventoryFolderBase GetFolder(UUID userID, UUID folderID)
{
//m_log.DebugFormat("[XINVENTORY CONNECTOR]: GetFolder {0}", folder.ID);
- if (folder == null)
- return null;
- return m_RemoteConnector.GetFolder(folder);
+ return m_RemoteConnector.GetFolder(userID, folderID);
}
public bool HasInventoryForUser(UUID userID)
@@ -337,4 +333,4 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
#endregion
}
-}
\ No newline at end of file
+}
diff --git a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs
index 303f8a8899..06900f06b4 100644
--- a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs
+++ b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs
@@ -1100,8 +1100,7 @@ namespace OpenSim.Region.CoreModules.World.Permissions
if (objectID == UUID.Zero) // User inventory
{
IInventoryService invService = m_scene.InventoryService;
- InventoryItemBase assetRequestItem = new InventoryItemBase(notecard, user);
- assetRequestItem = invService.GetItem(assetRequestItem);
+ InventoryItemBase assetRequestItem = invService.GetItem(user, notecard);
if (assetRequestItem == null && LibraryRootFolder != null) // Library item
{
assetRequestItem = LibraryRootFolder.FindItem(notecard);
@@ -1629,8 +1628,7 @@ namespace OpenSim.Region.CoreModules.World.Permissions
if (objectID == UUID.Zero) // User inventory
{
IInventoryService invService = m_scene.InventoryService;
- InventoryItemBase assetRequestItem = new InventoryItemBase(script, user);
- assetRequestItem = invService.GetItem(assetRequestItem);
+ InventoryItemBase assetRequestItem = invService.GetItem(user, script);
if (assetRequestItem == null && LibraryRootFolder != null) // Library item
{
assetRequestItem = LibraryRootFolder.FindItem(script);
@@ -1726,8 +1724,7 @@ namespace OpenSim.Region.CoreModules.World.Permissions
if (objectID == UUID.Zero) // User inventory
{
IInventoryService invService = m_scene.InventoryService;
- InventoryItemBase assetRequestItem = new InventoryItemBase(notecard, user);
- assetRequestItem = invService.GetItem(assetRequestItem);
+ InventoryItemBase assetRequestItem = invService.GetItem(user, notecard);
if (assetRequestItem == null && LibraryRootFolder != null) // Library item
{
assetRequestItem = LibraryRootFolder.FindItem(notecard);
diff --git a/OpenSim/Region/Framework/Scenes/AsyncInventorySender.cs b/OpenSim/Region/Framework/Scenes/AsyncInventorySender.cs
index d9d2e64d87..4362e282ac 100644
--- a/OpenSim/Region/Framework/Scenes/AsyncInventorySender.cs
+++ b/OpenSim/Region/Framework/Scenes/AsyncInventorySender.cs
@@ -143,8 +143,7 @@ namespace OpenSim.Region.Framework.Scenes
// m_log.DebugFormat(
// "[ASYNC INVENTORY SENDER]: Handling request from {0} for {1} on queue", fh.Client.Name, fh.ItemID);
- InventoryItemBase item = new InventoryItemBase(fh.ItemID, fh.Client.AgentId);
- item = m_scene.InventoryService.GetItem(item);
+ InventoryItemBase item = m_scene.InventoryService.GetItem(fh.Client.AgentId, fh.ItemID);
if (item != null)
fh.Client.SendInventoryItemDetails(item.Owner, item);
@@ -153,4 +152,4 @@ namespace OpenSim.Region.Framework.Scenes
}
}
}
-}
\ No newline at end of file
+}
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index 30bc75bfa9..f2df364cf1 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -223,8 +223,7 @@ namespace OpenSim.Region.Framework.Scenes
if (core.TryGet(out inv))
{
- InventoryFolderBase parent = new InventoryFolderBase(f.ParentID, f.Owner);
- parent = InventoryService.GetFolder(parent);
+ InventoryFolderBase parent = InventoryService.GetFolder(f.Owner, f.ParentID);
inv.SendRemoveInventoryItems(new UUID[] { item.ID });
inv.SendBulkUpdateInventory(new InventoryFolderBase[0], new InventoryItemBase[] { item });
string message = "The item was placed in folder " + f.Name;
@@ -407,8 +406,7 @@ namespace OpenSim.Region.Framework.Scenes
// inventory. Rut-Roh. Whatever. Make this secure. Yeah.
//
// Passing something to another avatar or a an object will already
- InventoryItemBase item = new InventoryItemBase(itemID, remoteClient.AgentId);
- item = InventoryService.GetItem(item);
+ InventoryItemBase item = InventoryService.GetItem(remoteClient.AgentId, itemID);
if (item != null)
{
@@ -585,8 +583,7 @@ namespace OpenSim.Region.Framework.Scenes
return null;
}
- InventoryItemBase item = new InventoryItemBase(itemId, senderId);
- item = InventoryService.GetItem(item);
+ InventoryItemBase item = InventoryService.GetItem(senderId, itemId);
if (item == null)
{
@@ -807,7 +804,7 @@ namespace OpenSim.Region.Framework.Scenes
UUID recipientId, UUID senderId, UUID folderId, UUID recipientParentFolderId)
{
//// Retrieve the folder from the sender
- InventoryFolderBase folder = InventoryService.GetFolder(new InventoryFolderBase(folderId, senderId));
+ InventoryFolderBase folder = InventoryService.GetFolder(senderId, folderId);
if (null == folder)
{
m_log.ErrorFormat(
@@ -868,8 +865,7 @@ namespace OpenSim.Region.Framework.Scenes
if (item == null)
{
- item = new InventoryItemBase(oldItemID, remoteClient.AgentId);
- item = InventoryService.GetItem(item);
+ item = InventoryService.GetItem(remoteClient.AgentId, oldItemID);
if (item == null)
{
@@ -953,7 +949,7 @@ namespace OpenSim.Region.Framework.Scenes
foreach (InventoryItemBase b in items)
{
CopyInventoryItem(remoteClient, 0, remoteClient.AgentId, b.ID, b.Folder, null);
- InventoryItemBase n = InventoryService.GetItem(b);
+ InventoryItemBase n = InventoryService.GetItem(b.Owner, b.ID);
n.Folder = destfolder;
moveitems.Add(n);
remoteClient.SendInventoryItemCreateUpdate(n, 0);
@@ -1605,8 +1601,7 @@ namespace OpenSim.Region.Framework.Scenes
InventoryCollection contents = InventoryService.GetFolderContent(client.AgentId, folder.ID);
// Fetch the folder itself to get its current version
- InventoryFolderBase containingFolder = new InventoryFolderBase(folder.ID, client.AgentId);
- containingFolder = InventoryService.GetFolder(containingFolder);
+ InventoryFolderBase containingFolder = InventoryService.GetFolder(client.AgentId, folder.ID);
// m_log.DebugFormat("[AGENT INVENTORY]: Sending inventory folder contents ({0} nodes) for \"{1}\" to {2} {3}",
// contents.Folders.Count + contents.Items.Count, containingFolder.Name, client.FirstName, client.LastName);
@@ -1620,7 +1615,7 @@ namespace OpenSim.Region.Framework.Scenes
{
if (item.AssetType == (int)AssetType.Link)
{
- InventoryItemBase linkedItem = InventoryService.GetItem(new InventoryItemBase(item.AssetID));
+ InventoryItemBase linkedItem = InventoryService.GetItem(client.AgentId, item.AssetID);
// Take care of genuinely broken links where the target doesn't exist
// HACK: Also, don't follow up links that just point to other links. In theory this is legitimate,
@@ -1680,8 +1675,7 @@ namespace OpenSim.Region.Framework.Scenes
UUID copyID = UUID.Random();
if (itemID != UUID.Zero)
{
- InventoryItemBase item = new InventoryItemBase(itemID, remoteClient.AgentId);
- item = InventoryService.GetItem(item);
+ InventoryItemBase item = InventoryService.GetItem(remoteClient.AgentId, itemID);
// Try library
if (null == item && LibraryService != null && LibraryService.LibraryRootFolder != null)
@@ -1836,8 +1830,7 @@ namespace OpenSim.Region.Framework.Scenes
public SceneObjectPart RezScriptFromAgentInventory(UUID agentID, UUID fromItemID, uint localID)
{
UUID copyID = UUID.Random();
- InventoryItemBase item = new InventoryItemBase(fromItemID, agentID);
- item = InventoryService.GetItem(item);
+ InventoryItemBase item = InventoryService.GetItem(agentID, fromItemID);
// Try library
// XXX clumsy, possibly should be one call
diff --git a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
index 34b9c5fc6c..c49edd16e8 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
@@ -627,8 +627,7 @@ namespace OpenSim.Region.Framework.Scenes
// m_log.DebugFormat(
// "[AGENT INVENTORY]: Updating inventory folder {0} {1} for {2} {3}", folderID, name, remoteClient.Name, remoteClient.AgentId);
- InventoryFolderBase folder = new InventoryFolderBase(folderID, remoteClient.AgentId);
- folder = InventoryService.GetFolder(folder);
+ InventoryFolderBase folder = InventoryService.GetFolder(remoteClient.AgentId, folderID);
if (folder != null)
{
folder.Name = name;
@@ -645,8 +644,7 @@ namespace OpenSim.Region.Framework.Scenes
public void HandleMoveInventoryFolder(IClientAPI remoteClient, UUID folderID, UUID parentID)
{
- InventoryFolderBase folder = new InventoryFolderBase(folderID, remoteClient.AgentId);
- folder = InventoryService.GetFolder(folder);
+ InventoryFolderBase folder = InventoryService.GetFolder(remoteClient.AgentId, folderID);
if (folder != null)
{
folder.ParentID = parentID;
diff --git a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs
index cb6ceb5dfc..ddeac6689a 100644
--- a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs
+++ b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs
@@ -505,8 +505,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
//variable will be set to null and attachment will
//not be included with the group notice.
Scene scene = (Scene)remoteClient.Scene;
- item = new InventoryItemBase(itemID, ownerID);
- item = scene.InventoryService.GetItem(item);
+ item = scene.InventoryService.GetItem(ownerID, itemID);
if (item != null)
{
diff --git a/OpenSim/Server/Handlers/Inventory/InventoryServerInConnector.cs b/OpenSim/Server/Handlers/Inventory/InventoryServerInConnector.cs
index b295446c19..0bab5aa826 100644
--- a/OpenSim/Server/Handlers/Inventory/InventoryServerInConnector.cs
+++ b/OpenSim/Server/Handlers/Inventory/InventoryServerInConnector.cs
@@ -114,12 +114,12 @@ namespace OpenSim.Server.Handlers.Inventory
"POST", "/DeleteItem/", DeleteItems, CheckAuthSession));
m_httpServer.AddStreamHandler(
- new RestDeserialiseSecureHandler(
- "POST", "/QueryItem/", m_InventoryService.GetItem, CheckAuthSession));
+ new RestDeserialiseSecureHandler(
+ "POST", "/QueryItem/", GetItem, CheckAuthSession));
m_httpServer.AddStreamHandler(
- new RestDeserialiseSecureHandler(
- "POST", "/QueryFolder/", m_InventoryService.GetFolder, CheckAuthSession));
+ new RestDeserialiseSecureHandler(
+ "POST", "/QueryFolder/", GetFolder, CheckAuthSession));
m_httpServer.AddStreamHandler(
new RestDeserialiseTrustedHandler(
@@ -205,6 +205,16 @@ namespace OpenSim.Server.Handlers.Inventory
return new Dictionary();
}
+ public InventoryItemBase GetItem(Guid guid)
+ {
+ return m_InventoryService.GetItem(UUID.Zero, new UUID(guid));
+ }
+
+ public InventoryFolderBase GetFolder(Guid guid)
+ {
+ return m_InventoryService.GetFolder(UUID.Zero, new UUID(guid));
+ }
+
public InventoryCollection GetFolderContent(Guid guid)
{
return m_InventoryService.GetFolderContent(UUID.Zero, new UUID(guid));
diff --git a/OpenSim/Server/Handlers/Inventory/XInventoryInConnector.cs b/OpenSim/Server/Handlers/Inventory/XInventoryInConnector.cs
index 5c4e7a9be4..96d6451fed 100644
--- a/OpenSim/Server/Handlers/Inventory/XInventoryInConnector.cs
+++ b/OpenSim/Server/Handlers/Inventory/XInventoryInConnector.cs
@@ -566,9 +566,11 @@ namespace OpenSim.Server.Handlers.Inventory
Dictionary result = new Dictionary();
UUID id = UUID.Zero;
UUID.TryParse(request["ID"].ToString(), out id);
+ UUID user = UUID.Zero;
+ if (request.ContainsKey("PRINCIPAL"))
+ UUID.TryParse(request["PRINCIPAL"].ToString(), out user);
- InventoryItemBase item = new InventoryItemBase(id);
- item = m_InventoryService.GetItem(item);
+ InventoryItemBase item = m_InventoryService.GetItem(user, id);
if (item != null)
result["item"] = EncodeItem(item);
@@ -617,9 +619,11 @@ namespace OpenSim.Server.Handlers.Inventory
Dictionary result = new Dictionary();
UUID id = UUID.Zero;
UUID.TryParse(request["ID"].ToString(), out id);
+ UUID user = UUID.Zero;
+ if (request.ContainsKey("PRINCIPAL"))
+ UUID.TryParse(request["PRINCIPAL"].ToString(), out user);
- InventoryFolderBase folder = new InventoryFolderBase(id);
- folder = m_InventoryService.GetFolder(folder);
+ InventoryFolderBase folder = m_InventoryService.GetFolder(user, id);
if (folder != null)
result["folder"] = EncodeFolder(folder);
diff --git a/OpenSim/Services/Connectors/Inventory/XInventoryServicesConnector.cs b/OpenSim/Services/Connectors/Inventory/XInventoryServicesConnector.cs
index c7d658a2cc..d80e660553 100644
--- a/OpenSim/Services/Connectors/Inventory/XInventoryServicesConnector.cs
+++ b/OpenSim/Services/Connectors/Inventory/XInventoryServicesConnector.cs
@@ -520,10 +520,10 @@ namespace OpenSim.Services.Connectors
return CheckReturn(ret);
}
- public InventoryItemBase GetItem(InventoryItemBase item)
+ public InventoryItemBase GetItem(UUID principalID, UUID itemID)
{
InventoryItemBase retrieved = null;
- if (m_ItemCache.TryGetValue(item.ID, out retrieved))
+ if (m_ItemCache.TryGetValue(itemID, out retrieved))
{
return retrieved;
}
@@ -532,7 +532,8 @@ namespace OpenSim.Services.Connectors
{
Dictionary ret = MakeRequest("GETITEM",
new Dictionary {
- { "ID", item.ID.ToString() }
+ { "ID", itemID.ToString() },
+ { "PRINCIPAL", principalID.ToString() }
});
if (!CheckReturn(ret))
@@ -545,7 +546,7 @@ namespace OpenSim.Services.Connectors
m_log.Error("[XINVENTORY SERVICES CONNECTOR]: Exception in GetItem: ", e);
}
- m_ItemCache.AddOrUpdate(item.ID, retrieved, CACHE_EXPIRATION_SECONDS);
+ m_ItemCache.AddOrUpdate(itemID, retrieved, CACHE_EXPIRATION_SECONDS);
return retrieved;
}
@@ -613,13 +614,14 @@ namespace OpenSim.Services.Connectors
return itemArr;
}
- public InventoryFolderBase GetFolder(InventoryFolderBase folder)
+ public InventoryFolderBase GetFolder(UUID principalID, UUID folderID)
{
try
{
Dictionary ret = MakeRequest("GETFOLDER",
new Dictionary {
- { "ID", folder.ID.ToString() }
+ { "ID", folderID.ToString() },
+ { "PRINCIPAL", principalID.ToString() }
});
if (!CheckReturn(ret))
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianInventoryServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianInventoryServiceConnector.cs
index e793420e2e..3d35834917 100644
--- a/OpenSim/Services/Connectors/SimianGrid/SimianInventoryServiceConnector.cs
+++ b/OpenSim/Services/Connectors/SimianGrid/SimianInventoryServiceConnector.cs
@@ -277,17 +277,17 @@ namespace OpenSim.Services.Connectors.SimianGrid
///
///
///
- public InventoryItemBase GetItem(InventoryItemBase item)
+ public InventoryItemBase GetItem(UUID principalID, UUID itemID)
{
InventoryItemBase retrieved = null;
- if (m_ItemCache.TryGetValue(item.ID, out retrieved))
+ if (m_ItemCache.TryGetValue(itemID, out retrieved))
return retrieved;
NameValueCollection requestArgs = new NameValueCollection
{
{ "RequestMethod", "GetInventoryNode" },
- { "ItemID", item.ID.ToString() },
- { "OwnerID", item.Owner.ToString() },
+ { "ItemID", itemID.ToString() },
+ { "OwnerID", principalID.ToString() },
{ "IncludeFolders", "1" },
{ "IncludeItems", "1" },
{ "ChildrenOnly", "1" }
@@ -303,17 +303,17 @@ namespace OpenSim.Services.Connectors.SimianGrid
// and sanity check just in case
for (int i = 0; i < items.Count; i++)
{
- if (items[i].ID == item.ID)
+ if (items[i].ID == itemID)
{
retrieved = items[i];
- m_ItemCache.AddOrUpdate(item.ID, retrieved, CACHE_EXPIRATION_SECONDS);
+ m_ItemCache.AddOrUpdate(itemID, retrieved, CACHE_EXPIRATION_SECONDS);
return retrieved;
}
}
}
}
- m_log.Warn("[SIMIAN INVENTORY CONNECTOR]: Item " + item.ID + " owned by " + item.Owner + " not found");
+ m_log.Warn("[SIMIAN INVENTORY CONNECTOR]: Item " + itemID + " owned by " + principalID + " not found");
return null;
}
@@ -321,13 +321,8 @@ namespace OpenSim.Services.Connectors.SimianGrid
{
InventoryItemBase[] result = new InventoryItemBase[itemIDs.Length];
int i = 0;
- InventoryItemBase item = new InventoryItemBase();
- item.Owner = principalID;
foreach (UUID id in itemIDs)
- {
- item.ID = id;
- result[i++] = GetItem(item);
- }
+ result[i++] = GetItem(principalID, id);
return result;
}
@@ -337,13 +332,13 @@ namespace OpenSim.Services.Connectors.SimianGrid
///
///
///
- public InventoryFolderBase GetFolder(InventoryFolderBase folder)
+ public InventoryFolderBase GetFolder(UUID principalID, UUID folderID)
{
NameValueCollection requestArgs = new NameValueCollection
{
{ "RequestMethod", "GetInventoryNode" },
- { "ItemID", folder.ID.ToString() },
- { "OwnerID", folder.Owner.ToString() },
+ { "ItemID", folderID.ToString() },
+ { "OwnerID", principalID.ToString() },
{ "IncludeFolders", "1" },
{ "IncludeItems", "0" },
{ "ChildrenOnly", "1" }
@@ -353,7 +348,7 @@ namespace OpenSim.Services.Connectors.SimianGrid
if (response["Success"].AsBoolean() && response["Items"] is OSDArray)
{
OSDArray items = (OSDArray)response["Items"];
- List folders = GetFoldersFromResponse(items, folder.ID, true);
+ List folders = GetFoldersFromResponse(items, folderID, true);
if (folders.Count > 0)
return folders[0];
diff --git a/OpenSim/Services/HypergridService/HGInventoryService.cs b/OpenSim/Services/HypergridService/HGInventoryService.cs
index 9158b417a0..a0d25e394a 100644
--- a/OpenSim/Services/HypergridService/HGInventoryService.cs
+++ b/OpenSim/Services/HypergridService/HGInventoryService.cs
@@ -291,9 +291,9 @@ namespace OpenSim.Services.HypergridService
//{
//}
- public override InventoryItemBase GetItem(InventoryItemBase item)
+ public override InventoryItemBase GetItem(UUID principalID, UUID itemID)
{
- InventoryItemBase it = base.GetItem(item);
+ InventoryItemBase it = base.GetItem(principalID, itemID);
if (it != null)
{
UserAccount user = m_Cache.GetUser(it.CreatorId);
diff --git a/OpenSim/Services/HypergridService/HGSuitcaseInventoryService.cs b/OpenSim/Services/HypergridService/HGSuitcaseInventoryService.cs
index 40eb6d4c84..7f14e8ecf3 100644
--- a/OpenSim/Services/HypergridService/HGSuitcaseInventoryService.cs
+++ b/OpenSim/Services/HypergridService/HGSuitcaseInventoryService.cs
@@ -383,7 +383,7 @@ namespace OpenSim.Services.HypergridService
// Check the items' current folders
foreach (InventoryItemBase item in items)
{
- InventoryItemBase originalItem = base.GetItem(item);
+ InventoryItemBase originalItem = base.GetItem(item.Owner, item.ID);
if (!IsWithinSuitcaseTree(originalItem.Owner, originalItem.Folder))
{
m_log.DebugFormat("[HG SUITCASE INVENTORY SERVICE]: MoveItems: folder {0} (user {1}) is not within Suitcase tree", item.Folder, item.Owner);
@@ -401,7 +401,7 @@ namespace OpenSim.Services.HypergridService
public new InventoryItemBase GetItem(InventoryItemBase item)
{
- InventoryItemBase it = base.GetItem(item);
+ InventoryItemBase it = base.GetItem(item.Owner, item.ID);
if (it == null)
{
m_log.DebugFormat("[HG SUITCASE INVENTORY SERVICE]: Unable to retrieve item {0} ({1}) in folder {2}",
@@ -426,9 +426,9 @@ namespace OpenSim.Services.HypergridService
return it;
}
- public new InventoryFolderBase GetFolder(InventoryFolderBase folder)
+ public new InventoryFolderBase GetFolder(UUID principalID, UUID folderID)
{
- InventoryFolderBase f = base.GetFolder(folder);
+ InventoryFolderBase f = base.GetFolder(principalID, folderID);
if (f != null)
{
diff --git a/OpenSim/Services/Interfaces/IInventoryService.cs b/OpenSim/Services/Interfaces/IInventoryService.cs
index 4289bbaef7..c0c9ba8c1e 100644
--- a/OpenSim/Services/Interfaces/IInventoryService.cs
+++ b/OpenSim/Services/Interfaces/IInventoryService.cs
@@ -161,7 +161,7 @@ namespace OpenSim.Services.Interfaces
///
///
/// null if no item was found, otherwise the found item
- InventoryItemBase GetItem(InventoryItemBase item);
+ InventoryItemBase GetItem(UUID userID, UUID itemID);
///
/// Get multiple items, given by their UUIDs
@@ -175,7 +175,7 @@ namespace OpenSim.Services.Interfaces
///
///
///
- InventoryFolderBase GetFolder(InventoryFolderBase folder);
+ InventoryFolderBase GetFolder(UUID userID, UUID folderID);
///
/// Does the given user have an inventory structure?
diff --git a/OpenSim/Services/InventoryService/Tests/XInventoryServiceTests.cs b/OpenSim/Services/InventoryService/Tests/XInventoryServiceTests.cs
index 9e3fa695af..3cfd125054 100644
--- a/OpenSim/Services/InventoryService/Tests/XInventoryServiceTests.cs
+++ b/OpenSim/Services/InventoryService/Tests/XInventoryServiceTests.cs
@@ -90,8 +90,7 @@ namespace OpenSim.Services.InventoryService.Tests
Assert.That(xis.AddItem(itemToStore), Is.True);
- InventoryItemBase itemRetrieved = new InventoryItemBase(itemId);
- itemRetrieved = xis.GetItem(itemRetrieved);
+ InventoryItemBase itemRetrieved = xis.GetItem(UUID.Zero, itemId);
Assert.That(itemRetrieved, Is.Not.Null);
Assert.That(itemRetrieved.CreatorId, Is.EqualTo(creatorId));
@@ -139,8 +138,7 @@ namespace OpenSim.Services.InventoryService.Tests
Assert.That(xis.UpdateItem(itemToStore), Is.True);
- InventoryItemBase itemRetrieved = new InventoryItemBase(itemId);
- itemRetrieved = xis.GetItem(itemRetrieved);
+ InventoryItemBase itemRetrieved = xis.GetItem(UUID.Zero, itemId);
Assert.That(itemRetrieved, Is.Not.Null);
Assert.That(itemRetrieved.Name, Is.EqualTo(itemName2));
@@ -162,7 +160,7 @@ namespace OpenSim.Services.InventoryService.Tests
Assert.That(xis.UpdateItem(itemToStore), Is.True);
- itemRetrieved = xis.GetItem(itemRetrieved);
+ itemRetrieved = xis.GetItem(itemRetrieved.Owner, itemRetrieved.ID);
Assert.That(itemRetrieved, Is.Not.Null);
Assert.That(itemRetrieved.CreatorId, Is.EqualTo(creatorId));
@@ -174,4 +172,4 @@ namespace OpenSim.Services.InventoryService.Tests
Assert.That(itemRetrieved.Name, Is.EqualTo(itemName3));
}
}
-}
\ No newline at end of file
+}
diff --git a/OpenSim/Services/InventoryService/XInventoryService.cs b/OpenSim/Services/InventoryService/XInventoryService.cs
index b75193f625..004c4bf778 100644
--- a/OpenSim/Services/InventoryService/XInventoryService.cs
+++ b/OpenSim/Services/InventoryService/XInventoryService.cs
@@ -315,8 +315,7 @@ namespace OpenSim.Services.InventoryService
inventory.Items.Add(ConvertToOpenSim(i));
}
- InventoryFolderBase f = new InventoryFolderBase(folderID, principalID);
- f = GetFolder(f);
+ InventoryFolderBase f = GetFolder(principalID, folderID);
if (f != null)
{
inventory.Version = f.Version;
@@ -359,7 +358,7 @@ namespace OpenSim.Services.InventoryService
{
// m_log.DebugFormat("[XINVENTORY]: Add folder {0} type {1} in parent {2}", folder.Name, folder.Type, folder.ParentID);
- InventoryFolderBase check = GetFolder(folder);
+ InventoryFolderBase check = GetFolder(folder.Owner, folder.ID);
if (check != null)
return false;
@@ -402,7 +401,7 @@ namespace OpenSim.Services.InventoryService
// m_log.DebugFormat("[XINVENTORY]: Update folder {0} {1} ({2})", folder.Name, folder.Type, folder.ID);
XInventoryFolder xFolder = ConvertFromOpenSim(folder);
- InventoryFolderBase check = GetFolder(folder);
+ InventoryFolderBase check = GetFolder(folder.Owner, folder.ID);
if (check == null)
return AddFolder(folder);
@@ -512,7 +511,7 @@ namespace OpenSim.Services.InventoryService
// m_log.InfoFormat(
// "[XINVENTORY SERVICE]: Updating item {0} {1} in folder {2}", item.Name, item.ID, item.Folder);
- InventoryItemBase retrievedItem = GetItem(item);
+ InventoryItemBase retrievedItem = GetItem(item.Owner, item.ID);
if (retrievedItem == null)
{
@@ -598,11 +597,11 @@ namespace OpenSim.Services.InventoryService
return true;
}
- public virtual InventoryItemBase GetItem(InventoryItemBase item)
+ public virtual InventoryItemBase GetItem(UUID principalID, UUID itemID)
{
XInventoryItem[] items = m_Database.GetItems(
new string[] { "inventoryID" },
- new string[] { item.ID.ToString() });
+ new string[] { itemID.ToString() });
if (items.Length == 0)
return null;
@@ -614,22 +613,17 @@ namespace OpenSim.Services.InventoryService
{
InventoryItemBase[] items = new InventoryItemBase[ids.Length];
int i = 0;
- InventoryItemBase item = new InventoryItemBase();
- item.Owner = userID;
foreach (UUID id in ids)
- {
- item.ID = id;
- items[i++] = GetItem(item);
- }
+ items[i++] = GetItem(userID, id);
return items;
}
- public virtual InventoryFolderBase GetFolder(InventoryFolderBase folder)
+ public virtual InventoryFolderBase GetFolder(UUID principalID, UUID folderID)
{
XInventoryFolder[] folders = m_Database.GetFolders(
new string[] { "folderID"},
- new string[] { folder.ID.ToString() });
+ new string[] { folderID.ToString() });
if (folders.Length == 0)
return null;
diff --git a/OpenSim/Tests/Robust/Clients/Inventory/InventoryClient.cs b/OpenSim/Tests/Robust/Clients/Inventory/InventoryClient.cs
index 0280b7377e..d5c7dcb5fd 100644
--- a/OpenSim/Tests/Robust/Clients/Inventory/InventoryClient.cs
+++ b/OpenSim/Tests/Robust/Clients/Inventory/InventoryClient.cs
@@ -159,8 +159,7 @@ namespace Robust.Tests
XInventoryServicesConnector m_Connector = new XInventoryServicesConnector(DemonServer.Address);
// Prefetch Notecard 1, will be cached from here on
- InventoryItemBase item = new InventoryItemBase(new UUID("10000000-0000-0000-0000-000000000001"), m_userID);
- item = m_Connector.GetItem(item);
+ InventoryItemBase item = m_Connector.GetItem(m_userID, new UUID("10000000-0000-0000-0000-000000000001"));
Assert.NotNull(item, "Failed to get Notecard 1");
Assert.AreEqual("Test Notecard 1", item.Name, "Wrong name for Notecard 1");