From 1ccc99a3f9d96fbdea478be7e7df427a9e5377a7 Mon Sep 17 00:00:00 2001
From: Justin Clarke Casey
Date: Thu, 23 Apr 2009 20:15:05 +0000
Subject: * 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 3ee9e1b..232ad4e 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 0000000..d51107d
--- /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 544d13d..6bf56c2 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 e19160a..7f41de5 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 8732e2e..2d6187f 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 f302696..833b64a 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 8e6b461..e471160 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 a25b25f..323d62b 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;
--
cgit v1.1