aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Capabilities/Handlers/FetchInventory
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Capabilities/Handlers/FetchInventory')
-rw-r--r--OpenSim/Capabilities/Handlers/FetchInventory/FetchInvDescHandler.cs46
-rw-r--r--OpenSim/Capabilities/Handlers/FetchInventory/FetchInventory2Handler.cs33
-rw-r--r--OpenSim/Capabilities/Handlers/FetchInventory/FetchInventory2ServerConnector.cs71
-rw-r--r--OpenSim/Capabilities/Handlers/FetchInventory/Tests/FetchInventory2HandlerTests.cs2
-rw-r--r--OpenSim/Capabilities/Handlers/FetchInventory/Tests/FetchInventoryDescendents2HandlerTests.cs7
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
44namespace OpenSim.Capabilities.Handlers 44namespace 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.
443from 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
28using System;
29using Nini.Config;
30using OpenSim.Server.Base;
31using OpenSim.Services.Interfaces;
32using OpenSim.Framework.Servers.HttpServer;
33using OpenSim.Server.Handlers.Base;
34using OpenMetaverse;
35
36namespace 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");