diff --git a/OpenSim/Data/IXInventoryData.cs b/OpenSim/Data/IXInventoryData.cs
index d85a7efb8f..85a5c08d37 100644
--- a/OpenSim/Data/IXInventoryData.cs
+++ b/OpenSim/Data/IXInventoryData.cs
@@ -74,9 +74,38 @@ namespace OpenSim.Data
bool StoreFolder(XInventoryFolder folder);
bool StoreItem(XInventoryItem item);
+ ///
+ /// Delete folders where field == val
+ ///
+ ///
+ ///
+ /// true if the delete was successful, false if it was not
bool DeleteFolders(string field, string val);
+
+ ///
+ /// Delete folders where field1 == val1, field2 == val2...
+ ///
+ ///
+ ///
+ /// true if the delete was successful, false if it was not
+ bool DeleteFolders(string[] fields, string[] vals);
+
+ ///
+ /// Delete items where field == val
+ ///
+ ///
+ ///
+ /// true if the delete was successful, false if it was not
bool DeleteItems(string field, string val);
+ ///
+ /// Delete items where field1 == val1, field2 == val2...
+ ///
+ ///
+ ///
+ /// true if the delete was successful, false if it was not
+ bool DeleteItems(string[] fields, string[] vals);
+
bool MoveItem(string id, string newParent);
XInventoryItem[] GetActiveGestures(UUID principalID);
int GetAssetPermissions(UUID principalID, UUID assetID);
diff --git a/OpenSim/Data/MSSQL/MSSQLGenericTableHandler.cs b/OpenSim/Data/MSSQL/MSSQLGenericTableHandler.cs
index f5492b3050..317afac493 100644
--- a/OpenSim/Data/MSSQL/MSSQLGenericTableHandler.cs
+++ b/OpenSim/Data/MSSQL/MSSQLGenericTableHandler.cs
@@ -335,24 +335,35 @@ namespace OpenSim.Data.MSSQL
}
}
- public virtual bool Delete(string field, string val)
+ public virtual bool Delete(string field, string key)
{
+ return Delete(new string[] { field }, new string[] { key });
+ }
+
+ public virtual bool Delete(string[] fields, string[] keys)
+ {
+ if (fields.Length != keys.Length)
+ return false;
+
+ List terms = new List();
+
using (SqlConnection conn = new SqlConnection(m_ConnectionString))
using (SqlCommand cmd = new SqlCommand())
{
- string deleteCommand = String.Format("DELETE FROM {0} WHERE [{1}] = @{1}", m_Realm, field);
- cmd.CommandText = deleteCommand;
-
- cmd.Parameters.Add(m_database.CreateParameter(field, val));
- cmd.Connection = conn;
- conn.Open();
-
- if (cmd.ExecuteNonQuery() > 0)
+ for (int i = 0; i < fields.Length; i++)
{
- //m_log.Warn("[MSSQLGenericTable]: " + deleteCommand);
- return true;
+ cmd.Parameters.Add(m_database.CreateParameter(fields[i], keys[i]));
+ terms.Add("[" + fields[i] + "] = @" + fields[i]);
}
- return false;
+
+ string where = String.Join(" AND ", terms.ToArray());
+
+ string query = String.Format("DELETE * FROM {0} WHERE {1}", m_Realm, where);
+
+ cmd.Connection = conn;
+ cmd.CommandText = query;
+ conn.Open();
+ return cmd.ExecuteNonQuery() > 0;
}
}
}
diff --git a/OpenSim/Data/MSSQL/MSSQLXInventoryData.cs b/OpenSim/Data/MSSQL/MSSQLXInventoryData.cs
index 5bc4fe41e5..01689a43e6 100644
--- a/OpenSim/Data/MSSQL/MSSQLXInventoryData.cs
+++ b/OpenSim/Data/MSSQL/MSSQLXInventoryData.cs
@@ -79,11 +79,21 @@ namespace OpenSim.Data.MSSQL
return m_Folders.Delete(field, val);
}
+ public bool DeleteFolders(string[] fields, string[] vals)
+ {
+ return m_Folders.Delete(fields, vals);
+ }
+
public bool DeleteItems(string field, string val)
{
return m_Items.Delete(field, val);
}
+ public bool DeleteItems(string[] fields, string[] vals)
+ {
+ return m_Items.Delete(fields, vals);
+ }
+
public bool MoveItem(string id, string newParent)
{
return m_Items.MoveItem(id, newParent);
diff --git a/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs b/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs
index cfffbd8739..754cf725f0 100644
--- a/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs
+++ b/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs
@@ -264,18 +264,33 @@ namespace OpenSim.Data.MySQL
}
}
- public virtual bool Delete(string field, string val)
+ public virtual bool Delete(string field, string key)
{
+ return Delete(new string[] { field }, new string[] { key });
+ }
+
+ public virtual bool Delete(string[] fields, string[] keys)
+ {
+ if (fields.Length != keys.Length)
+ return false;
+
+ List terms = new List();
+
using (MySqlCommand cmd = new MySqlCommand())
{
+ for (int i = 0 ; i < fields.Length ; i++)
+ {
+ cmd.Parameters.AddWithValue(fields[i], keys[i]);
+ terms.Add("`" + fields[i] + "` = ?" + fields[i]);
+ }
- cmd.CommandText = String.Format("delete from {0} where `{1}` = ?{1}", m_Realm, field);
- cmd.Parameters.AddWithValue(field, val);
+ string where = String.Join(" and ", terms.ToArray());
- if (ExecuteNonQuery(cmd) > 0)
- return true;
+ string query = String.Format("delete from {0} where {1}", m_Realm, where);
- return false;
+ cmd.CommandText = query;
+
+ return ExecuteNonQuery(cmd) > 0;
}
}
}
diff --git a/OpenSim/Data/MySQL/MySQLXInventoryData.cs b/OpenSim/Data/MySQL/MySQLXInventoryData.cs
index 481da493a3..caf18a4780 100644
--- a/OpenSim/Data/MySQL/MySQLXInventoryData.cs
+++ b/OpenSim/Data/MySQL/MySQLXInventoryData.cs
@@ -85,11 +85,21 @@ namespace OpenSim.Data.MySQL
return m_Folders.Delete(field, val);
}
+ public bool DeleteFolders(string[] fields, string[] vals)
+ {
+ return m_Folders.Delete(fields, vals);
+ }
+
public bool DeleteItems(string field, string val)
{
return m_Items.Delete(field, val);
}
+ public bool DeleteItems(string[] fields, string[] vals)
+ {
+ return m_Items.Delete(fields, vals);
+ }
+
public bool MoveItem(string id, string newParent)
{
return m_Items.MoveItem(id, newParent);
diff --git a/OpenSim/Data/SQLite/SQLiteGenericTableHandler.cs b/OpenSim/Data/SQLite/SQLiteGenericTableHandler.cs
index 0d7b001e3f..3fb2d3facb 100644
--- a/OpenSim/Data/SQLite/SQLiteGenericTableHandler.cs
+++ b/OpenSim/Data/SQLite/SQLiteGenericTableHandler.cs
@@ -258,17 +258,33 @@ namespace OpenSim.Data.SQLite
return false;
}
- public bool Delete(string field, string val)
+ public virtual bool Delete(string field, string key)
{
+ return Delete(new string[] { field }, new string[] { key });
+ }
+
+ public bool Delete(string[] fields, string[] keys)
+ {
+ if (fields.Length != keys.Length)
+ return false;
+
+ List terms = new List();
+
SqliteCommand cmd = new SqliteCommand();
- cmd.CommandText = String.Format("delete from {0} where `{1}` = :{1}", m_Realm, field);
- cmd.Parameters.Add(new SqliteParameter(field, val));
+ for (int i = 0 ; i < fields.Length ; i++)
+ {
+ cmd.Parameters.Add(new SqliteParameter(":" + fields[i], keys[i]));
+ terms.Add("`" + fields[i] + "` = :" + fields[i]);
+ }
- if (ExecuteNonQuery(cmd, m_Connection) > 0)
- return true;
+ string where = String.Join(" and ", terms.ToArray());
- return false;
+ string query = String.Format("delete * from {0} where {1}", m_Realm, where);
+
+ cmd.CommandText = query;
+
+ return ExecuteNonQuery(cmd, m_Connection) > 0;
}
}
}
diff --git a/OpenSim/Data/SQLite/SQLiteXInventoryData.cs b/OpenSim/Data/SQLite/SQLiteXInventoryData.cs
index ccbd86e119..02edc30707 100644
--- a/OpenSim/Data/SQLite/SQLiteXInventoryData.cs
+++ b/OpenSim/Data/SQLite/SQLiteXInventoryData.cs
@@ -91,11 +91,21 @@ namespace OpenSim.Data.SQLite
return m_Folders.Delete(field, val);
}
+ public bool DeleteFolders(string[] fields, string[] vals)
+ {
+ return m_Folders.Delete(fields, vals);
+ }
+
public bool DeleteItems(string field, string val)
{
return m_Items.Delete(field, val);
}
+ public bool DeleteItems(string[] fields, string[] vals)
+ {
+ return m_Items.Delete(fields, vals);
+ }
+
public bool MoveItem(string id, string newParent)
{
return m_Items.MoveItem(id, newParent);
diff --git a/OpenSim/Framework/Tests/AnimationTests.cs b/OpenSim/Framework/Tests/AnimationTests.cs
index 9aa95afa43..aa4c6aa1a7 100644
--- a/OpenSim/Framework/Tests/AnimationTests.cs
+++ b/OpenSim/Framework/Tests/AnimationTests.cs
@@ -33,7 +33,6 @@ using OpenMetaverse.StructuredData;
using OpenSim.Framework;
using OpenSim.Tests.Common;
using OpenSim.Tests.Common.Mock;
-using OpenSim.Tests.Common.Setup;
using Animation = OpenSim.Framework.Animation;
namespace OpenSim.Framework.Tests
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs
index 5ba08ee094..aadeedb337 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs
@@ -44,7 +44,6 @@ using OpenSim.Region.Framework.Scenes.Serialization;
using OpenSim.Services.Interfaces;
using OpenSim.Tests.Common;
using OpenSim.Tests.Common.Mock;
-using OpenSim.Tests.Common.Setup;
namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
{
@@ -104,7 +103,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
Scene scene = SceneSetupHelpers.SetupScene();
SceneSetupHelpers.SetupSceneModules(scene, archiverModule);
- UserProfileTestUtils.CreateUserWithInventory(scene, m_uaLL1, "hampshire");
+ UserAccountHelpers.CreateUserWithInventory(scene, m_uaLL1, "hampshire");
MemoryStream archiveWriteStream = new MemoryStream();
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs
index 52232a0c9e..d97311ab2b 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs
@@ -44,7 +44,6 @@ using OpenSim.Region.Framework.Scenes.Serialization;
using OpenSim.Services.Interfaces;
using OpenSim.Tests.Common;
using OpenSim.Tests.Common.Mock;
-using OpenSim.Tests.Common.Setup;
namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
{
@@ -72,7 +71,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
TestHelper.InMethod();
// log4net.Config.XmlConfigurator.Configure();
- UserProfileTestUtils.CreateUserWithInventory(m_scene, m_uaLL1, "password");
+ UserAccountHelpers.CreateUserWithInventory(m_scene, m_uaLL1, "password");
m_archiverModule.DearchiveInventory(m_uaLL1.FirstName, m_uaLL1.LastName, "/", "password", m_iarStream);
InventoryItemBase coaItem
@@ -138,7 +137,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
string userLastName = "Stirrup";
string userPassword = "troll";
UUID userId = UUID.Parse("00000000-0000-0000-0000-000000000020");
- UserProfileTestUtils.CreateUserWithInventory(m_scene, userFirstName, userLastName, userId, userPassword);
+ UserAccountHelpers.CreateUserWithInventory(m_scene, userFirstName, userLastName, userId, userPassword);
// Create asset
UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000040");
@@ -229,7 +228,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
TestHelper.InMethod();
// log4net.Config.XmlConfigurator.Configure();
- UserProfileTestUtils.CreateUserWithInventory(m_scene, m_uaLL1, "meowfood");
+ UserAccountHelpers.CreateUserWithInventory(m_scene, m_uaLL1, "meowfood");
m_archiverModule.DearchiveInventory(m_uaLL1.FirstName, m_uaLL1.LastName, "/", "meowfood", m_iarStream);
InventoryItemBase foundItem1
@@ -261,8 +260,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
TestHelper.InMethod();
// log4net.Config.XmlConfigurator.Configure();
- UserProfileTestUtils.CreateUserWithInventory(m_scene, m_uaMT, "meowfood");
- UserProfileTestUtils.CreateUserWithInventory(m_scene, m_uaLL2, "hampshire");
+ UserAccountHelpers.CreateUserWithInventory(m_scene, m_uaMT, "meowfood");
+ UserAccountHelpers.CreateUserWithInventory(m_scene, m_uaLL2, "hampshire");
m_archiverModule.DearchiveInventory(m_uaMT.FirstName, m_uaMT.LastName, "/", "meowfood", m_iarStream);
InventoryItemBase foundItem1
@@ -294,7 +293,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
TestHelper.InMethod();
// log4net.Config.XmlConfigurator.Configure();
- UserProfileTestUtils.CreateUserWithInventory(m_scene, m_uaMT, "password");
+ UserAccountHelpers.CreateUserWithInventory(m_scene, m_uaMT, "password");
m_archiverModule.DearchiveInventory(m_uaMT.FirstName, m_uaMT.LastName, "/", "password", m_iarStream);
InventoryItemBase foundItem1
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/PathTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/PathTests.cs
index c7dae5276b..127d5f81f1 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/PathTests.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/PathTests.cs
@@ -44,7 +44,6 @@ using OpenSim.Region.Framework.Scenes.Serialization;
using OpenSim.Services.Interfaces;
using OpenSim.Tests.Common;
using OpenSim.Tests.Common.Mock;
-using OpenSim.Tests.Common.Setup;
namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
{
@@ -71,7 +70,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
string userLastName = "Stirrup";
string userPassword = "troll";
UUID userId = UUID.Parse("00000000-0000-0000-0000-000000000020");
- UserProfileTestUtils.CreateUserWithInventory(scene, userFirstName, userLastName, userId, userPassword);
+ UserAccountHelpers.CreateUserWithInventory(scene, userFirstName, userLastName, userId, userPassword);
// Create asset
SceneObjectGroup object1;
@@ -184,8 +183,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule);
- UserProfileTestUtils.CreateUserWithInventory(scene, m_uaMT, "meowfood");
- UserProfileTestUtils.CreateUserWithInventory(scene, m_uaLL1, "hampshire");
+ UserAccountHelpers.CreateUserWithInventory(scene, m_uaMT, "meowfood");
+ UserAccountHelpers.CreateUserWithInventory(scene, m_uaLL1, "hampshire");
archiverModule.DearchiveInventory(m_uaMT.FirstName, m_uaMT.LastName, "/", "meowfood", m_iarStream);
InventoryItemBase foundItem1
@@ -194,7 +193,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
Assert.That(foundItem1, Is.Not.Null, "Didn't find loaded item 1");
// Now try loading to a root child folder
- UserInventoryTestUtils.CreateInventoryFolder(scene.InventoryService, m_uaMT.PrincipalID, "xA");
+ UserInventoryHelpers.CreateInventoryFolder(scene.InventoryService, m_uaMT.PrincipalID, "xA");
MemoryStream archiveReadStream = new MemoryStream(m_iarStream.ToArray());
archiverModule.DearchiveInventory(m_uaMT.FirstName, m_uaMT.LastName, "xA", "meowfood", archiveReadStream);
@@ -203,7 +202,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
Assert.That(foundItem2, Is.Not.Null, "Didn't find loaded item 2");
// Now try loading to a more deeply nested folder
- UserInventoryTestUtils.CreateInventoryFolder(scene.InventoryService, m_uaMT.PrincipalID, "xB/xC");
+ UserInventoryHelpers.CreateInventoryFolder(scene.InventoryService, m_uaMT.PrincipalID, "xB/xC");
archiveReadStream = new MemoryStream(archiveReadStream.ToArray());
archiverModule.DearchiveInventory(m_uaMT.FirstName, m_uaMT.LastName, "xB/xC", "meowfood", archiveReadStream);
@@ -226,7 +225,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
Scene scene = SceneSetupHelpers.SetupScene();
SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule);
- UserProfileTestUtils.CreateUserWithInventory(scene, m_uaMT, "password");
+ UserAccountHelpers.CreateUserWithInventory(scene, m_uaMT, "password");
archiverModule.DearchiveInventory(m_uaMT.FirstName, m_uaMT.LastName, "/Objects", "password", m_iarStream);
InventoryItemBase foundItem1
@@ -255,7 +254,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
string userFirstName = "Jock";
string userLastName = "Stirrup";
UUID userId = UUID.Parse("00000000-0000-0000-0000-000000000020");
- UserProfileTestUtils.CreateUserWithInventory(scene, userFirstName, userLastName, userId, "meowfood");
+ UserAccountHelpers.CreateUserWithInventory(scene, userFirstName, userLastName, userId, "meowfood");
// Create asset
SceneObjectGroup object1;
@@ -328,7 +327,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
// log4net.Config.XmlConfigurator.Configure();
Scene scene = SceneSetupHelpers.SetupScene();
- UserAccount ua1 = UserProfileTestUtils.CreateUserWithInventory(scene);
+ UserAccount ua1 = UserAccountHelpers.CreateUserWithInventory(scene);
Dictionary foldersCreated = new Dictionary();
HashSet nodesLoaded = new HashSet();
@@ -395,13 +394,13 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
//log4net.Config.XmlConfigurator.Configure();
Scene scene = SceneSetupHelpers.SetupScene();
- UserAccount ua1 = UserProfileTestUtils.CreateUserWithInventory(scene);
+ UserAccount ua1 = UserAccountHelpers.CreateUserWithInventory(scene);
string folder1ExistingName = "a";
string folder2Name = "b";
InventoryFolderBase folder1
- = UserInventoryTestUtils.CreateInventoryFolder(
+ = UserInventoryHelpers.CreateInventoryFolder(
scene.InventoryService, ua1.PrincipalID, folder1ExistingName);
string folder1ArchiveName = InventoryArchiveWriteRequest.CreateArchiveFolderName(folder1ExistingName, UUID.Random());
@@ -446,13 +445,13 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
// log4net.Config.XmlConfigurator.Configure();
Scene scene = SceneSetupHelpers.SetupScene();
- UserAccount ua1 = UserProfileTestUtils.CreateUserWithInventory(scene);
+ UserAccount ua1 = UserAccountHelpers.CreateUserWithInventory(scene);
string folder1ExistingName = "a";
string folder2Name = "b";
InventoryFolderBase folder1
- = UserInventoryTestUtils.CreateInventoryFolder(
+ = UserInventoryHelpers.CreateInventoryFolder(
scene.InventoryService, ua1.PrincipalID, folder1ExistingName);
string folder1ArchiveName = InventoryArchiveWriteRequest.CreateArchiveFolderName(folder1ExistingName, UUID.Random());
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs
index 8d53cf1542..733ad25843 100644
--- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs
+++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs
@@ -45,7 +45,6 @@ using OpenSim.Region.Framework.Scenes.Serialization;
using OpenSim.Services.Interfaces;
using OpenSim.Tests.Common;
using OpenSim.Tests.Common.Mock;
-using OpenSim.Tests.Common.Setup;
namespace OpenSim.Region.CoreModules.Framework.InventoryAccess.Tests
{
@@ -73,7 +72,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess.Tests
string userFirstName = "Jock";
string userLastName = "Stirrup";
string userPassword = "troll";
- UserProfileTestUtils.CreateUserWithInventory(m_scene, userFirstName, userLastName, m_userId, userPassword);
+ UserAccountHelpers.CreateUserWithInventory(m_scene, userFirstName, userLastName, m_userId, userPassword);
AgentCircuitData acd = new AgentCircuitData();
acd.AgentID = m_userId;
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/Tests/GridConnectorsTests.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/Tests/GridConnectorsTests.cs
index 18db9fa0e3..c044407d99 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/Tests/GridConnectorsTests.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/Tests/GridConnectorsTests.cs
@@ -40,7 +40,6 @@ using OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid;
using OpenSim.Region.Framework.Scenes;
using GridRegion = OpenSim.Services.Interfaces.GridRegion;
using OpenSim.Tests.Common;
-using OpenSim.Tests.Common.Setup;
namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid.Tests
{
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/Tests/PresenceConnectorsTests.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/Tests/PresenceConnectorsTests.cs
index e471f756d0..4556df3535 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/Tests/PresenceConnectorsTests.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/Tests/PresenceConnectorsTests.cs
@@ -40,7 +40,6 @@ using OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence;
using OpenSim.Region.Framework.Scenes;
using PresenceInfo = OpenSim.Services.Interfaces.PresenceInfo;
using OpenSim.Tests.Common;
-using OpenSim.Tests.Common.Setup;
namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence.Tests
{
diff --git a/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs b/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs
index 729e9f78bd..2eb2861005 100644
--- a/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs
+++ b/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs
@@ -43,7 +43,6 @@ using OpenSim.Region.Framework.Scenes;
using OpenSim.Region.Framework.Scenes.Serialization;
using OpenSim.Tests.Common;
using OpenSim.Tests.Common.Mock;
-using OpenSim.Tests.Common.Setup;
using ArchiveConstants = OpenSim.Framework.Serialization.ArchiveConstants;
using TarArchiveReader = OpenSim.Framework.Serialization.TarArchiveReader;
using TarArchiveWriter = OpenSim.Framework.Serialization.TarArchiveWriter;
diff --git a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs
index 67b00ac759..a3aa38de94 100644
--- a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs
+++ b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs
@@ -37,7 +37,6 @@ using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes;
using OpenSim.Tests.Common;
using OpenSim.Tests.Common.Mock;
-using OpenSim.Tests.Common.Setup;
namespace OpenSim.Region.CoreModules.World.Land.Tests
{
diff --git a/OpenSim/Region/CoreModules/World/Media/Moap/Tests/MoapTests.cs b/OpenSim/Region/CoreModules/World/Media/Moap/Tests/MoapTests.cs
index 5b85830f5f..d5b708229a 100644
--- a/OpenSim/Region/CoreModules/World/Media/Moap/Tests/MoapTests.cs
+++ b/OpenSim/Region/CoreModules/World/Media/Moap/Tests/MoapTests.cs
@@ -40,7 +40,6 @@ using OpenSim.Region.Framework.Scenes;
using OpenSim.Region.Framework.Scenes.Serialization;
using OpenSim.Tests.Common;
using OpenSim.Tests.Common.Mock;
-using OpenSim.Tests.Common.Setup;
namespace OpenSim.Region.CoreModules.World.Media.Moap.Tests
{
diff --git a/OpenSim/Region/CoreModules/World/Serialiser/Tests/SerialiserTests.cs b/OpenSim/Region/CoreModules/World/Serialiser/Tests/SerialiserTests.cs
index a866fd938c..4f752ab82b 100644
--- a/OpenSim/Region/CoreModules/World/Serialiser/Tests/SerialiserTests.cs
+++ b/OpenSim/Region/CoreModules/World/Serialiser/Tests/SerialiserTests.cs
@@ -35,7 +35,6 @@ using OpenSim.Framework;
using OpenSim.Region.Framework.Scenes;
using OpenSim.Region.Framework.Scenes.Serialization;
using OpenSim.Tests.Common;
-using OpenSim.Tests.Common.Setup;
namespace OpenSim.Region.CoreModules.World.Serialiser.Tests
{
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index 7b88f4f439..3c4787397b 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -2095,19 +2095,7 @@ namespace OpenSim.Region.Framework.Scenes
sourcePart.Inventory.RemoveInventoryItem(item.ItemID);
}
- AddNewSceneObject(group, true);
-
- group.AbsolutePosition = pos;
- group.Velocity = vel;
-
- if (rot != null)
- group.UpdateGroupRotationR((Quaternion)rot);
-
- // TODO: This needs to be refactored with the similar code in
- // SceneGraph.AddNewSceneObject(SceneObjectGroup sceneObject, bool attachToBackup, Vector3 pos, Quaternion rot, Vector3 vel)
- // possibly by allowing this method to take a null rotation.
- if (group.RootPart.PhysActor != null && group.RootPart.PhysActor.IsPhysical && vel != Vector3.Zero)
- group.RootPart.ApplyImpulse((vel * group.GetMass()), false);
+ AddNewSceneObject(group, true, pos, rot, vel);
// We can only call this after adding the scene object, since the scene object references the scene
// to find out if scripts should be activated at all.
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 9df73408bb..b9690fe70b 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -1971,16 +1971,17 @@ namespace OpenSim.Region.Framework.Scenes
///
/// Add a newly created object to the scene.
///
- ///
+ ///
/// This method does not send updates to the client - callers need to handle this themselves.
+ ///
///
///
- /// Position of the object
- /// Rotation of the object
+ /// Position of the object. If null then the position stored in the object is used.
+ /// Rotation of the object. If null then the rotation stored in the object is used.
/// Velocity of the object. This parameter only has an effect if the object is physical
///
public bool AddNewSceneObject(
- SceneObjectGroup sceneObject, bool attachToBackup, Vector3 pos, Quaternion rot, Vector3 vel)
+ SceneObjectGroup sceneObject, bool attachToBackup, Vector3? pos, Quaternion? rot, Vector3 vel)
{
if (m_sceneGraph.AddNewSceneObject(sceneObject, attachToBackup, pos, rot, vel))
{
@@ -4278,7 +4279,28 @@ namespace OpenSim.Region.Framework.Scenes
// }
///
- /// Get a named prim contained in this scene (will return the first
+ /// Get a group via its UUID
+ ///
+ ///
+ /// null if no group with that name exists
+ public SceneObjectGroup GetSceneObjectGroup(UUID fullID)
+ {
+ return m_sceneGraph.GetSceneObjectGroup(fullID);
+ }
+
+ ///
+ /// Get a group by name from the scene (will return the first
+ /// found, if there are more than one prim with the same name)
+ ///
+ ///
+ /// null if no group with that name exists
+ public SceneObjectGroup GetSceneObjectGroup(string name)
+ {
+ return m_sceneGraph.GetSceneObjectGroup(name);
+ }
+
+ ///
+ /// Get a prim by name from the scene (will return the first
/// found, if there are more than one prim with the same name)
///
///
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
index fc31b65ec6..cdb4e412c6 100644
--- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
@@ -311,25 +311,26 @@ namespace OpenSim.Region.Framework.Scenes
/// This method does not send updates to the client - callers need to handle this themselves.
///
///
- /// Position of the object
- /// Rotation of the object
+ /// Position of the object. If null then the position stored in the object is used.
+ /// Rotation of the object. If null then the rotation stored in the object is used.
/// Velocity of the object. This parameter only has an effect if the object is physical
///
public bool AddNewSceneObject(
- SceneObjectGroup sceneObject, bool attachToBackup, Vector3 pos, Quaternion rot, Vector3 vel)
+ SceneObjectGroup sceneObject, bool attachToBackup, Vector3? pos, Quaternion? rot, Vector3 vel)
{
AddNewSceneObject(sceneObject, true, false);
- // we set it's position in world.
- sceneObject.AbsolutePosition = pos;
+ if (pos != null)
+ sceneObject.AbsolutePosition = (Vector3)pos;
if (sceneObject.RootPart.Shape.PCode == (byte)PCode.Prim)
{
sceneObject.ClearPartAttachmentData();
}
-
- sceneObject.UpdateGroupRotationR(rot);
-
+
+ if (rot != null)
+ sceneObject.UpdateGroupRotationR((Quaternion)rot);
+
//group.ApplyPhysics(m_physicalPrim);
if (sceneObject.RootPart.PhysActor != null && sceneObject.RootPart.PhysActor.IsPhysical && vel != Vector3.Zero)
{
@@ -344,6 +345,9 @@ namespace OpenSim.Region.Framework.Scenes
/// Add an object to the scene. This will both update the scene, and send information about the
/// new object to all clients interested in the scene.
///
+ ///
+ /// The object's stored position, rotation and velocity are used.
+ ///
///
///
/// If true, the object is made persistent into the scene.
@@ -972,6 +976,51 @@ namespace OpenSim.Region.Framework.Scenes
return result;
}
+ ///
+ /// Get a group in the scene
+ ///
+ /// UUID of the group
+ /// null if no such group was found
+ protected internal SceneObjectGroup GetSceneObjectGroup(UUID fullID)
+ {
+ lock (SceneObjectGroupsByFullID)
+ {
+ if (SceneObjectGroupsByFullID.ContainsKey(fullID))
+ return SceneObjectGroupsByFullID[fullID];
+ }
+
+ return null;
+ }
+
+ ///
+ /// Get a group by name from the scene (will return the first
+ /// found, if there are more than one prim with the same name)
+ ///
+ ///
+ /// null if the part was not found
+ protected internal SceneObjectGroup GetSceneObjectGroup(string name)
+ {
+ SceneObjectGroup so = null;
+
+ Entities.Find(
+ delegate(EntityBase entity)
+ {
+ if (entity is SceneObjectGroup)
+ {
+ if (entity.Name == name)
+ {
+ so = (SceneObjectGroup)entity;
+ return true;
+ }
+ }
+
+ return false;
+ }
+ );
+
+ return so;
+ }
+
///
/// Get a part contained in this scene.
///
@@ -986,7 +1035,7 @@ namespace OpenSim.Region.Framework.Scenes
}
///
- /// Get a named prim contained in this scene (will return the first
+ /// Get a prim by name from the scene (will return the first
/// found, if there are more than one prim with the same name)
///
///
diff --git a/OpenSim/Region/Framework/Scenes/Tests/AttachmentTests.cs b/OpenSim/Region/Framework/Scenes/Tests/AttachmentTests.cs
index 855b5894b6..cff649b33f 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/AttachmentTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/AttachmentTests.cs
@@ -43,7 +43,6 @@ using OpenSim.Region.CoreModules.World.Serialiser;
using OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation;
using OpenSim.Tests.Common;
using OpenSim.Tests.Common.Mock;
-using OpenSim.Tests.Common.Setup;
namespace OpenSim.Region.Framework.Scenes.Tests
{
diff --git a/OpenSim/Region/Framework/Scenes/Tests/EntityManagerTests.cs b/OpenSim/Region/Framework/Scenes/Tests/EntityManagerTests.cs
index 667b74ea95..f69a4b430c 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/EntityManagerTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/EntityManagerTests.cs
@@ -37,7 +37,6 @@ using OpenSim.Framework;
using OpenSim.Framework.Communications;
using OpenSim.Region.Framework.Scenes;
using OpenSim.Tests.Common;
-using OpenSim.Tests.Common.Setup;
namespace OpenSim.Region.Framework.Scenes.Tests
{
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneGraphTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneGraphTests.cs
index ca635d708d..895f2bb4ec 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/SceneGraphTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/SceneGraphTests.cs
@@ -34,7 +34,6 @@ using OpenSim.Framework.Communications;
using OpenSim.Region.Framework.Scenes;
using OpenSim.Tests.Common;
using OpenSim.Tests.Common.Mock;
-using OpenSim.Tests.Common.Setup;
namespace OpenSim.Region.Framework.Scenes.Tests
{
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectBasicTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectBasicTests.cs
index a6a95ef885..0a82c4f574 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectBasicTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectBasicTests.cs
@@ -34,7 +34,6 @@ using OpenSim.Framework.Communications;
using OpenSim.Region.Framework.Scenes;
using OpenSim.Tests.Common;
using OpenSim.Tests.Common.Mock;
-using OpenSim.Tests.Common.Setup;
namespace OpenSim.Region.Framework.Scenes.Tests
{
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectDeRezTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectDeRezTests.cs
index 0d260266ef..5357a06bb6 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectDeRezTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectDeRezTests.cs
@@ -37,7 +37,6 @@ using OpenSim.Region.CoreModules.World.Permissions;
using OpenSim.Region.Framework.Scenes;
using OpenSim.Tests.Common;
using OpenSim.Tests.Common.Mock;
-using OpenSim.Tests.Common.Setup;
namespace OpenSim.Region.Framework.Scenes.Tests
{
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectLinkingTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectLinkingTests.cs
index bdfcd1dc29..cb1d531ab9 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectLinkingTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectLinkingTests.cs
@@ -35,7 +35,6 @@ using OpenSim.Framework.Communications;
using OpenSim.Region.Framework.Scenes;
using OpenSim.Tests.Common;
using OpenSim.Tests.Common.Mock;
-using OpenSim.Tests.Common.Setup;
using log4net;
namespace OpenSim.Region.Framework.Scenes.Tests
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectUserGroupTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectUserGroupTests.cs
index 8876a435b6..77bd4c2022 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectUserGroupTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectUserGroupTests.cs
@@ -40,7 +40,6 @@ using OpenSim.Region.Framework.Scenes;
using OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups;
using OpenSim.Tests.Common;
using OpenSim.Tests.Common.Mock;
-using OpenSim.Tests.Common.Setup;
namespace OpenSim.Region.Framework.Scenes.Tests
{
diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs
index efb757fa6c..03ac252967 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs
@@ -44,7 +44,6 @@ using OpenSim.Region.CoreModules.World.Serialiser;
using OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation;
using OpenSim.Tests.Common;
using OpenSim.Tests.Common.Mock;
-using OpenSim.Tests.Common.Setup;
namespace OpenSim.Region.Framework.Scenes.Tests
{
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneTests.cs
index abcce66e23..13d93f943f 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/SceneTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/SceneTests.cs
@@ -43,7 +43,6 @@ using OpenSim.Region.CoreModules.World.Serialiser;
using OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation;
using OpenSim.Tests.Common;
using OpenSim.Tests.Common.Mock;
-using OpenSim.Tests.Common.Setup;
namespace OpenSim.Region.Framework.Scenes.Tests
{
diff --git a/OpenSim/Region/Framework/Scenes/Tests/StandaloneTeleportTests.cs b/OpenSim/Region/Framework/Scenes/Tests/StandaloneTeleportTests.cs
index dd28416788..1b5a54ec3c 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/StandaloneTeleportTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/StandaloneTeleportTests.cs
@@ -36,7 +36,6 @@ using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation;
using OpenSim.Tests.Common;
using OpenSim.Tests.Common.Mock;
-using OpenSim.Tests.Common.Setup;
using System.Threading;
namespace OpenSim.Region.Framework.Scenes.Tests
diff --git a/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs b/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs
index 2aef4b0d19..f4e14d4424 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs
@@ -46,55 +46,55 @@ using OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation;
using OpenSim.Services.Interfaces;
using OpenSim.Tests.Common;
using OpenSim.Tests.Common.Mock;
-using OpenSim.Tests.Common.Setup;
namespace OpenSim.Region.Framework.Tests
{
[TestFixture]
public class TaskInventoryTests
{
- protected UserAccount CreateUser(Scene scene)
+ [Test]
+ public void TestRezObjectFromInventoryItem()
{
- string userFirstName = "Jock";
- string userLastName = "Stirrup";
- string userPassword = "troll";
- UUID userId = UUID.Parse("00000000-0000-0000-0000-000000000020");
- return UserProfileTestUtils.CreateUserWithInventory(scene, userFirstName, userLastName, userId, userPassword);
- }
-
- protected SceneObjectGroup CreateSO1(Scene scene, UUID ownerId)
- {
- string part1Name = "part1";
- UUID part1Id = UUID.Parse("10000000-0000-0000-0000-000000000000");
- SceneObjectPart part1
- = new SceneObjectPart(ownerId, PrimitiveBaseShape.Default, Vector3.Zero, Quaternion.Identity, Vector3.Zero)
- { Name = part1Name, UUID = part1Id };
- return new SceneObjectGroup(part1);
- }
-
- protected TaskInventoryItem CreateSOItem1(Scene scene, SceneObjectPart part)
- {
- AssetNotecard nc = new AssetNotecard();
- nc.BodyText = "Hello World!";
- nc.Encode();
- UUID ncAssetUuid = new UUID("00000000-0000-0000-1000-000000000000");
- UUID ncItemUuid = new UUID("00000000-0000-0000-1100-000000000000");
- AssetBase ncAsset
- = AssetHelpers.CreateAsset(ncAssetUuid, AssetType.Notecard, nc.AssetData, UUID.Zero);
- scene.AssetService.Store(ncAsset);
- TaskInventoryItem ncItem
- = new TaskInventoryItem
- { Name = "ncItem", AssetID = ncAssetUuid, ItemID = ncItemUuid,
- Type = (int)AssetType.Notecard, InvType = (int)InventoryType.Notecard };
- part.Inventory.AddInventoryItem(ncItem, true);
+ TestHelper.InMethod();
+// log4net.Config.XmlConfigurator.Configure();
- return ncItem;
+ Scene scene = SceneSetupHelpers.SetupScene();
+ UserAccount user1 = UserAccountHelpers.CreateUserWithInventory(scene);
+ SceneObjectGroup sog1 = SceneSetupHelpers.CreateSceneObject(1, user1.PrincipalID);
+ SceneObjectPart sop1 = sog1.RootPart;
+
+ // Create an object embedded inside the first
+ UUID taskSceneObjectItemId = UUID.Parse("00000000-0000-0000-0000-100000000000");
+ TaskInventoryItem taskSceneObjectItem
+ = TaskInventoryHelpers.AddSceneObject(scene, sop1, "tso", taskSceneObjectItemId);
+
+ scene.AddSceneObject(sog1);
+
+ Vector3 rezPos = new Vector3(10, 10, 10);
+ Quaternion rezRot = new Quaternion(0.5f, 0.5f, 0.5f, 0.5f);
+ Vector3 rezVel = new Vector3(2, 2, 2);
+
+ scene.RezObject(sop1, taskSceneObjectItem, rezPos, rezRot, rezVel, 0);
+
+ SceneObjectGroup rezzedObject = scene.GetSceneObjectGroup("tso");
+
+ Assert.That(rezzedObject, Is.Not.Null);
+ Assert.That(rezzedObject.AbsolutePosition, Is.EqualTo(rezPos));
+
+ // Velocity doesn't get applied, probably because there is no physics in tests (yet)
+// Assert.That(rezzedObject.Velocity, Is.EqualTo(rezVel));
+ Assert.That(rezzedObject.Velocity, Is.EqualTo(Vector3.Zero));
+
+ // Confusingly, this isn't the rezzedObject.Rotation
+ Assert.That(rezzedObject.RootPart.RotationOffset, Is.EqualTo(rezRot));
}
-
+
///
/// Test MoveTaskInventoryItem where the item has no parent folder assigned.
///
+ ///
/// This should place it in the most suitable user folder.
+ ///
[Test]
public void TestMoveTaskInventoryItem()
{
@@ -102,10 +102,11 @@ namespace OpenSim.Region.Framework.Tests
// log4net.Config.XmlConfigurator.Configure();
Scene scene = SceneSetupHelpers.SetupScene();
- UserAccount user1 = CreateUser(scene);
- SceneObjectGroup sog1 = CreateSO1(scene, user1.PrincipalID);
+ UserAccount user1 = UserAccountHelpers.CreateUserWithInventory(scene);
+ SceneObjectGroup sog1 = SceneSetupHelpers.CreateSceneObject(1, user1.PrincipalID);
SceneObjectPart sop1 = sog1.RootPart;
- TaskInventoryItem sopItem1 = CreateSOItem1(scene, sop1);
+ TaskInventoryItem sopItem1 = TaskInventoryHelpers.AddNotecard(scene, sop1);
+
InventoryFolderBase folder
= InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, user1.PrincipalID, "Objects")[0];
@@ -128,10 +129,10 @@ namespace OpenSim.Region.Framework.Tests
// log4net.Config.XmlConfigurator.Configure();
Scene scene = SceneSetupHelpers.SetupScene();
- UserAccount user1 = CreateUser(scene);
- SceneObjectGroup sog1 = CreateSO1(scene, user1.PrincipalID);
+ UserAccount user1 = UserAccountHelpers.CreateUserWithInventory(scene);
+ SceneObjectGroup sog1 = SceneSetupHelpers.CreateSceneObject(1, user1.PrincipalID);
SceneObjectPart sop1 = sog1.RootPart;
- TaskInventoryItem sopItem1 = CreateSOItem1(scene, sop1);
+ TaskInventoryItem sopItem1 = TaskInventoryHelpers.AddNotecard(scene, sop1);
// Perform test
scene.MoveTaskInventoryItem(user1.PrincipalID, UUID.Zero, sop1, sopItem1.ItemID);
diff --git a/OpenSim/Region/Framework/Scenes/Tests/UuidGathererTests.cs b/OpenSim/Region/Framework/Scenes/Tests/UuidGathererTests.cs
index dbf9e0f550..4da8df135f 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/UuidGathererTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/UuidGathererTests.cs
@@ -33,7 +33,6 @@ using OpenSim.Framework;
using OpenSim.Region.Framework.Scenes;
using OpenSim.Services.Interfaces;
using OpenSim.Tests.Common;
-using OpenSim.Tests.Common.Setup;
using OpenSim.Tests.Common.Mock;
namespace OpenSim.Region.Framework.Scenes.Tests
diff --git a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/Tests/GroupsModuleTests.cs b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/Tests/GroupsModuleTests.cs
index 6de97b7269..ee52a39170 100644
--- a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/Tests/GroupsModuleTests.cs
+++ b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/Tests/GroupsModuleTests.cs
@@ -35,7 +35,6 @@ using OpenSim.Framework.Communications;
using OpenSim.Region.Framework.Scenes;
using OpenSim.Tests.Common;
using OpenSim.Tests.Common.Mock;
-using OpenSim.Tests.Common.Setup;
namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups.Tests
{
diff --git a/OpenSim/Region/OptionalModules/World/AutoBackup/AutoBackupModule.cs b/OpenSim/Region/OptionalModules/World/AutoBackup/AutoBackupModule.cs
index b74d6e7c7d..ec9f1578e7 100644
--- a/OpenSim/Region/OptionalModules/World/AutoBackup/AutoBackupModule.cs
+++ b/OpenSim/Region/OptionalModules/World/AutoBackup/AutoBackupModule.cs
@@ -278,21 +278,21 @@ namespace OpenSim.Region.OptionalModules.World.AutoBackup
{
string sRegionName;
string sRegionLabel;
- string prepend;
+// string prepend;
AutoBackupModuleState state;
if (parseDefault)
{
sRegionName = null;
sRegionLabel = "DEFAULT";
- prepend = "";
+// prepend = "";
state = this.m_defaultState;
}
else
{
sRegionName = scene.RegionInfo.RegionName;
sRegionLabel = sRegionName;
- prepend = sRegionName + ".";
+// prepend = sRegionName + ".";
state = null;
}
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index 02402271c1..1cf03b8f11 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -4458,6 +4458,22 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
return result;
}
+ public LSL_Integer llGetLinkNumberOfSides(int link)
+ {
+ m_host.AddScriptLPS(1);
+
+ SceneObjectPart linkedPart;
+
+ if (link == ScriptBaseClass.LINK_ROOT)
+ linkedPart = m_host.ParentGroup.RootPart;
+ else if (link == ScriptBaseClass.LINK_THIS)
+ linkedPart = m_host;
+ else
+ linkedPart = m_host.ParentGroup.GetLinkNumPart(link);
+
+ return GetNumberOfSides(linkedPart);
+ }
+
public LSL_Integer llGetNumberOfSides()
{
m_host.AddScriptLPS(1);
diff --git a/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs b/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs
index 298d664a64..461b473608 100644
--- a/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs
@@ -1536,6 +1536,7 @@ namespace OpenSim.Region.ScriptEngine.Shared
public struct LSLInteger
{
public int value;
+ private static readonly Regex castRegex = new Regex(@"(^[ ]*0[xX][0-9A-Fa-f][0-9A-Fa-f]*)|(^[ ]*(-?|\+?)[0-9][0-9]*)");
#region Constructors
public LSLInteger(int i)
@@ -1555,9 +1556,10 @@ namespace OpenSim.Region.ScriptEngine.Shared
public LSLInteger(string s)
{
- Regex r = new Regex("(^[ ]*0[xX][0-9A-Fa-f][0-9A-Fa-f]*)|(^[ ]*-?[0-9][0-9]*)");
- Match m = r.Match(s);
+ Match m = castRegex.Match(s);
string v = m.Groups[0].Value;
+ // Leading plus sign is allowed, but ignored
+ v = v.Replace("+", "");
if (v == String.Empty)
{
diff --git a/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiTest.cs b/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiTest.cs
index 1d55b95f30..80b60a4976 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiTest.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiTest.cs
@@ -29,7 +29,6 @@ using System.Collections.Generic;
using NUnit.Framework;
using OpenSim.Tests.Common;
using OpenSim.Region.ScriptEngine.Shared;
-using OpenSim.Tests.Common.Setup;
using OpenSim.Region.Framework.Scenes;
using Nini.Config;
using OpenSim.Region.ScriptEngine.Shared.Api;
diff --git a/OpenSim/Region/ScriptEngine/XEngine/Tests/XEngineTest.cs b/OpenSim/Region/ScriptEngine/XEngine/Tests/XEngineTest.cs
index 045abb4490..b635d5c604 100644
--- a/OpenSim/Region/ScriptEngine/XEngine/Tests/XEngineTest.cs
+++ b/OpenSim/Region/ScriptEngine/XEngine/Tests/XEngineTest.cs
@@ -29,7 +29,6 @@ using System;
using System.Collections.Generic;
using Nini.Config;
using NUnit.Framework;
-using OpenSim.Tests.Common.Setup;
using OpenSim.Tests.Common.Mock;
using OpenSim.Region.Framework.Scenes;
using OpenMetaverse;
diff --git a/OpenSim/Services/InventoryService/XInventoryService.cs b/OpenSim/Services/InventoryService/XInventoryService.cs
index 0af35c84ac..2282ee85bc 100644
--- a/OpenSim/Services/InventoryService/XInventoryService.cs
+++ b/OpenSim/Services/InventoryService/XInventoryService.cs
@@ -393,6 +393,10 @@ namespace OpenSim.Services.InventoryService
public virtual bool UpdateItem(InventoryItemBase item)
{
+ if (!m_AllowDelete)
+ if (item.AssetType == (sbyte)AssetType.Link || item.AssetType == (sbyte)AssetType.LinkFolder)
+ return false;
+
return m_Database.StoreItem(ConvertFromOpenSim(item));
}
@@ -411,12 +415,30 @@ namespace OpenSim.Services.InventoryService
public virtual bool DeleteItems(UUID principalID, List itemIDs)
{
if (!m_AllowDelete)
- return false;
-
- // Just use the ID... *facepalms*
- //
- foreach (UUID id in itemIDs)
- m_Database.DeleteItems("inventoryID", id.ToString());
+ {
+ // We must still allow links and links to folders to be deleted, otherwise they will build up
+ // in the player's inventory until they can no longer log in. Deletions of links due to code bugs or
+ // similar is inconvenient but on a par with accidental movement of items. The original item is never
+ // touched.
+ foreach (UUID id in itemIDs)
+ {
+ if (!m_Database.DeleteItems(
+ new string[] { "inventoryID", "assetType" },
+ new string[] { id.ToString(), ((sbyte)AssetType.Link).ToString() }));
+ {
+ m_Database.DeleteItems(
+ new string[] { "inventoryID", "assetType" },
+ new string[] { id.ToString(), ((sbyte)AssetType.LinkFolder).ToString() });
+ }
+ }
+ }
+ else
+ {
+ // Just use the ID... *facepalms*
+ //
+ foreach (UUID id in itemIDs)
+ m_Database.DeleteItems("inventoryID", id.ToString());
+ }
return true;
}
diff --git a/OpenSim/Tests/Common/Setup/AssetHelpers.cs b/OpenSim/Tests/Common/Helpers/AssetHelpers.cs
similarity index 88%
rename from OpenSim/Tests/Common/Setup/AssetHelpers.cs
rename to OpenSim/Tests/Common/Helpers/AssetHelpers.cs
index d572249997..aa55bcdc69 100644
--- a/OpenSim/Tests/Common/Setup/AssetHelpers.cs
+++ b/OpenSim/Tests/Common/Helpers/AssetHelpers.cs
@@ -56,10 +56,24 @@ namespace OpenSim.Tests.Common
AssetBase asset = CreateAsset(UUID.Random(), AssetType.Notecard, "hello", creatorId);
scene.AssetService.Store(asset);
return asset;
- }
+ }
+
+ ///
+ /// Create an asset from the given object.
+ ///
+ ///
+ /// The hexadecimal last part of the UUID for the asset created. A UUID of the form "00000000-0000-0000-0000-{0:XD12}"
+ /// will be used.
+ ///
+ ///
+ ///
+ public static AssetBase CreateAsset(int assetUuidTail, SceneObjectGroup sog)
+ {
+ return CreateAsset(new UUID(string.Format("00000000-0000-0000-0000-{0:X12}", assetUuidTail)), sog);
+ }
///
- /// Create an asset from the given scene object.
+ /// Create an asset from the given object.
///
///
///
@@ -76,7 +90,7 @@ namespace OpenSim.Tests.Common
///
/// Create an asset from the given scene object.
///
- ///
+ ///
/// The hexadecimal last part of the UUID for the asset created. A UUID of the form "00000000-0000-0000-0000-{0:XD12}"
/// will be used.
///
diff --git a/OpenSim/Tests/Common/Setup/BaseRequestHandlerTestHelper.cs b/OpenSim/Tests/Common/Helpers/BaseRequestHandlerHelpers.cs
similarity index 97%
rename from OpenSim/Tests/Common/Setup/BaseRequestHandlerTestHelper.cs
rename to OpenSim/Tests/Common/Helpers/BaseRequestHandlerHelpers.cs
index eaf8b39ac0..49c99c5de4 100644
--- a/OpenSim/Tests/Common/Setup/BaseRequestHandlerTestHelper.cs
+++ b/OpenSim/Tests/Common/Helpers/BaseRequestHandlerHelpers.cs
@@ -34,9 +34,9 @@ using OpenSim.Framework.Servers;
using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Tests.Common.Mock;
-namespace OpenSim.Tests.Common.Setup
+namespace OpenSim.Tests.Common
{
- public class BaseRequestHandlerTestHelper
+ public class BaseRequestHandlerHelpers
{
private static string[] m_emptyStringArray = new string[] { };
diff --git a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs b/OpenSim/Tests/Common/Helpers/SceneSetupHelpers.cs
similarity index 99%
rename from OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs
rename to OpenSim/Tests/Common/Helpers/SceneSetupHelpers.cs
index d1224099e2..bef0481edf 100644
--- a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs
+++ b/OpenSim/Tests/Common/Helpers/SceneSetupHelpers.cs
@@ -49,7 +49,7 @@ using OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence;
using OpenSim.Services.Interfaces;
using OpenSim.Tests.Common.Mock;
-namespace OpenSim.Tests.Common.Setup
+namespace OpenSim.Tests.Common
{
///
/// Helpers for setting up scenes.
diff --git a/OpenSim/Tests/Common/Helpers/TaskInventoryHelpers.cs b/OpenSim/Tests/Common/Helpers/TaskInventoryHelpers.cs
new file mode 100644
index 0000000000..5215c3404d
--- /dev/null
+++ b/OpenSim/Tests/Common/Helpers/TaskInventoryHelpers.cs
@@ -0,0 +1,89 @@
+/*
+ * Copyright (c) Contributors, http://opensimulator.org/
+ * See CONTRIBUTORS.TXT for a full list of copyright holders.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of the OpenSimulator Project nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+using OpenMetaverse;
+using OpenMetaverse.Assets;
+using OpenSim.Framework;
+using OpenSim.Region.Framework.Scenes;
+using OpenSim.Services.Interfaces;
+
+namespace OpenSim.Tests.Common
+{
+ ///
+ /// Utility functions for carrying out task inventory tests.
+ ///
+ ///
+ public static class TaskInventoryHelpers
+ {
+ ///
+ /// Add a notecard item to the given part.
+ ///
+ ///
+ ///
+ /// The item that was added
+ public static TaskInventoryItem AddNotecard(Scene scene, SceneObjectPart part)
+ {
+ AssetNotecard nc = new AssetNotecard();
+ nc.BodyText = "Hello World!";
+ nc.Encode();
+ UUID ncAssetUuid = new UUID("00000000-0000-0000-1000-000000000000");
+ UUID ncItemUuid = new UUID("00000000-0000-0000-1100-000000000000");
+ AssetBase ncAsset
+ = AssetHelpers.CreateAsset(ncAssetUuid, AssetType.Notecard, nc.AssetData, UUID.Zero);
+ scene.AssetService.Store(ncAsset);
+ TaskInventoryItem ncItem
+ = new TaskInventoryItem
+ { Name = "ncItem", AssetID = ncAssetUuid, ItemID = ncItemUuid,
+ Type = (int)AssetType.Notecard, InvType = (int)InventoryType.Notecard };
+ part.Inventory.AddInventoryItem(ncItem, true);
+
+ return ncItem;
+ }
+
+ ///
+ /// Add a scene object item to the given part.
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static TaskInventoryItem AddSceneObject(Scene scene, SceneObjectPart sop, string itemName, UUID id)
+ {
+ SceneObjectGroup taskSceneObject = SceneSetupHelpers.CreateSceneObject(1, UUID.Zero);
+ AssetBase taskSceneObjectAsset = AssetHelpers.CreateAsset(0x10, taskSceneObject);
+ scene.AssetService.Store(taskSceneObjectAsset);
+ TaskInventoryItem taskSceneObjectItem
+ = new TaskInventoryItem
+ { Name = itemName, AssetID = taskSceneObjectAsset.FullID, ItemID = id,
+ Type = (int)AssetType.Object, InvType = (int)InventoryType.Object };
+ sop.Inventory.AddInventoryItem(taskSceneObjectItem, true);
+
+ return taskSceneObjectItem;
+ }
+ }
+}
\ No newline at end of file
diff --git a/OpenSim/Tests/Common/Setup/UserProfileTestUtils.cs b/OpenSim/Tests/Common/Helpers/UserAccountHelpers.cs
similarity index 98%
rename from OpenSim/Tests/Common/Setup/UserProfileTestUtils.cs
rename to OpenSim/Tests/Common/Helpers/UserAccountHelpers.cs
index d01521dbdb..8cfad79f28 100644
--- a/OpenSim/Tests/Common/Setup/UserProfileTestUtils.cs
+++ b/OpenSim/Tests/Common/Helpers/UserAccountHelpers.cs
@@ -31,12 +31,12 @@ using OpenSim.Framework.Communications;
using OpenSim.Region.Framework.Scenes;
using OpenSim.Services.Interfaces;
-namespace OpenSim.Tests.Common.Setup
+namespace OpenSim.Tests.Common
{
///
/// Utility functions for carrying out user profile related tests.
///
- public static class UserProfileTestUtils
+ public static class UserAccountHelpers
{
// ///
// /// Create a test user with a standard inventory
diff --git a/OpenSim/Tests/Common/Setup/UserInventoryTestUtils.cs b/OpenSim/Tests/Common/Helpers/UserInventoryHelpers.cs
similarity index 97%
rename from OpenSim/Tests/Common/Setup/UserInventoryTestUtils.cs
rename to OpenSim/Tests/Common/Helpers/UserInventoryHelpers.cs
index 135c50eb74..04191349e3 100644
--- a/OpenSim/Tests/Common/Setup/UserInventoryTestUtils.cs
+++ b/OpenSim/Tests/Common/Helpers/UserInventoryHelpers.cs
@@ -34,9 +34,9 @@ using OpenSim.Services.Interfaces;
namespace OpenSim.Tests.Common
{
///
- /// Utility functions for carrying out user inventory related tests.
+ /// Utility functions for carrying out user inventory tests.
///
- public static class UserInventoryTestUtils
+ public static class UserInventoryHelpers
{
public static readonly string PATH_DELIMITER = "/";