diff options
Diffstat (limited to 'OpenSim/Capabilities/Handlers/FetchInventory')
5 files changed, 116 insertions, 43 deletions
diff --git a/OpenSim/Capabilities/Handlers/FetchInventory/FetchInvDescHandler.cs b/OpenSim/Capabilities/Handlers/FetchInventory/FetchInvDescHandler.cs index 7197049..53ed115 100644 --- a/OpenSim/Capabilities/Handlers/FetchInventory/FetchInvDescHandler.cs +++ b/OpenSim/Capabilities/Handlers/FetchInventory/FetchInvDescHandler.cs | |||
@@ -43,7 +43,7 @@ using Caps = OpenSim.Framework.Capabilities.Caps; | |||
43 | 43 | ||
44 | namespace OpenSim.Capabilities.Handlers | 44 | namespace OpenSim.Capabilities.Handlers |
45 | { | 45 | { |
46 | public class FetchInvDescHandler | 46 | public class FetchInvDescHandler |
47 | { | 47 | { |
48 | private static readonly ILog m_log = | 48 | private static readonly ILog m_log = |
49 | LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 49 | LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
@@ -53,14 +53,14 @@ namespace OpenSim.Capabilities.Handlers | |||
53 | private IScene m_Scene; | 53 | private IScene m_Scene; |
54 | // private object m_fetchLock = new Object(); | 54 | // private object m_fetchLock = new Object(); |
55 | 55 | ||
56 | public FetchInvDescHandler(IInventoryService invService, ILibraryService libService, IScene s) | 56 | public FetchInvDescHandler(IInventoryService invService, ILibraryService libService, IScene s) |
57 | { | 57 | { |
58 | m_InventoryService = invService; | 58 | m_InventoryService = invService; |
59 | m_LibraryService = libService; | 59 | m_LibraryService = libService; |
60 | m_Scene = s; | 60 | m_Scene = s; |
61 | } | 61 | } |
62 | 62 | ||
63 | 63 | ||
64 | public string FetchInventoryDescendentsRequest(string request, string path, string param, IOSHttpRequest httpRequest, IOSHttpResponse httpResponse) | 64 | public string FetchInventoryDescendentsRequest(string request, string path, string param, IOSHttpRequest httpRequest, IOSHttpResponse httpResponse) |
65 | { | 65 | { |
66 | //m_log.DebugFormat("[XXX]: FetchInventoryDescendentsRequest in {0}, {1}", (m_Scene == null) ? "none" : m_Scene.Name, request); | 66 | //m_log.DebugFormat("[XXX]: FetchInventoryDescendentsRequest in {0}, {1}", (m_Scene == null) ? "none" : m_Scene.Name, request); |
@@ -72,14 +72,14 @@ namespace OpenSim.Capabilities.Handlers | |||
72 | // correctly mark it as a uuid | 72 | // correctly mark it as a uuid |
73 | // | 73 | // |
74 | request = request.Replace("<string>00000000-0000-0000-0000-000000000000</string>", "<uuid>00000000-0000-0000-0000-000000000000</uuid>"); | 74 | request = request.Replace("<string>00000000-0000-0000-0000-000000000000</string>", "<uuid>00000000-0000-0000-0000-000000000000</uuid>"); |
75 | 75 | ||
76 | // another hack <integer>1</integer> results in a | 76 | // another hack <integer>1</integer> results in a |
77 | // System.ArgumentException: Object type System.Int32 cannot | 77 | // System.ArgumentException: Object type System.Int32 cannot |
78 | // be converted to target type: System.Boolean | 78 | // be converted to target type: System.Boolean |
79 | // | 79 | // |
80 | request = request.Replace("<key>fetch_folders</key><integer>0</integer>", "<key>fetch_folders</key><boolean>0</boolean>"); | 80 | request = request.Replace("<key>fetch_folders</key><integer>0</integer>", "<key>fetch_folders</key><boolean>0</boolean>"); |
81 | request = request.Replace("<key>fetch_folders</key><integer>1</integer>", "<key>fetch_folders</key><boolean>1</boolean>"); | 81 | request = request.Replace("<key>fetch_folders</key><integer>1</integer>", "<key>fetch_folders</key><boolean>1</boolean>"); |
82 | 82 | ||
83 | Hashtable hash = new Hashtable(); | 83 | Hashtable hash = new Hashtable(); |
84 | try | 84 | try |
85 | { | 85 | { |
@@ -90,9 +90,9 @@ namespace OpenSim.Capabilities.Handlers | |||
90 | m_log.ErrorFormat("[WEB FETCH INV DESC HANDLER]: Fetch error: {0}{1}" + e.Message, e.StackTrace); | 90 | m_log.ErrorFormat("[WEB FETCH INV DESC HANDLER]: Fetch error: {0}{1}" + e.Message, e.StackTrace); |
91 | m_log.Error("Request: " + request); | 91 | m_log.Error("Request: " + request); |
92 | } | 92 | } |
93 | 93 | ||
94 | ArrayList foldersrequested = (ArrayList)hash["folders"]; | 94 | ArrayList foldersrequested = (ArrayList)hash["folders"]; |
95 | 95 | ||
96 | string response = ""; | 96 | string response = ""; |
97 | string bad_folders_response = ""; | 97 | string bad_folders_response = ""; |
98 | 98 | ||
@@ -403,10 +403,7 @@ namespace OpenSim.Capabilities.Handlers | |||
403 | return contents; | 403 | return contents; |
404 | } | 404 | } |
405 | contents = fetchedContents; | 405 | contents = fetchedContents; |
406 | InventoryFolderBase containingFolder = new InventoryFolderBase(); | 406 | InventoryFolderBase containingFolder = m_InventoryService.GetFolder(agentID, folderID); |
407 | containingFolder.ID = folderID; | ||
408 | containingFolder.Owner = agentID; | ||
409 | containingFolder = m_InventoryService.GetFolder(containingFolder); | ||
410 | 407 | ||
411 | if (containingFolder != null) | 408 | if (containingFolder != null) |
412 | { | 409 | { |
@@ -416,7 +413,7 @@ namespace OpenSim.Capabilities.Handlers | |||
416 | 413 | ||
417 | version = containingFolder.Version; | 414 | version = containingFolder.Version; |
418 | 415 | ||
419 | if (fetchItems) | 416 | if (fetchItems && containingFolder.Type != (short)FolderType.Trash) |
420 | { | 417 | { |
421 | List<InventoryItemBase> itemsToReturn = contents.Items; | 418 | List<InventoryItemBase> itemsToReturn = contents.Items; |
422 | List<InventoryItemBase> originalItems = new List<InventoryItemBase>(itemsToReturn); | 419 | List<InventoryItemBase> originalItems = new List<InventoryItemBase>(itemsToReturn); |
@@ -429,7 +426,7 @@ namespace OpenSim.Capabilities.Handlers | |||
429 | { | 426 | { |
430 | if (item.AssetType == (int)AssetType.Link) | 427 | if (item.AssetType == (int)AssetType.Link) |
431 | { | 428 | { |
432 | InventoryItemBase linkedItem = m_InventoryService.GetItem(new InventoryItemBase(item.AssetID)); | 429 | InventoryItemBase linkedItem = m_InventoryService.GetItem(agentID, item.AssetID); |
433 | 430 | ||
434 | // Take care of genuinely broken links where the target doesn't exist | 431 | // Take care of genuinely broken links where the target doesn't exist |
435 | // HACK: Also, don't follow up links that just point to other links. In theory this is legitimate, | 432 | // HACK: Also, don't follow up links that just point to other links. In theory this is legitimate, |
@@ -441,6 +438,10 @@ namespace OpenSim.Capabilities.Handlers | |||
441 | } | 438 | } |
442 | 439 | ||
443 | // Now scan for folder links and insert the items they target and those links at the head of the return data | 440 | // Now scan for folder links and insert the items they target and those links at the head of the return data |
441 | |||
442 | /* dont send contents of LinkFolders. | ||
443 | from docs seems this was never a spec | ||
444 | |||
444 | foreach (InventoryItemBase item in originalItems) | 445 | foreach (InventoryItemBase item in originalItems) |
445 | { | 446 | { |
446 | if (item.AssetType == (int)AssetType.LinkFolder) | 447 | if (item.AssetType == (int)AssetType.LinkFolder) |
@@ -471,6 +472,7 @@ namespace OpenSim.Capabilities.Handlers | |||
471 | } | 472 | } |
472 | } | 473 | } |
473 | } | 474 | } |
475 | */ | ||
474 | } | 476 | } |
475 | 477 | ||
476 | // foreach (InventoryItemBase item in contents.Items) | 478 | // foreach (InventoryItemBase item in contents.Items) |
@@ -514,7 +516,7 @@ namespace OpenSim.Capabilities.Handlers | |||
514 | // } | 516 | // } |
515 | // } | 517 | // } |
516 | // } | 518 | // } |
517 | // | 519 | // |
518 | // foreach (UUID linkedItemFolderId in linkedItemFolderIdsToSend) | 520 | // foreach (UUID linkedItemFolderId in linkedItemFolderIdsToSend) |
519 | // { | 521 | // { |
520 | // m_log.DebugFormat( | 522 | // m_log.DebugFormat( |
@@ -654,10 +656,7 @@ namespace OpenSim.Capabilities.Handlers | |||
654 | // Must fetch it individually | 656 | // Must fetch it individually |
655 | else if (contents.FolderID == UUID.Zero) | 657 | else if (contents.FolderID == UUID.Zero) |
656 | { | 658 | { |
657 | InventoryFolderBase containingFolder = new InventoryFolderBase(); | 659 | InventoryFolderBase containingFolder = m_InventoryService.GetFolder(freq.owner_id, freq.folder_id); |
658 | containingFolder.ID = freq.folder_id; | ||
659 | containingFolder.Owner = freq.owner_id; | ||
660 | containingFolder = m_InventoryService.GetFolder(containingFolder); | ||
661 | 660 | ||
662 | if (containingFolder != null) | 661 | if (containingFolder != null) |
663 | { | 662 | { |
@@ -723,8 +722,8 @@ namespace OpenSim.Capabilities.Handlers | |||
723 | if (item.AssetType == (int)AssetType.Link) | 722 | if (item.AssetType == (int)AssetType.Link) |
724 | itemIDs.Add(item.AssetID); | 723 | itemIDs.Add(item.AssetID); |
725 | 724 | ||
726 | else if (item.AssetType == (int)AssetType.LinkFolder) | 725 | // else if (item.AssetType == (int)AssetType.LinkFolder) |
727 | folderIDs.Add(item.AssetID); | 726 | // folderIDs.Add(item.AssetID); |
728 | } | 727 | } |
729 | 728 | ||
730 | //m_log.DebugFormat("[XXX]: folder {0} has {1} links and {2} linkfolders", contents.FolderID, itemIDs.Count, folderIDs.Count); | 729 | //m_log.DebugFormat("[XXX]: folder {0} has {1} links and {2} linkfolders", contents.FolderID, itemIDs.Count, folderIDs.Count); |
@@ -754,12 +753,9 @@ namespace OpenSim.Capabilities.Handlers | |||
754 | m_log.WarnFormat("[WEB FETCH INV DESC HANDLER]: GetMultipleItems failed. Falling back to fetching inventory items one by one."); | 753 | m_log.WarnFormat("[WEB FETCH INV DESC HANDLER]: GetMultipleItems failed. Falling back to fetching inventory items one by one."); |
755 | linked = new InventoryItemBase[itemIDs.Count]; | 754 | linked = new InventoryItemBase[itemIDs.Count]; |
756 | int i = 0; | 755 | int i = 0; |
757 | InventoryItemBase item = new InventoryItemBase(); | ||
758 | item.Owner = freq.owner_id; | ||
759 | foreach (UUID id in itemIDs) | 756 | foreach (UUID id in itemIDs) |
760 | { | 757 | { |
761 | item.ID = id; | 758 | linked[i++] = m_InventoryService.GetItem(freq.owner_id, id); |
762 | linked[i++] = m_InventoryService.GetItem(item); | ||
763 | } | 759 | } |
764 | } | 760 | } |
765 | 761 | ||
@@ -845,4 +841,4 @@ namespace OpenSim.Capabilities.Handlers | |||
845 | public InventoryCollection Collection; | 841 | public InventoryCollection Collection; |
846 | public int Descendents; | 842 | public int Descendents; |
847 | } | 843 | } |
848 | } \ No newline at end of file | 844 | } |
diff --git a/OpenSim/Capabilities/Handlers/FetchInventory/FetchInventory2Handler.cs b/OpenSim/Capabilities/Handlers/FetchInventory/FetchInventory2Handler.cs index c904392..e239a90 100644 --- a/OpenSim/Capabilities/Handlers/FetchInventory/FetchInventory2Handler.cs +++ b/OpenSim/Capabilities/Handlers/FetchInventory/FetchInventory2Handler.cs | |||
@@ -64,27 +64,33 @@ namespace OpenSim.Capabilities.Handlers | |||
64 | 64 | ||
65 | UUID[] itemIDs = new UUID[itemsRequested.Count]; | 65 | UUID[] itemIDs = new UUID[itemsRequested.Count]; |
66 | int i = 0; | 66 | int i = 0; |
67 | |||
67 | foreach (OSDMap osdItemId in itemsRequested) | 68 | foreach (OSDMap osdItemId in itemsRequested) |
68 | { | 69 | { |
69 | itemIDs[i++] = osdItemId["item_id"].AsUUID(); | 70 | itemIDs[i++] = osdItemId["item_id"].AsUUID(); |
70 | } | 71 | } |
71 | 72 | ||
72 | InventoryItemBase[] items = m_inventoryService.GetMultipleItems(m_agentID, itemIDs); | 73 | InventoryItemBase[] items = null; |
73 | 74 | ||
74 | if (items == null) | 75 | if (m_agentID != UUID.Zero) |
75 | { | 76 | { |
76 | // OMG!!! One by one!!! This is fallback code, in case the backend isn't updated | 77 | items = m_inventoryService.GetMultipleItems(m_agentID, itemIDs); |
77 | m_log.WarnFormat("[FETCH INVENTORY HANDLER]: GetMultipleItems failed. Falling back to fetching inventory items one by one."); | 78 | |
78 | items = new InventoryItemBase[itemsRequested.Count]; | 79 | if (items == null) |
79 | i = 0; | ||
80 | InventoryItemBase item = new InventoryItemBase(); | ||
81 | item.Owner = m_agentID; | ||
82 | foreach (UUID id in itemIDs) | ||
83 | { | 80 | { |
84 | item.ID = id; | 81 | // OMG!!! One by one!!! This is fallback code, in case the backend isn't updated |
85 | items[i++] = m_inventoryService.GetItem(item); | 82 | m_log.WarnFormat("[FETCH INVENTORY HANDLER]: GetMultipleItems failed. Falling back to fetching inventory items one by one."); |
83 | items = new InventoryItemBase[itemsRequested.Count]; | ||
84 | foreach (UUID id in itemIDs) | ||
85 | items[i++] = m_inventoryService.GetItem(m_agentID, id); | ||
86 | } | 86 | } |
87 | } | 87 | } |
88 | else | ||
89 | { | ||
90 | items = new InventoryItemBase[itemsRequested.Count]; | ||
91 | foreach (UUID id in itemIDs) | ||
92 | items[i++] = m_inventoryService.GetItem(UUID.Zero, id); | ||
93 | } | ||
88 | 94 | ||
89 | foreach (InventoryItemBase item in items) | 95 | foreach (InventoryItemBase item in items) |
90 | { | 96 | { |
@@ -93,7 +99,6 @@ namespace OpenSim.Capabilities.Handlers | |||
93 | // We don't know the agent that this request belongs to so we'll use the agent id of the item | 99 | // We don't know the agent that this request belongs to so we'll use the agent id of the item |
94 | // which will be the same for all items. | 100 | // which will be the same for all items. |
95 | llsdReply.agent_id = item.Owner; | 101 | llsdReply.agent_id = item.Owner; |
96 | |||
97 | llsdReply.items.Array.Add(ConvertInventoryItem(item)); | 102 | llsdReply.items.Array.Add(ConvertInventoryItem(item)); |
98 | } | 103 | } |
99 | } | 104 | } |
@@ -114,7 +119,7 @@ namespace OpenSim.Capabilities.Handlers | |||
114 | llsdItem.asset_id = invItem.AssetID; | 119 | llsdItem.asset_id = invItem.AssetID; |
115 | llsdItem.created_at = invItem.CreationDate; | 120 | llsdItem.created_at = invItem.CreationDate; |
116 | llsdItem.desc = invItem.Description; | 121 | llsdItem.desc = invItem.Description; |
117 | llsdItem.flags = (int)invItem.Flags; | 122 | llsdItem.flags = ((int)invItem.Flags) & 0xff; |
118 | llsdItem.item_id = invItem.ID; | 123 | llsdItem.item_id = invItem.ID; |
119 | llsdItem.name = invItem.Name; | 124 | llsdItem.name = invItem.Name; |
120 | llsdItem.parent_id = invItem.Folder; | 125 | llsdItem.parent_id = invItem.Folder; |
@@ -138,4 +143,4 @@ namespace OpenSim.Capabilities.Handlers | |||
138 | return llsdItem; | 143 | return llsdItem; |
139 | } | 144 | } |
140 | } | 145 | } |
141 | } \ No newline at end of file | 146 | } |
diff --git a/OpenSim/Capabilities/Handlers/FetchInventory/FetchInventory2ServerConnector.cs b/OpenSim/Capabilities/Handlers/FetchInventory/FetchInventory2ServerConnector.cs new file mode 100644 index 0000000..618f075 --- /dev/null +++ b/OpenSim/Capabilities/Handlers/FetchInventory/FetchInventory2ServerConnector.cs | |||
@@ -0,0 +1,71 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | using System; | ||
29 | using Nini.Config; | ||
30 | using OpenSim.Server.Base; | ||
31 | using OpenSim.Services.Interfaces; | ||
32 | using OpenSim.Framework.Servers.HttpServer; | ||
33 | using OpenSim.Server.Handlers.Base; | ||
34 | using OpenMetaverse; | ||
35 | |||
36 | namespace OpenSim.Capabilities.Handlers | ||
37 | { | ||
38 | public class FetchInventory2ServerConnector : ServiceConnector | ||
39 | { | ||
40 | private IInventoryService m_InventoryService; | ||
41 | private string m_ConfigName = "CapsService"; | ||
42 | |||
43 | public FetchInventory2ServerConnector(IConfigSource config, IHttpServer server, string configName) | ||
44 | : base(config, server, configName) | ||
45 | { | ||
46 | if (configName != String.Empty) | ||
47 | m_ConfigName = configName; | ||
48 | |||
49 | IConfig serverConfig = config.Configs[m_ConfigName]; | ||
50 | if (serverConfig == null) | ||
51 | throw new Exception(String.Format("No section '{0}' in config file", m_ConfigName)); | ||
52 | |||
53 | string invService = serverConfig.GetString("InventoryService", String.Empty); | ||
54 | |||
55 | if (invService == String.Empty) | ||
56 | throw new Exception("No InventoryService in config file"); | ||
57 | |||
58 | Object[] args = new Object[] { config }; | ||
59 | m_InventoryService = ServerUtils.LoadPlugin<IInventoryService>(invService, args); | ||
60 | |||
61 | if (m_InventoryService == null) | ||
62 | throw new Exception(String.Format("Failed to load InventoryService from {0}; config is {1}", invService, m_ConfigName)); | ||
63 | |||
64 | FetchInventory2Handler fiHandler = new FetchInventory2Handler(m_InventoryService, UUID.Zero); | ||
65 | IRequestHandler reqHandler | ||
66 | = new RestStreamHandler( | ||
67 | "POST", "/CAPS/FetchInventory/", fiHandler.FetchInventoryRequest, "FetchInventory", null); | ||
68 | server.AddStreamHandler(reqHandler); | ||
69 | } | ||
70 | } | ||
71 | } | ||
diff --git a/OpenSim/Capabilities/Handlers/FetchInventory/Tests/FetchInventory2HandlerTests.cs b/OpenSim/Capabilities/Handlers/FetchInventory/Tests/FetchInventory2HandlerTests.cs index 8af3c64..94c2c89 100644 --- a/OpenSim/Capabilities/Handlers/FetchInventory/Tests/FetchInventory2HandlerTests.cs +++ b/OpenSim/Capabilities/Handlers/FetchInventory/Tests/FetchInventory2HandlerTests.cs | |||
@@ -120,7 +120,7 @@ namespace OpenSim.Capabilities.Handlers.FetchInventory.Tests | |||
120 | string request = "<llsd><map><key>items</key><array><map><key>item_id</key><uuid>"; | 120 | string request = "<llsd><map><key>items</key><array><map><key>item_id</key><uuid>"; |
121 | request += "10000000-0000-0000-0000-000000000001"; // Notecard 1 | 121 | request += "10000000-0000-0000-0000-000000000001"; // Notecard 1 |
122 | request += "</uuid></map></array></map></llsd>"; | 122 | request += "</uuid></map></array></map></llsd>"; |
123 | 123 | ||
124 | string llsdresponse = handler.FetchInventoryRequest(request, "/FETCH", string.Empty, req, resp); | 124 | string llsdresponse = handler.FetchInventoryRequest(request, "/FETCH", string.Empty, req, resp); |
125 | 125 | ||
126 | Assert.That(llsdresponse != null, Is.True, "Incorrect null response"); | 126 | Assert.That(llsdresponse != null, Is.True, "Incorrect null response"); |
diff --git a/OpenSim/Capabilities/Handlers/FetchInventory/Tests/FetchInventoryDescendents2HandlerTests.cs b/OpenSim/Capabilities/Handlers/FetchInventory/Tests/FetchInventoryDescendents2HandlerTests.cs index 2d5531a..4143aa3 100644 --- a/OpenSim/Capabilities/Handlers/FetchInventory/Tests/FetchInventoryDescendents2HandlerTests.cs +++ b/OpenSim/Capabilities/Handlers/FetchInventory/Tests/FetchInventoryDescendents2HandlerTests.cs | |||
@@ -140,7 +140,7 @@ namespace OpenSim.Capabilities.Handlers.FetchInventory.Tests | |||
140 | string request = "<llsd><map><key>folders</key><array><map><key>fetch_folders</key><integer>1</integer><key>fetch_items</key><boolean>1</boolean><key>folder_id</key><uuid>"; | 140 | string request = "<llsd><map><key>folders</key><array><map><key>fetch_folders</key><integer>1</integer><key>fetch_items</key><boolean>1</boolean><key>folder_id</key><uuid>"; |
141 | request += m_rootFolderID; | 141 | request += m_rootFolderID; |
142 | request += "</uuid><key>owner_id</key><uuid>00000000-0000-0000-0000-000000000000</uuid><key>sort_order</key><integer>1</integer></map></array></map></llsd>"; | 142 | request += "</uuid><key>owner_id</key><uuid>00000000-0000-0000-0000-000000000000</uuid><key>sort_order</key><integer>1</integer></map></array></map></llsd>"; |
143 | 143 | ||
144 | string llsdresponse = handler.FetchInventoryDescendentsRequest(request, "/FETCH", string.Empty, req, resp); | 144 | string llsdresponse = handler.FetchInventoryDescendentsRequest(request, "/FETCH", string.Empty, req, resp); |
145 | 145 | ||
146 | Assert.That(llsdresponse != null, Is.True, "Incorrect null response"); | 146 | Assert.That(llsdresponse != null, Is.True, "Incorrect null response"); |
@@ -203,7 +203,7 @@ namespace OpenSim.Capabilities.Handlers.FetchInventory.Tests | |||
203 | 203 | ||
204 | // Make sure that the note card link is included | 204 | // Make sure that the note card link is included |
205 | Assert.That(llsdresponse.Contains("Link to notecard"), Is.True, "Link to notecard is missing"); | 205 | Assert.That(llsdresponse.Contains("Link to notecard"), Is.True, "Link to notecard is missing"); |
206 | 206 | ||
207 | //Make sure the notecard item itself is included | 207 | //Make sure the notecard item itself is included |
208 | Assert.That(llsdresponse.Contains("Test Notecard 2"), Is.True, "Notecard 2 item (the source) is missing"); | 208 | Assert.That(llsdresponse.Contains("Test Notecard 2"), Is.True, "Notecard 2 item (the source) is missing"); |
209 | 209 | ||
@@ -215,10 +215,11 @@ namespace OpenSim.Capabilities.Handlers.FetchInventory.Tests | |||
215 | // Make sure the folder link is included | 215 | // Make sure the folder link is included |
216 | Assert.That(llsdresponse.Contains("Link to Objects folder"), Is.True, "Link to Objects folder is missing"); | 216 | Assert.That(llsdresponse.Contains("Link to Objects folder"), Is.True, "Link to Objects folder is missing"); |
217 | 217 | ||
218 | /* contents of link folder are not supposed to be listed | ||
218 | // Make sure the objects inside the Objects folder are included | 219 | // Make sure the objects inside the Objects folder are included |
219 | // Note: I'm not entirely sure this is needed, but that's what I found in the implementation | 220 | // Note: I'm not entirely sure this is needed, but that's what I found in the implementation |
220 | Assert.That(llsdresponse.Contains("Some Object"), Is.True, "Some Object item (contents of the source) is missing"); | 221 | Assert.That(llsdresponse.Contains("Some Object"), Is.True, "Some Object item (contents of the source) is missing"); |
221 | 222 | */ | |
222 | // Make sure that the source item is before the link item | 223 | // Make sure that the source item is before the link item |
223 | pos1 = llsdresponse.IndexOf("Some Object"); | 224 | pos1 = llsdresponse.IndexOf("Some Object"); |
224 | pos2 = llsdresponse.IndexOf("Link to Objects folder"); | 225 | pos2 = llsdresponse.IndexOf("Link to Objects folder"); |