Rename OpenSim.Framework.Archive to OpenSim.Framework.Serialization
Update using statements and prebuild.xml. Also trim trailing whitespace.0.6.5-rc1
							parent
							
								
									abc5df12c8
								
							
						
					
					
						commit
						f28886e26d
					
				| 
						 | 
				
			
			@ -28,7 +28,7 @@
 | 
			
		|||
using System.Collections.Generic;
 | 
			
		||||
using OpenMetaverse;
 | 
			
		||||
 | 
			
		||||
namespace OpenSim.Framework.Archive
 | 
			
		||||
namespace OpenSim.Framework.Serialization
 | 
			
		||||
{
 | 
			
		||||
    /// <summary>
 | 
			
		||||
    /// Constants for the archiving module
 | 
			
		||||
| 
						 | 
				
			
			@ -31,7 +31,7 @@ using System.Reflection;
 | 
			
		|||
using System.Text;
 | 
			
		||||
using log4net;
 | 
			
		||||
 | 
			
		||||
namespace OpenSim.Framework.Archive
 | 
			
		||||
namespace OpenSim.Framework.Serialization
 | 
			
		||||
{
 | 
			
		||||
    /// <summary>
 | 
			
		||||
    /// Temporary code to do the bare minimum required to read a tar archive for our purposes
 | 
			
		||||
| 
						 | 
				
			
			@ -30,7 +30,7 @@ using System.Collections.Generic;
 | 
			
		|||
using System.IO;
 | 
			
		||||
using System.Text;
 | 
			
		||||
 | 
			
		||||
namespace OpenSim.Framework.Archive
 | 
			
		||||
namespace OpenSim.Framework.Serialization
 | 
			
		||||
{
 | 
			
		||||
    /// <summary>
 | 
			
		||||
    /// Temporary code to produce a tar archive in tar v7 format
 | 
			
		||||
| 
						 | 
				
			
			@ -33,7 +33,7 @@ using System.Xml;
 | 
			
		|||
using System.Reflection;
 | 
			
		||||
using OpenMetaverse;
 | 
			
		||||
using OpenSim.Framework;
 | 
			
		||||
using OpenSim.Framework.Archive;
 | 
			
		||||
using OpenSim.Framework.Serialization;
 | 
			
		||||
using OpenSim.Framework.Servers;
 | 
			
		||||
using log4net;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -35,7 +35,7 @@ using System.Xml;
 | 
			
		|||
using log4net;
 | 
			
		||||
using OpenMetaverse;
 | 
			
		||||
using OpenSim.Framework;
 | 
			
		||||
using OpenSim.Framework.Archive;
 | 
			
		||||
using OpenSim.Framework.Serialization;
 | 
			
		||||
using OpenSim.Framework.Communications;
 | 
			
		||||
using OpenSim.Framework.Communications.Cache;
 | 
			
		||||
using OpenSim.Region.CoreModules.World.Archiver;
 | 
			
		||||
| 
						 | 
				
			
			@ -208,19 +208,19 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
 | 
			
		|||
                        failedAssetRestores++;
 | 
			
		||||
                }
 | 
			
		||||
                else if (filePath.StartsWith(ArchiveConstants.INVENTORY_PATH))
 | 
			
		||||
                {                    
 | 
			
		||||
                {
 | 
			
		||||
                    string fsPath = filePath.Substring(ArchiveConstants.INVENTORY_PATH.Length);
 | 
			
		||||
 | 
			
		||||
                    // Remove the file portion if we aren't already dealing with a directory path
 | 
			
		||||
                    if (TarArchiveReader.TarEntryType.TYPE_DIRECTORY != entryType)
 | 
			
		||||
                        fsPath = fsPath.Remove(fsPath.LastIndexOf("/") + 1);
 | 
			
		||||
                    
 | 
			
		||||
 | 
			
		||||
                    string originalFsPath = fsPath;
 | 
			
		||||
 | 
			
		||||
                    m_log.DebugFormat("[INVENTORY ARCHIVER]: Loading to folder {0}", fsPath);
 | 
			
		||||
 | 
			
		||||
                    InventoryFolderImpl foundFolder = null;
 | 
			
		||||
                    
 | 
			
		||||
 | 
			
		||||
                    // XXX: Nasty way of dealing with a path that has no directory component
 | 
			
		||||
                    if (fsPath.Length > 0)
 | 
			
		||||
                    {
 | 
			
		||||
| 
						 | 
				
			
			@ -323,15 +323,15 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
 | 
			
		|||
                    if (TarArchiveReader.TarEntryType.TYPE_DIRECTORY != entryType)
 | 
			
		||||
                    {
 | 
			
		||||
                        InventoryItemBase item = LoadInvItem(m_asciiEncoding.GetString(data));
 | 
			
		||||
                        
 | 
			
		||||
 | 
			
		||||
                        if (item != null)
 | 
			
		||||
                        {      
 | 
			
		||||
                        {
 | 
			
		||||
                            // Don't use the item ID that's in the file
 | 
			
		||||
                            item.ID = UUID.Random();
 | 
			
		||||
 | 
			
		||||
                            item.Creator = m_userInfo.UserProfile.ID;
 | 
			
		||||
                            item.Owner = m_userInfo.UserProfile.ID;
 | 
			
		||||
                            
 | 
			
		||||
 | 
			
		||||
                            // Reset folder ID to the one in which we want to load it
 | 
			
		||||
                            item.Folder = foundFolder.ID;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -34,7 +34,7 @@ using System.Xml;
 | 
			
		|||
using log4net;
 | 
			
		||||
using OpenMetaverse;
 | 
			
		||||
using OpenSim.Framework;
 | 
			
		||||
using OpenSim.Framework.Archive;
 | 
			
		||||
using OpenSim.Framework.Serialization;
 | 
			
		||||
using OpenSim.Framework.Communications;
 | 
			
		||||
using OpenSim.Framework.Communications.Cache;
 | 
			
		||||
using OpenSim.Region.CoreModules.World.Archiver;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -34,7 +34,7 @@ using NUnit.Framework.SyntaxHelpers;
 | 
			
		|||
using OpenMetaverse;
 | 
			
		||||
using OpenSim.Data;
 | 
			
		||||
using OpenSim.Framework;
 | 
			
		||||
using OpenSim.Framework.Archive;
 | 
			
		||||
using OpenSim.Framework.Serialization;
 | 
			
		||||
using OpenSim.Framework.Communications;
 | 
			
		||||
using OpenSim.Framework.Communications.Cache;
 | 
			
		||||
using OpenSim.Region.CoreModules.Avatar.Inventory.Archiver;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -35,7 +35,7 @@ using System.Text;
 | 
			
		|||
using log4net;
 | 
			
		||||
using OpenMetaverse;
 | 
			
		||||
using OpenSim.Framework;
 | 
			
		||||
using OpenSim.Framework.Archive;
 | 
			
		||||
using OpenSim.Framework.Serialization;
 | 
			
		||||
using OpenSim.Framework.Communications.Cache;
 | 
			
		||||
using OpenSim.Region.CoreModules.World.Terrain;
 | 
			
		||||
using OpenSim.Region.Framework.Interfaces;
 | 
			
		||||
| 
						 | 
				
			
			@ -52,14 +52,14 @@ namespace OpenSim.Region.CoreModules.World.Archiver
 | 
			
		|||
 | 
			
		||||
        private static ASCIIEncoding m_asciiEncoding = new ASCIIEncoding();
 | 
			
		||||
 | 
			
		||||
        private Scene m_scene;                        
 | 
			
		||||
        private Scene m_scene;
 | 
			
		||||
        private Stream m_loadStream;
 | 
			
		||||
        private string m_errorMessage;
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        /// <value>
 | 
			
		||||
        /// Should the archive being loaded be merged with what is already on the region?
 | 
			
		||||
        /// </value>
 | 
			
		||||
        private bool m_merge;        
 | 
			
		||||
        private bool m_merge;
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Used to cache lookups for valid uuids.
 | 
			
		||||
| 
						 | 
				
			
			@ -109,7 +109,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
 | 
			
		|||
                {
 | 
			
		||||
                    //m_log.DebugFormat(
 | 
			
		||||
                    //    "[ARCHIVER]: Successfully read {0} ({1} bytes)}", filePath, data.Length);
 | 
			
		||||
                    
 | 
			
		||||
 | 
			
		||||
                    if (TarArchiveReader.TarEntryType.TYPE_DIRECTORY == entryType)
 | 
			
		||||
                    {
 | 
			
		||||
                        m_log.WarnFormat(
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -33,7 +33,7 @@ using System.Xml;
 | 
			
		|||
using log4net;
 | 
			
		||||
using OpenMetaverse;
 | 
			
		||||
using OpenSim.Framework;
 | 
			
		||||
using OpenSim.Framework.Archive;
 | 
			
		||||
using OpenSim.Framework.Serialization;
 | 
			
		||||
using OpenSim.Region.CoreModules.World.Terrain;
 | 
			
		||||
using OpenSim.Region.Framework.Interfaces;
 | 
			
		||||
using OpenSim.Region.Framework.Scenes;
 | 
			
		||||
| 
						 | 
				
			
			@ -44,7 +44,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
 | 
			
		|||
    /// Method called when all the necessary assets for an archive request have been received.
 | 
			
		||||
    /// </summary>
 | 
			
		||||
    public delegate void AssetsRequestCallback(IDictionary<UUID, AssetBase> assetsFound, ICollection<UUID> assetsNotFoundUuids);
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    /// <summary>
 | 
			
		||||
    /// Execute the write of an archive once we have received all the necessary data
 | 
			
		||||
    /// </summary>
 | 
			
		||||
| 
						 | 
				
			
			@ -81,34 +81,34 @@ namespace OpenSim.Region.CoreModules.World.Archiver
 | 
			
		|||
            }
 | 
			
		||||
 | 
			
		||||
            m_log.InfoFormat(
 | 
			
		||||
                "[ARCHIVER]: Received {0} of {1} assets requested", 
 | 
			
		||||
                "[ARCHIVER]: Received {0} of {1} assets requested",
 | 
			
		||||
                assetsFound.Count, assetsFound.Count + assetsNotFoundUuids.Count);
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            m_log.InfoFormat("[ARCHIVER]: Creating archive file.  This may take some time.");
 | 
			
		||||
 | 
			
		||||
            TarArchiveWriter archive = new TarArchiveWriter(m_saveStream);
 | 
			
		||||
 | 
			
		||||
            // Write out control file
 | 
			
		||||
            archive.WriteFile(ArchiveConstants.CONTROL_FILE_PATH, Create0p2ControlFile());
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            m_log.InfoFormat("[ARCHIVER]: Added control file to archive.");
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            // Write out region settings
 | 
			
		||||
            string settingsPath 
 | 
			
		||||
            string settingsPath
 | 
			
		||||
                = String.Format("{0}{1}.xml", ArchiveConstants.SETTINGS_PATH, m_scene.RegionInfo.RegionName);
 | 
			
		||||
            archive.WriteFile(settingsPath, RegionSettingsSerializer.Serialize(m_scene.RegionInfo.RegionSettings));
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            m_log.InfoFormat("[ARCHIVER]: Added region settings to archive.");
 | 
			
		||||
 | 
			
		||||
            // Write out terrain
 | 
			
		||||
            string terrainPath 
 | 
			
		||||
            string terrainPath
 | 
			
		||||
                = String.Format("{0}{1}.r32", ArchiveConstants.TERRAINS_PATH, m_scene.RegionInfo.RegionName);
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            MemoryStream ms = new MemoryStream();
 | 
			
		||||
            m_terrainModule.SaveToStream(terrainPath, ms);
 | 
			
		||||
            archive.WriteFile(terrainPath, ms.ToArray());
 | 
			
		||||
            ms.Close();
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            m_log.InfoFormat("[ARCHIVER]: Added terrain information to archive.");
 | 
			
		||||
 | 
			
		||||
            // Write out scene object metadata
 | 
			
		||||
| 
						 | 
				
			
			@ -128,7 +128,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
 | 
			
		|||
 | 
			
		||||
                archive.WriteFile(filename, serializedObject);
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            m_log.InfoFormat("[ARCHIVER]: Added scene objects to archive.");
 | 
			
		||||
 | 
			
		||||
            // Write out assets
 | 
			
		||||
| 
						 | 
				
			
			@ -138,7 +138,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
 | 
			
		|||
            archive.Close();
 | 
			
		||||
 | 
			
		||||
            m_log.InfoFormat("[ARCHIVER]: Wrote out OpenSimulator archive for {0}", m_scene.RegionInfo.RegionName);
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            m_scene.EventManager.TriggerOarFileSaved(String.Empty);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -32,7 +32,7 @@ using System.Xml;
 | 
			
		|||
using log4net;
 | 
			
		||||
using OpenMetaverse;
 | 
			
		||||
using OpenSim.Framework;
 | 
			
		||||
using OpenSim.Framework.Archive;
 | 
			
		||||
using OpenSim.Framework.Serialization;
 | 
			
		||||
 | 
			
		||||
namespace OpenSim.Region.CoreModules.World.Archiver
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -47,7 +47,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
 | 
			
		|||
        /// Post a message to the log every x assets as a progress bar
 | 
			
		||||
        /// </value>
 | 
			
		||||
        private static int LOG_ASSET_LOAD_NOTIFICATION_INTERVAL = 50;
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Archive assets
 | 
			
		||||
        /// </summary>
 | 
			
		||||
| 
						 | 
				
			
			@ -122,7 +122,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
 | 
			
		|||
        {
 | 
			
		||||
            // It appears that gtar, at least, doesn't need the intermediate directory entries in the tar
 | 
			
		||||
            //archive.AddDir("assets");
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            int assetsAdded = 0;
 | 
			
		||||
 | 
			
		||||
            foreach (UUID uuid in m_assets.Keys)
 | 
			
		||||
| 
						 | 
				
			
			@ -145,13 +145,13 @@ namespace OpenSim.Region.CoreModules.World.Archiver
 | 
			
		|||
                archive.WriteFile(
 | 
			
		||||
                    ArchiveConstants.ASSETS_PATH + uuid.ToString() + extension,
 | 
			
		||||
                    asset.Data);
 | 
			
		||||
                
 | 
			
		||||
 | 
			
		||||
                assetsAdded++;
 | 
			
		||||
                
 | 
			
		||||
 | 
			
		||||
                if (assetsAdded % LOG_ASSET_LOAD_NOTIFICATION_INTERVAL == 0)
 | 
			
		||||
                    m_log.InfoFormat("[ARCHIVER]: Added {0} assets to archive", assetsAdded);
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            if (assetsAdded % LOG_ASSET_LOAD_NOTIFICATION_INTERVAL != 0)
 | 
			
		||||
                m_log.InfoFormat("[ARCHIVER]: Added {0} assets to archive", assetsAdded);
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -34,7 +34,7 @@ using System.Xml;
 | 
			
		|||
using log4net;
 | 
			
		||||
using OpenMetaverse;
 | 
			
		||||
using OpenSim.Framework;
 | 
			
		||||
using OpenSim.Framework.Archive;
 | 
			
		||||
using OpenSim.Framework.Serialization;
 | 
			
		||||
 | 
			
		||||
namespace OpenSim.Region.CoreModules.World.Archiver
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -34,7 +34,7 @@ using NUnit.Framework;
 | 
			
		|||
using NUnit.Framework.SyntaxHelpers;
 | 
			
		||||
using OpenMetaverse;
 | 
			
		||||
using OpenSim.Framework;
 | 
			
		||||
using OpenSim.Framework.Archive;
 | 
			
		||||
using OpenSim.Framework.Serialization;
 | 
			
		||||
using OpenSim.Region.CoreModules.World.Serialiser;
 | 
			
		||||
using OpenSim.Region.CoreModules.World.Terrain;
 | 
			
		||||
using OpenSim.Region.Framework.Scenes;
 | 
			
		||||
| 
						 | 
				
			
			@ -48,29 +48,29 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
 | 
			
		|||
        private void SaveCompleted(string errorMessage)
 | 
			
		||||
        {
 | 
			
		||||
            lock (this)
 | 
			
		||||
            {               
 | 
			
		||||
            {
 | 
			
		||||
                System.Console.WriteLine("About to pulse ArchiverTests");
 | 
			
		||||
                Monitor.PulseAll(this);                
 | 
			
		||||
            }            
 | 
			
		||||
                Monitor.PulseAll(this);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Test saving a V0.2 OpenSim Region Archive.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        [Test]        
 | 
			
		||||
        [Test]
 | 
			
		||||
        public void TestSaveOarV0p2()
 | 
			
		||||
        {        
 | 
			
		||||
        {
 | 
			
		||||
            log4net.Config.XmlConfigurator.Configure();
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            ArchiverModule archiverModule = new ArchiverModule();
 | 
			
		||||
            SerialiserModule serialiserModule = new SerialiserModule();
 | 
			
		||||
            TerrainModule terrainModule = new TerrainModule();
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            Scene scene = SceneSetupHelpers.SetupScene();
 | 
			
		||||
            SceneSetupHelpers.SetupSceneModules(scene, archiverModule, serialiserModule, terrainModule);
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            SceneObjectPart part1;
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            // Create and add prim 1
 | 
			
		||||
            {
 | 
			
		||||
                string partName = "My Little Pony";
 | 
			
		||||
| 
						 | 
				
			
			@ -79,17 +79,17 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
 | 
			
		|||
                Vector3 groupPosition = new Vector3(10, 20, 30);
 | 
			
		||||
                Quaternion rotationOffset = new Quaternion(20, 30, 40, 50);
 | 
			
		||||
                Vector3 offsetPosition = new Vector3(5, 10, 15);
 | 
			
		||||
                
 | 
			
		||||
                part1 
 | 
			
		||||
 | 
			
		||||
                part1
 | 
			
		||||
                    = new SceneObjectPart(
 | 
			
		||||
                        ownerId, shape, groupPosition, rotationOffset, offsetPosition);
 | 
			
		||||
                part1.Name = partName;
 | 
			
		||||
                
 | 
			
		||||
 | 
			
		||||
                scene.AddNewSceneObject(new SceneObjectGroup(part1), false);
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            SceneObjectPart part2;
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            // Create and add prim 2
 | 
			
		||||
            {
 | 
			
		||||
                string partName = "Action Man";
 | 
			
		||||
| 
						 | 
				
			
			@ -98,28 +98,28 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
 | 
			
		|||
                Vector3 groupPosition = new Vector3(90, 80, 70);
 | 
			
		||||
                Quaternion rotationOffset = new Quaternion(60, 70, 80, 90);
 | 
			
		||||
                Vector3 offsetPosition = new Vector3(20, 25, 30);
 | 
			
		||||
                
 | 
			
		||||
 | 
			
		||||
                part2
 | 
			
		||||
                    = new SceneObjectPart(
 | 
			
		||||
                        ownerId, shape, groupPosition, rotationOffset, offsetPosition);
 | 
			
		||||
                part2.Name = partName;
 | 
			
		||||
                
 | 
			
		||||
 | 
			
		||||
                scene.AddNewSceneObject(new SceneObjectGroup(part2), false);
 | 
			
		||||
            }                                    
 | 
			
		||||
            
 | 
			
		||||
            MemoryStream archiveWriteStream = new MemoryStream();            
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            MemoryStream archiveWriteStream = new MemoryStream();
 | 
			
		||||
            scene.EventManager.OnOarFileSaved += SaveCompleted;
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            lock (this)
 | 
			
		||||
            {
 | 
			
		||||
                archiverModule.ArchiveRegion(archiveWriteStream);                            
 | 
			
		||||
                archiverModule.ArchiveRegion(archiveWriteStream);
 | 
			
		||||
                Monitor.Wait(this, 60000);
 | 
			
		||||
            }         
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            byte[] archive = archiveWriteStream.ToArray();           
 | 
			
		||||
            byte[] archive = archiveWriteStream.ToArray();
 | 
			
		||||
            MemoryStream archiveReadStream = new MemoryStream(archive);
 | 
			
		||||
            TarArchiveReader tar = new TarArchiveReader(archiveReadStream);
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
            bool gotControlFile = false;
 | 
			
		||||
            bool gotObject1File = false;
 | 
			
		||||
            bool gotObject2File = false;
 | 
			
		||||
| 
						 | 
				
			
			@ -132,11 +132,11 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
 | 
			
		|||
                "{0}_{1:000}-{2:000}-{3:000}__{4}.xml",
 | 
			
		||||
                part2.Name,
 | 
			
		||||
                Math.Round(part2.GroupPosition.X), Math.Round(part2.GroupPosition.Y), Math.Round(part2.GroupPosition.Z),
 | 
			
		||||
                part2.UUID);            
 | 
			
		||||
            
 | 
			
		||||
                part2.UUID);
 | 
			
		||||
 | 
			
		||||
            string filePath;
 | 
			
		||||
            TarArchiveReader.TarEntryType tarEntryType;
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            while (tar.ReadEntry(out filePath, out tarEntryType) != null)
 | 
			
		||||
            {
 | 
			
		||||
                if (ArchiveConstants.CONTROL_FILE_PATH == filePath)
 | 
			
		||||
| 
						 | 
				
			
			@ -146,7 +146,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
 | 
			
		|||
                else if (filePath.StartsWith(ArchiveConstants.OBJECTS_PATH))
 | 
			
		||||
                {
 | 
			
		||||
                    string fileName = filePath.Remove(0, ArchiveConstants.OBJECTS_PATH.Length);
 | 
			
		||||
                    
 | 
			
		||||
 | 
			
		||||
                    if (fileName.StartsWith(part1.Name))
 | 
			
		||||
                    {
 | 
			
		||||
                        Assert.That(fileName, Is.EqualTo(expectedObject1FileName));
 | 
			
		||||
| 
						 | 
				
			
			@ -155,7 +155,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
 | 
			
		|||
                    else if (fileName.StartsWith(part2.Name))
 | 
			
		||||
                    {
 | 
			
		||||
                        Assert.That(fileName, Is.EqualTo(expectedObject2FileName));
 | 
			
		||||
                        gotObject2File = true;                        
 | 
			
		||||
                        gotObject2File = true;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
| 
						 | 
				
			
			@ -163,7 +163,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
 | 
			
		|||
            Assert.That(gotControlFile, Is.True, "No control file in archive");
 | 
			
		||||
            Assert.That(gotObject1File, Is.True, "No object1 file in archive");
 | 
			
		||||
            Assert.That(gotObject2File, Is.True, "No object2 file in archive");
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            // TODO: Test presence of more files and contents of files.
 | 
			
		||||
            // Temporary
 | 
			
		||||
            Console.WriteLine("Successfully completed {0}", MethodBase.GetCurrentMethod());
 | 
			
		||||
| 
						 | 
				
			
			@ -171,143 +171,143 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
 | 
			
		|||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Test loading a V0.2 OpenSim Region Archive.
 | 
			
		||||
        /// </summary>        
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        [Test]
 | 
			
		||||
        public void TestLoadOarV0p2()
 | 
			
		||||
        {
 | 
			
		||||
            //log4net.Config.XmlConfigurator.Configure();
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            MemoryStream archiveWriteStream = new MemoryStream();
 | 
			
		||||
            TarArchiveWriter tar = new TarArchiveWriter(archiveWriteStream);
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            tar.WriteFile(ArchiveConstants.CONTROL_FILE_PATH, ArchiveWriteRequestExecution.Create0p2ControlFile());
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            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);
 | 
			
		||||
                        
 | 
			
		||||
 | 
			
		||||
            SceneObjectPart part1
 | 
			
		||||
                = new SceneObjectPart(
 | 
			
		||||
                    UUID.Zero, shape, groupPosition, rotationOffset, offsetPosition);
 | 
			
		||||
            part1.Name = part1Name;
 | 
			
		||||
            SceneObjectGroup object1 = new SceneObjectGroup(part1);
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            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);            
 | 
			
		||||
                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);          
 | 
			
		||||
            
 | 
			
		||||
            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.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());             
 | 
			
		||||
            Console.WriteLine("Successfully completed {0}", MethodBase.GetCurrentMethod());
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Test merging a V0.2 OpenSim Region Archive into an existing scene
 | 
			
		||||
        /// </summary>        
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        ///[Test]
 | 
			
		||||
        public void TestMergeOarV0p2()
 | 
			
		||||
        {
 | 
			
		||||
            //XmlConfigurator.Configure();
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            MemoryStream archiveWriteStream = new MemoryStream();
 | 
			
		||||
 | 
			
		||||
            string part2Name = "objectMerge";
 | 
			
		||||
            PrimitiveBaseShape part2Shape = PrimitiveBaseShape.CreateCylinder();
 | 
			
		||||
            Vector3 part2GroupPosition = new Vector3(90, 80, 70);
 | 
			
		||||
            Quaternion part2RotationOffset = new Quaternion(60, 70, 80, 90);
 | 
			
		||||
            Vector3 part2OffsetPosition = new Vector3(20, 25, 30);            
 | 
			
		||||
            
 | 
			
		||||
            Vector3 part2OffsetPosition = new Vector3(20, 25, 30);
 | 
			
		||||
 | 
			
		||||
            // Create an oar file that we can use for the merge
 | 
			
		||||
            {
 | 
			
		||||
                ArchiverModule archiverModule = new ArchiverModule();
 | 
			
		||||
                SerialiserModule serialiserModule = new SerialiserModule();
 | 
			
		||||
                TerrainModule terrainModule = new TerrainModule();
 | 
			
		||||
                
 | 
			
		||||
 | 
			
		||||
                Scene scene = SceneSetupHelpers.SetupScene();
 | 
			
		||||
                SceneSetupHelpers.SetupSceneModules(scene, archiverModule, serialiserModule, terrainModule);
 | 
			
		||||
                                            
 | 
			
		||||
 | 
			
		||||
                SceneObjectPart part2
 | 
			
		||||
                    = new SceneObjectPart(
 | 
			
		||||
                        UUID.Zero, part2Shape, part2GroupPosition, part2RotationOffset, part2OffsetPosition);
 | 
			
		||||
                part2.Name = part2Name;
 | 
			
		||||
                SceneObjectGroup object2 = new SceneObjectGroup(part2);
 | 
			
		||||
                
 | 
			
		||||
 | 
			
		||||
                scene.AddNewSceneObject(object2, false);
 | 
			
		||||
     
 | 
			
		||||
 | 
			
		||||
                // Write out this scene
 | 
			
		||||
                scene.EventManager.OnOarFileSaved += SaveCompleted;
 | 
			
		||||
                
 | 
			
		||||
 | 
			
		||||
                lock (this)
 | 
			
		||||
                {
 | 
			
		||||
                    archiverModule.ArchiveRegion(archiveWriteStream);                            
 | 
			
		||||
                    archiverModule.ArchiveRegion(archiveWriteStream);
 | 
			
		||||
                    Monitor.Wait(this, 60000);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            {
 | 
			
		||||
                ArchiverModule archiverModule = new ArchiverModule();
 | 
			
		||||
                SerialiserModule serialiserModule = new SerialiserModule();
 | 
			
		||||
                TerrainModule terrainModule = new TerrainModule();
 | 
			
		||||
                
 | 
			
		||||
 | 
			
		||||
                Scene scene = SceneSetupHelpers.SetupScene();
 | 
			
		||||
                SceneSetupHelpers.SetupSceneModules(scene, archiverModule, serialiserModule, terrainModule);
 | 
			
		||||
                
 | 
			
		||||
 | 
			
		||||
                string part1Name = "objectExisting";
 | 
			
		||||
                PrimitiveBaseShape part1Shape = PrimitiveBaseShape.CreateCylinder();
 | 
			
		||||
                Vector3 part1GroupPosition = new Vector3(80, 70, 60);
 | 
			
		||||
                Quaternion part1RotationOffset = new Quaternion(50, 60, 70, 80);
 | 
			
		||||
                Vector3 part1OffsetPosition = new Vector3(15, 20, 25);
 | 
			
		||||
                            
 | 
			
		||||
 | 
			
		||||
                SceneObjectPart part1
 | 
			
		||||
                    = new SceneObjectPart(
 | 
			
		||||
                        UUID.Zero, part1Shape, part1GroupPosition, part1RotationOffset, part1OffsetPosition);
 | 
			
		||||
                part1.Name = part1Name;
 | 
			
		||||
                SceneObjectGroup object1 = new SceneObjectGroup(part1);            
 | 
			
		||||
                
 | 
			
		||||
                SceneObjectGroup object1 = new SceneObjectGroup(part1);
 | 
			
		||||
 | 
			
		||||
                scene.AddNewSceneObject(object1, false);
 | 
			
		||||
                
 | 
			
		||||
 | 
			
		||||
                // Merge in the archive we created earlier
 | 
			
		||||
                byte[] archive = archiveWriteStream.ToArray();           
 | 
			
		||||
                MemoryStream archiveReadStream = new MemoryStream(archive);            
 | 
			
		||||
                
 | 
			
		||||
                byte[] archive = archiveWriteStream.ToArray();
 | 
			
		||||
                MemoryStream archiveReadStream = new MemoryStream(archive);
 | 
			
		||||
 | 
			
		||||
                archiverModule.DearchiveRegion(archiveReadStream, true);
 | 
			
		||||
                
 | 
			
		||||
                SceneObjectPart object1Existing = scene.GetSceneObjectPart(part1Name);            
 | 
			
		||||
 | 
			
		||||
                SceneObjectPart object1Existing = scene.GetSceneObjectPart(part1Name);
 | 
			
		||||
                Assert.That(object1Existing, Is.Not.Null, "object1 was not present after merge");
 | 
			
		||||
                Assert.That(object1Existing.Name, Is.EqualTo(part1Name), "object1 names not identical after merge"); 
 | 
			
		||||
                Assert.That(object1Existing.Name, Is.EqualTo(part1Name), "object1 names not identical after merge");
 | 
			
		||||
                Assert.That(object1Existing.GroupPosition, Is.EqualTo(part1GroupPosition), "object1 group position not equal after merge");
 | 
			
		||||
                
 | 
			
		||||
 | 
			
		||||
                SceneObjectPart object2PartMerged = scene.GetSceneObjectPart(part2Name);
 | 
			
		||||
                Assert.That(object2PartMerged, Is.Not.Null, "object2 was not present after merge");
 | 
			
		||||
                Assert.That(object2PartMerged.Name, Is.EqualTo(part2Name), "object2 names not identical after merge"); 
 | 
			
		||||
                Assert.That(object2PartMerged.Name, Is.EqualTo(part2Name), "object2 names not identical after merge");
 | 
			
		||||
                Assert.That(object2PartMerged.GroupPosition, Is.EqualTo(part2GroupPosition), "object2 group position not equal after merge");
 | 
			
		||||
            }               
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -105,7 +105,7 @@
 | 
			
		|||
      </Files>
 | 
			
		||||
    </Project>
 | 
			
		||||
 | 
			
		||||
    <Project name="OpenSim.Framework.Archive" path="OpenSim/Framework/Archive" type="Library">
 | 
			
		||||
    <Project name="OpenSim.Framework.Serialization" path="OpenSim/Framework/Serialization" type="Library">
 | 
			
		||||
      <Configuration name="Debug">
 | 
			
		||||
        <Options>
 | 
			
		||||
          <OutputPath>../../../bin/</OutputPath>
 | 
			
		||||
| 
						 | 
				
			
			@ -885,7 +885,7 @@
 | 
			
		|||
      <Reference name="OpenMetaverseTypes"/>
 | 
			
		||||
      <Reference name="OpenMetaverse.StructuredData"/>
 | 
			
		||||
      <Reference name="OpenSim.Framework"/>
 | 
			
		||||
      <Reference name="OpenSim.Framework.Archive"/>
 | 
			
		||||
      <Reference name="OpenSim.Framework.Serialization"/>
 | 
			
		||||
      <Reference name="OpenSim.Framework.Servers"/>
 | 
			
		||||
      <Reference name="OpenSim.Grid.AssetInventoryServer" />
 | 
			
		||||
      <Reference name="log4net"/>
 | 
			
		||||
| 
						 | 
				
			
			@ -1150,7 +1150,7 @@
 | 
			
		|||
      <Reference name="OpenSim.Framework.Communications"/>
 | 
			
		||||
      <Reference name="OpenSim.Data" />
 | 
			
		||||
      <Reference name="OpenSim.Region.Framework" />
 | 
			
		||||
      <Reference name="OpenSim.Framework.Archive"/>
 | 
			
		||||
      <Reference name="OpenSim.Framework.Serialization"/>
 | 
			
		||||
      <Reference name="OpenSim.Framework.Console"/>
 | 
			
		||||
      <Reference name="OpenSim.Framework.Servers"/>
 | 
			
		||||
      <Reference name="OpenSim.Framework.Statistics"/>
 | 
			
		||||
| 
						 | 
				
			
			@ -2972,7 +2972,7 @@
 | 
			
		|||
      <Reference name="OpenMetaverse.dll"/>
 | 
			
		||||
      <Reference name="OpenSim.Data"/>
 | 
			
		||||
      <Reference name="OpenSim.Framework"/>
 | 
			
		||||
      <Reference name="OpenSim.Framework.Archive"/>
 | 
			
		||||
      <Reference name="OpenSim.Framework.Serialization"/>
 | 
			
		||||
      <Reference name="OpenSim.Framework.Communications"/>
 | 
			
		||||
      <Reference name="OpenSim.Framework.Console"/>
 | 
			
		||||
      <Reference name="OpenSim.Framework.Servers"/>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue