From 1ccc99a3f9d96fbdea478be7e7df427a9e5377a7 Mon Sep 17 00:00:00 2001 From: Justin Clarke Casey Date: Thu, 23 Apr 2009 20:15:05 +0000 Subject: [PATCH] * refactor: move archive user inventory item serialization out to a separate file --- .../External/RegionSettingsSerializer.cs | 8 +- .../External/UserInventoryItemSerializer.cs | 198 ++++++++++++++++++ .../External/UserProfileSerializer.cs | 4 +- .../Plugins/InventoryArchivePlugin.cs | 73 +------ .../Archiver/InventoryArchiveReadRequest.cs | 97 ++------- .../Archiver/InventoryArchiveWriteRequest.cs | 68 +----- .../Archiver/Tests/InventoryArchiverTests.cs | 68 ++++++ .../World/Archiver/Tests/ArchiverTests.cs | 2 +- 8 files changed, 295 insertions(+), 223 deletions(-) create mode 100644 OpenSim/Framework/Serialization/External/UserInventoryItemSerializer.cs diff --git a/OpenSim/Framework/Serialization/External/RegionSettingsSerializer.cs b/OpenSim/Framework/Serialization/External/RegionSettingsSerializer.cs index 3ee9e1b63d..232ad4ed46 100644 --- a/OpenSim/Framework/Serialization/External/RegionSettingsSerializer.cs +++ b/OpenSim/Framework/Serialization/External/RegionSettingsSerializer.cs @@ -34,16 +34,14 @@ using OpenSim.Framework; namespace OpenSim.Framework.Serialization.External { /// - /// Serialize and deserialize region settings for an archive file format. + /// Serialize and deserialize region settings as an external format. /// - /// We didn't simply use automatic .NET serializagion for OpenSim.Framework.RegionSettings since this is really - /// a file format rather than an object serialization. public class RegionSettingsSerializer { protected static ASCIIEncoding m_asciiEncoding = new ASCIIEncoding(); /// - /// Deserialize region settings + /// Deserialize settings /// /// /// @@ -54,7 +52,7 @@ namespace OpenSim.Framework.Serialization.External } /// - /// Deserialize region settings + /// Deserialize settings /// /// /// diff --git a/OpenSim/Framework/Serialization/External/UserInventoryItemSerializer.cs b/OpenSim/Framework/Serialization/External/UserInventoryItemSerializer.cs new file mode 100644 index 0000000000..d51107d52f --- /dev/null +++ b/OpenSim/Framework/Serialization/External/UserInventoryItemSerializer.cs @@ -0,0 +1,198 @@ +/* + * 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 OpenSim 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 System.IO; +using System.Text; +using System.Xml; +using OpenMetaverse; +using OpenSim.Framework; + +namespace OpenSim.Framework.Serialization.External +{ + /// + /// Serialize and deserialize user inventory items as an external format. + /// + /// XXX: Please do not use yet. + public class UserInventoryItemSerializer + { + protected static ASCIIEncoding m_asciiEncoding = new ASCIIEncoding(); + + /// + /// Deserialize item + /// + /// + /// + /// + public static InventoryItemBase Deserialize(byte[] serialization) + { + return Deserialize(m_asciiEncoding.GetString(serialization, 0, serialization.Length)); + } + + /// + /// Deserialize settings + /// + /// + /// + /// + public static InventoryItemBase Deserialize(string serialization) + { + InventoryItemBase item = new InventoryItemBase(); + + StringReader sr = new StringReader(serialization); + XmlTextReader reader = new XmlTextReader(sr); + + reader.ReadStartElement("InventoryItem"); + reader.ReadStartElement("Name"); + item.Name = reader.ReadString(); + reader.ReadEndElement(); + reader.ReadStartElement("ID"); + item.ID = UUID.Parse(reader.ReadString()); + reader.ReadEndElement(); + reader.ReadStartElement("InvType"); + item.InvType = Convert.ToInt32(reader.ReadString()); + reader.ReadEndElement(); + reader.ReadStartElement("CreatorUUID"); + item.CreatorId = reader.ReadString(); + reader.ReadEndElement(); + reader.ReadStartElement("CreationDate"); + item.CreationDate = Convert.ToInt32(reader.ReadString()); + reader.ReadEndElement(); + reader.ReadStartElement("Owner"); + item.Owner = UUID.Parse(reader.ReadString()); + reader.ReadEndElement(); + reader.ReadElementString("Description"); + reader.ReadStartElement("AssetType"); + item.AssetType = Convert.ToInt32(reader.ReadString()); + reader.ReadEndElement(); + reader.ReadStartElement("AssetID"); + item.AssetID = UUID.Parse(reader.ReadString()); + reader.ReadEndElement(); + reader.ReadStartElement("SaleType"); + item.SaleType = Convert.ToByte(reader.ReadString()); + reader.ReadEndElement(); + reader.ReadStartElement("SalePrice"); + item.SalePrice = Convert.ToInt32(reader.ReadString()); + reader.ReadEndElement(); + reader.ReadStartElement("BasePermissions"); + item.BasePermissions = Convert.ToUInt32(reader.ReadString()); + reader.ReadEndElement(); + reader.ReadStartElement("CurrentPermissions"); + item.CurrentPermissions = Convert.ToUInt32(reader.ReadString()); + reader.ReadEndElement(); + reader.ReadStartElement("EveryOnePermssions"); + item.EveryOnePermissions = Convert.ToUInt32(reader.ReadString()); + reader.ReadEndElement(); + reader.ReadStartElement("NextPermissions"); + item.NextPermissions = Convert.ToUInt32(reader.ReadString()); + reader.ReadEndElement(); + reader.ReadStartElement("Flags"); + item.Flags = Convert.ToUInt32(reader.ReadString()); + reader.ReadEndElement(); + reader.ReadStartElement("GroupID"); + item.GroupID = UUID.Parse(reader.ReadString()); + reader.ReadEndElement(); + reader.ReadStartElement("GroupOwned"); + item.GroupOwned = Convert.ToBoolean(reader.ReadString()); + reader.ReadEndElement(); + + return item; + } + + public static string Serialize(InventoryItemBase inventoryItem) + { + StringWriter sw = new StringWriter(); + XmlTextWriter writer = new XmlTextWriter(sw); + writer.Formatting = Formatting.Indented; + writer.WriteStartDocument(); + + writer.WriteStartElement("InventoryItem"); + + writer.WriteStartElement("Name"); + writer.WriteString(inventoryItem.Name); + writer.WriteEndElement(); + writer.WriteStartElement("ID"); + writer.WriteString(inventoryItem.ID.ToString()); + writer.WriteEndElement(); + writer.WriteStartElement("InvType"); + writer.WriteString(inventoryItem.InvType.ToString()); + writer.WriteEndElement(); + writer.WriteStartElement("CreatorUUID"); + writer.WriteString(inventoryItem.CreatorId); + writer.WriteEndElement(); + writer.WriteStartElement("CreationDate"); + writer.WriteString(inventoryItem.CreationDate.ToString()); + writer.WriteEndElement(); + writer.WriteStartElement("Owner"); + writer.WriteString(inventoryItem.Owner.ToString()); + writer.WriteEndElement(); + writer.WriteStartElement("Description"); + writer.WriteString(inventoryItem.Description); + writer.WriteEndElement(); + writer.WriteStartElement("AssetType"); + writer.WriteString(inventoryItem.AssetType.ToString()); + writer.WriteEndElement(); + writer.WriteStartElement("AssetID"); + writer.WriteString(inventoryItem.AssetID.ToString()); + writer.WriteEndElement(); + writer.WriteStartElement("SaleType"); + writer.WriteString(inventoryItem.SaleType.ToString()); + writer.WriteEndElement(); + writer.WriteStartElement("SalePrice"); + writer.WriteString(inventoryItem.SalePrice.ToString()); + writer.WriteEndElement(); + writer.WriteStartElement("BasePermissions"); + writer.WriteString(inventoryItem.BasePermissions.ToString()); + writer.WriteEndElement(); + writer.WriteStartElement("CurrentPermissions"); + writer.WriteString(inventoryItem.CurrentPermissions.ToString()); + writer.WriteEndElement(); + writer.WriteStartElement("EveryOnePermssions"); + writer.WriteString(inventoryItem.EveryOnePermissions.ToString()); + writer.WriteEndElement(); + writer.WriteStartElement("NextPermissions"); + writer.WriteString(inventoryItem.NextPermissions.ToString()); + writer.WriteEndElement(); + writer.WriteStartElement("Flags"); + writer.WriteString(inventoryItem.Flags.ToString()); + writer.WriteEndElement(); + writer.WriteStartElement("GroupID"); + writer.WriteString(inventoryItem.GroupID.ToString()); + writer.WriteEndElement(); + writer.WriteStartElement("GroupOwned"); + writer.WriteString(inventoryItem.GroupOwned.ToString()); + writer.WriteEndElement(); + + writer.WriteEndElement(); + + writer.Close(); + sw.Close(); + + return sw.ToString(); + } + } +} diff --git a/OpenSim/Framework/Serialization/External/UserProfileSerializer.cs b/OpenSim/Framework/Serialization/External/UserProfileSerializer.cs index 544d13d571..6bf56c2db2 100644 --- a/OpenSim/Framework/Serialization/External/UserProfileSerializer.cs +++ b/OpenSim/Framework/Serialization/External/UserProfileSerializer.cs @@ -33,10 +33,8 @@ using OpenSim.Framework; namespace OpenSim.Framework.Serialization.External { /// - /// Serialize and deserialize region settings for an archive file format. + /// Serialize and deserialize region settings as an external format. /// - /// We didn't use automatic .NET serialization since this is really - /// a file format rather than an object serialization. public class UserProfileSerializer { public const int MAJOR_VERSION = 0; diff --git a/OpenSim/Grid/AssetInventoryServer/Plugins/InventoryArchivePlugin.cs b/OpenSim/Grid/AssetInventoryServer/Plugins/InventoryArchivePlugin.cs index e19160aba0..7f41de5ac6 100644 --- a/OpenSim/Grid/AssetInventoryServer/Plugins/InventoryArchivePlugin.cs +++ b/OpenSim/Grid/AssetInventoryServer/Plugins/InventoryArchivePlugin.cs @@ -34,6 +34,7 @@ using System.Reflection; using OpenMetaverse; using OpenSim.Framework; using OpenSim.Framework.Serialization; +using OpenSim.Framework.Serialization.External; using OpenSim.Framework.Servers; using log4net; @@ -178,7 +179,8 @@ namespace OpenSim.Grid.AssetInventoryServer.Plugins return rootFolder; } - private static void WriteInventoryFolderToArchive(TarArchiveWriter archive, InventoryFolderWithChildren folder, string path) + private static void WriteInventoryFolderToArchive( + TarArchiveWriter archive, InventoryFolderWithChildren folder, string path) { path += string.Format("{0}{1}{2}/", folder.Name, ArchiveConstants.INVENTORY_NODE_NAME_COMPONENT_SEPARATOR, folder.ID); archive.WriteDir(path); @@ -199,72 +201,9 @@ namespace OpenSim.Grid.AssetInventoryServer.Plugins private static void WriteInventoryItemToArchive(TarArchiveWriter archive, InventoryItemBase item, string path) { string filename = string.Format("{0}{1}_{2}.xml", path, item.Name, item.ID); - - StringWriter sw = new StringWriter(); - XmlTextWriter writer = new XmlTextWriter(sw); - writer.Formatting = Formatting.Indented; - - writer.WriteStartElement("InventoryItem"); - - writer.WriteStartElement("Name"); - writer.WriteString(item.Name); - writer.WriteEndElement(); - writer.WriteStartElement("ID"); - writer.WriteString(item.ID.ToString()); - writer.WriteEndElement(); - writer.WriteStartElement("InvType"); - writer.WriteString(item.InvType.ToString()); - writer.WriteEndElement(); - writer.WriteStartElement("CreatorUUID"); - writer.WriteString(item.CreatorId); - writer.WriteEndElement(); - writer.WriteStartElement("CreationDate"); - writer.WriteString(item.CreationDate.ToString()); - writer.WriteEndElement(); - writer.WriteStartElement("Owner"); - writer.WriteString(item.Owner.ToString()); - writer.WriteEndElement(); - writer.WriteStartElement("Description"); - writer.WriteString(item.Description); - writer.WriteEndElement(); - writer.WriteStartElement("AssetType"); - writer.WriteString(item.AssetType.ToString()); - writer.WriteEndElement(); - writer.WriteStartElement("AssetID"); - writer.WriteString(item.AssetID.ToString()); - writer.WriteEndElement(); - writer.WriteStartElement("SaleType"); - writer.WriteString(item.SaleType.ToString()); - writer.WriteEndElement(); - writer.WriteStartElement("SalePrice"); - writer.WriteString(item.SalePrice.ToString()); - writer.WriteEndElement(); - writer.WriteStartElement("BasePermissions"); - writer.WriteString(item.BasePermissions.ToString()); - writer.WriteEndElement(); - writer.WriteStartElement("CurrentPermissions"); - writer.WriteString(item.CurrentPermissions.ToString()); - writer.WriteEndElement(); - writer.WriteStartElement("EveryOnePermssions"); - writer.WriteString(item.EveryOnePermissions.ToString()); - writer.WriteEndElement(); - writer.WriteStartElement("NextPermissions"); - writer.WriteString(item.NextPermissions.ToString()); - writer.WriteEndElement(); - writer.WriteStartElement("Flags"); - writer.WriteString(item.Flags.ToString()); - writer.WriteEndElement(); - writer.WriteStartElement("GroupID"); - writer.WriteString(item.GroupID.ToString()); - writer.WriteEndElement(); - writer.WriteStartElement("GroupOwned"); - writer.WriteString(item.GroupOwned.ToString()); - writer.WriteEndElement(); - - writer.WriteEndElement(); - - archive.WriteFile(filename, sw.ToString()); - + string serialization = UserInventoryItemSerializer.Serialize(item); + archive.WriteFile(filename, serialization); + //m_assetGatherer.GatherAssetUuids(item.AssetID, (AssetType) item.AssetType, assetUuids); } } diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs index 8732e2e144..2d6187f025 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs @@ -36,6 +36,7 @@ using log4net; using OpenMetaverse; using OpenSim.Framework; using OpenSim.Framework.Serialization; +using OpenSim.Framework.Serialization.External; using OpenSim.Framework.Communications; using OpenSim.Framework.Communications.Cache; using OpenSim.Region.CoreModules.World.Archiver; @@ -78,71 +79,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver this.commsManager = commsManager; } - protected InventoryItemBase LoadInvItem(string contents) - { - InventoryItemBase item = new InventoryItemBase(); - StringReader sr = new StringReader(contents); - XmlTextReader reader = new XmlTextReader(sr); - - if (contents.Equals("")) return null; - - reader.ReadStartElement("InventoryItem"); - reader.ReadStartElement("Name"); - item.Name = reader.ReadString(); - reader.ReadEndElement(); - reader.ReadStartElement("ID"); - item.ID = UUID.Parse(reader.ReadString()); - reader.ReadEndElement(); - reader.ReadStartElement("InvType"); - item.InvType = Convert.ToInt32(reader.ReadString()); - reader.ReadEndElement(); - reader.ReadStartElement("CreatorUUID"); - item.CreatorId = reader.ReadString(); - reader.ReadEndElement(); - reader.ReadStartElement("CreationDate"); - item.CreationDate = Convert.ToInt32(reader.ReadString()); - reader.ReadEndElement(); - reader.ReadStartElement("Owner"); - item.Owner = UUID.Parse(reader.ReadString()); - reader.ReadEndElement(); - reader.ReadElementString("Description"); - reader.ReadStartElement("AssetType"); - item.AssetType = Convert.ToInt32(reader.ReadString()); - reader.ReadEndElement(); - reader.ReadStartElement("AssetID"); - item.AssetID = UUID.Parse(reader.ReadString()); - reader.ReadEndElement(); - reader.ReadStartElement("SaleType"); - item.SaleType = Convert.ToByte(reader.ReadString()); - reader.ReadEndElement(); - reader.ReadStartElement("SalePrice"); - item.SalePrice = Convert.ToInt32(reader.ReadString()); - reader.ReadEndElement(); - reader.ReadStartElement("BasePermissions"); - item.BasePermissions = Convert.ToUInt32(reader.ReadString()); - reader.ReadEndElement(); - reader.ReadStartElement("CurrentPermissions"); - item.CurrentPermissions = Convert.ToUInt32(reader.ReadString()); - reader.ReadEndElement(); - reader.ReadStartElement("EveryOnePermssions"); - item.EveryOnePermissions = Convert.ToUInt32(reader.ReadString()); - reader.ReadEndElement(); - reader.ReadStartElement("NextPermissions"); - item.NextPermissions = Convert.ToUInt32(reader.ReadString()); - reader.ReadEndElement(); - reader.ReadStartElement("Flags"); - item.Flags = Convert.ToUInt32(reader.ReadString()); - reader.ReadEndElement(); - reader.ReadStartElement("GroupID"); - item.GroupID = UUID.Parse(reader.ReadString()); - reader.ReadEndElement(); - reader.ReadStartElement("GroupOwned"); - item.GroupOwned = Convert.ToBoolean(reader.ReadString()); - reader.ReadEndElement(); - - return item; - } - /// /// Execute the request /// @@ -322,27 +258,24 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver if (TarArchiveReader.TarEntryType.TYPE_DIRECTORY != entryType) { - InventoryItemBase item = LoadInvItem(m_asciiEncoding.GetString(data)); + InventoryItemBase item = UserInventoryItemSerializer.Deserialize(data); + + // Don't use the item ID that's in the file + item.ID = UUID.Random(); - if (item != null) - { - // Don't use the item ID that's in the file - item.ID = UUID.Random(); + item.CreatorId = m_userInfo.UserProfile.ID.ToString(); + item.Owner = m_userInfo.UserProfile.ID; - item.CreatorId = m_userInfo.UserProfile.ID.ToString(); - item.Owner = m_userInfo.UserProfile.ID; + // Reset folder ID to the one in which we want to load it + item.Folder = foundFolder.ID; - // Reset folder ID to the one in which we want to load it - item.Folder = foundFolder.ID; + m_userInfo.AddItem(item); + successfulItemRestores++; - m_userInfo.AddItem(item); - successfulItemRestores++; - - // If we're loading an item directly into the given destination folder then we need to record - // it separately from any loaded root folders - if (rootDestinationFolder == foundFolder) - nodesLoaded.Add(item); - } + // If we're loading an item directly into the given destination folder then we need to record + // it separately from any loaded root folders + if (rootDestinationFolder == foundFolder) + nodesLoaded.Add(item); } } } diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs index f302696096..833b64a2eb 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs @@ -123,71 +123,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver protected void SaveInvItem(InventoryItemBase inventoryItem, string path) { - string filename = string.Format("{0}{1}_{2}.xml", path, inventoryItem.Name, inventoryItem.ID); - StringWriter sw = new StringWriter(); - XmlTextWriter writer = new XmlTextWriter(sw); - writer.Formatting = Formatting.Indented; - - writer.WriteStartElement("InventoryItem"); - - writer.WriteStartElement("Name"); - writer.WriteString(inventoryItem.Name); - writer.WriteEndElement(); - writer.WriteStartElement("ID"); - writer.WriteString(inventoryItem.ID.ToString()); - writer.WriteEndElement(); - writer.WriteStartElement("InvType"); - writer.WriteString(inventoryItem.InvType.ToString()); - writer.WriteEndElement(); - writer.WriteStartElement("CreatorUUID"); - writer.WriteString(inventoryItem.CreatorId); - writer.WriteEndElement(); - writer.WriteStartElement("CreationDate"); - writer.WriteString(inventoryItem.CreationDate.ToString()); - writer.WriteEndElement(); - writer.WriteStartElement("Owner"); - writer.WriteString(inventoryItem.Owner.ToString()); - writer.WriteEndElement(); - writer.WriteStartElement("Description"); - writer.WriteString(inventoryItem.Description); - writer.WriteEndElement(); - writer.WriteStartElement("AssetType"); - writer.WriteString(inventoryItem.AssetType.ToString()); - writer.WriteEndElement(); - writer.WriteStartElement("AssetID"); - writer.WriteString(inventoryItem.AssetID.ToString()); - writer.WriteEndElement(); - writer.WriteStartElement("SaleType"); - writer.WriteString(inventoryItem.SaleType.ToString()); - writer.WriteEndElement(); - writer.WriteStartElement("SalePrice"); - writer.WriteString(inventoryItem.SalePrice.ToString()); - writer.WriteEndElement(); - writer.WriteStartElement("BasePermissions"); - writer.WriteString(inventoryItem.BasePermissions.ToString()); - writer.WriteEndElement(); - writer.WriteStartElement("CurrentPermissions"); - writer.WriteString(inventoryItem.CurrentPermissions.ToString()); - writer.WriteEndElement(); - writer.WriteStartElement("EveryOnePermssions"); - writer.WriteString(inventoryItem.EveryOnePermissions.ToString()); - writer.WriteEndElement(); - writer.WriteStartElement("NextPermissions"); - writer.WriteString(inventoryItem.NextPermissions.ToString()); - writer.WriteEndElement(); - writer.WriteStartElement("Flags"); - writer.WriteString(inventoryItem.Flags.ToString()); - writer.WriteEndElement(); - writer.WriteStartElement("GroupID"); - writer.WriteString(inventoryItem.GroupID.ToString()); - writer.WriteEndElement(); - writer.WriteStartElement("GroupOwned"); - writer.WriteString(inventoryItem.GroupOwned.ToString()); - writer.WriteEndElement(); - - writer.WriteEndElement(); - - m_archive.WriteFile(filename, sw.ToString()); + string filename = string.Format("{0}{1}_{2}.xml", path, inventoryItem.Name, inventoryItem.ID); + string serialization = UserInventoryItemSerializer.Serialize(inventoryItem); + m_archive.WriteFile(filename, serialization); UUID creatorId = inventoryItem.CreatorIdAsUuid; diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs index 8e6b461788..e471160ad6 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs @@ -188,5 +188,73 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests // TODO: Test presence of more files and contents of files. } + + /* + /// + /// Test loading a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet). + /// + [Test] + public void TestLoadIarV0p1() + { + //log4net.Config.XmlConfigurator.Configure(); + + MemoryStream archiveWriteStream = new MemoryStream(); + TarArchiveWriter tar = new TarArchiveWriter(archiveWriteStream); + + string item1FileName = string.Format("{0}{1}/{2}", INVENTORY_PATH, "a", "b.lsl"); + tar.WriteFile(item1FileName, item1. + + string part1Name = "object1"; + PrimitiveBaseShape shape = PrimitiveBaseShape.CreateCylinder(); + Vector3 groupPosition = new Vector3(90, 80, 70); + Quaternion rotationOffset = new Quaternion(60, 70, 80, 90); + Vector3 offsetPosition = new Vector3(20, 25, 30); + + SerialiserModule serialiserModule = new SerialiserModule(); + ArchiverModule archiverModule = new ArchiverModule(); + + Scene scene = SceneSetupHelpers.SetupScene(); + SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule); + + SceneObjectPart part1 + = new SceneObjectPart( + UUID.Zero, shape, groupPosition, rotationOffset, offsetPosition); + part1.Name = part1Name; + SceneObjectGroup object1 = new SceneObjectGroup(part1); + scene.AddNewSceneObject(object1, false); + + string object1FileName = string.Format( + "{0}_{1:000}-{2:000}-{3:000}__{4}.xml", + part1Name, + Math.Round(groupPosition.X), Math.Round(groupPosition.Y), Math.Round(groupPosition.Z), + part1.UUID); + tar.WriteFile(ArchiveConstants.OBJECTS_PATH + object1FileName, object1.ToXmlString2()); + + tar.Close(); + + MemoryStream archiveReadStream = new MemoryStream(archiveWriteStream.ToArray()); + + // SerialiserModule serialiserModule = new SerialiserModule(); + // ArchiverModule archiverModule = new ArchiverModule(); + + // Scene scene = SceneSetupHelpers.SetupScene(); + // SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule); + + archiverModule.DearchiveRegion(archiveReadStream); + + SceneObjectPart object1PartLoaded = scene.GetSceneObjectPart(part1Name); + + Assert.That(object1PartLoaded, Is.Not.Null, "object1 was not loaded"); + Assert.That(object1PartLoaded.Name, Is.EqualTo(part1Name), "object1 names not identical"); + Assert.That(object1PartLoaded.GroupPosition, Is.EqualTo(groupPosition), "object1 group position not equal"); + Assert.That( + object1PartLoaded.RotationOffset, Is.EqualTo(rotationOffset), "object1 rotation offset not equal"); + Assert.That( + object1PartLoaded.OffsetPosition, Is.EqualTo(offsetPosition), "object1 offset position not equal"); + + // Temporary + Console.WriteLine("Successfully completed {0}", MethodBase.GetCurrentMethod()); + } + */ } } diff --git a/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs b/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs index a25b25ffd3..323d62ba93 100644 --- a/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs +++ b/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs @@ -44,7 +44,7 @@ using OpenSim.Tests.Common.Setup; namespace OpenSim.Region.CoreModules.World.Archiver.Tests { - [TestFixture, LongRunning] + [TestFixture] public class ArchiverTests { private Guid m_lastRequestId;