From 567e0d032c56b2d1498216416fa6874ec77dd55b Mon Sep 17 00:00:00 2001
From: Justin Clarke Casey
Date: Fri, 8 May 2009 19:18:37 +0000
Subject: * break out 'xml2' deserialization from sog
---
.../Scenes/Serialization/SceneObjectSerializer.cs | 78 ++++++++++++++++++++--
1 file changed, 71 insertions(+), 7 deletions(-)
(limited to 'OpenSim/Region/Framework/Scenes/Serialization')
diff --git a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs
index 9eac3be..aa331d9 100644
--- a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs
+++ b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs
@@ -59,7 +59,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
///
///
///
- public static SceneObjectGroup FromOriginalXmlFormat(UUID fromUserInventoryItemID, string serialization)
+ public static SceneObjectGroup FromOriginalXmlFormat(UUID fromUserInventoryItemID, string xmlData)
{
//m_log.DebugFormat("[SOG]: Starting deserialization of SOG");
//int time = System.Environment.TickCount;
@@ -67,12 +67,12 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
SceneObjectGroup sceneObject = new SceneObjectGroup();
// libomv.types changes UUID to Guid
- serialization = serialization.Replace("", "");
- serialization = serialization.Replace("", "");
+ xmlData = xmlData.Replace("", "");
+ xmlData = xmlData.Replace("", "");
// Handle Nested property
- serialization = serialization.Replace("", "");
- serialization = serialization.Replace("", "");
+ xmlData = xmlData.Replace("", "");
+ xmlData = xmlData.Replace("", "");
try
{
@@ -83,7 +83,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
int linkNum;
doc = new XmlDocument();
- doc.LoadXml(serialization);
+ doc.LoadXml(xmlData);
parts = doc.GetElementsByTagName("RootPart");
if (parts.Count == 0)
@@ -122,7 +122,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
catch (Exception e)
{
m_log.ErrorFormat(
- "[SERIALIZER]: Deserialization of xml failed with {0}. xml was {1}", e, serialization);
+ "[SERIALIZER]: Deserialization of xml failed with {0}. xml was {1}", e, xmlData);
}
//m_log.DebugFormat("[SERIALIZER]: Finished deserialization of SOG {0}, {1}ms", Name, System.Environment.TickCount - time);
@@ -131,6 +131,70 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
}
///
+ /// Deserialize a scene object from the 'xml2' format
+ ///
+ ///
+ ///
+ public static SceneObjectGroup FromXml2Format(string xmlData)
+ {
+ //m_log.DebugFormat("[SOG]: Starting deserialization of SOG");
+ //int time = System.Environment.TickCount;
+
+ SceneObjectGroup sceneObject = new SceneObjectGroup();
+
+ // libomv.types changes UUID to Guid
+ xmlData = xmlData.Replace("", "");
+ xmlData = xmlData.Replace("", "");
+
+ // Handle Nested property
+ xmlData = xmlData.Replace("", "");
+ xmlData = xmlData.Replace("", "");
+
+ try
+ {
+ XmlDocument doc = new XmlDocument();
+ doc.LoadXml(xmlData);
+
+ XmlNodeList parts = doc.GetElementsByTagName("SceneObjectPart");
+
+ // Process the root part first
+ if (parts.Count > 0)
+ {
+ StringReader sr = new StringReader(parts[0].OuterXml);
+ XmlTextReader reader = new XmlTextReader(sr);
+ sceneObject.SetRootPart(SceneObjectPart.FromXml(reader));
+ reader.Close();
+ sr.Close();
+ }
+
+ // Then deal with the rest
+ for (int i = 1; i < parts.Count; i++)
+ {
+ StringReader sr = new StringReader(parts[i].OuterXml);
+ XmlTextReader reader = new XmlTextReader(sr);
+ SceneObjectPart part = SceneObjectPart.FromXml(reader);
+ sceneObject.AddPart(part);
+ part.StoreUndoState();
+ reader.Close();
+ sr.Close();
+ }
+
+ // Script state may, or may not, exist. Not having any, is NOT
+ // ever a problem.
+
+ sceneObject.LoadScriptState(doc);
+ }
+ catch (Exception e)
+ {
+ m_log.ErrorFormat("[SERIALIZER]: Deserialization of xml failed with {0}. xml was {1}", e, xmlData);
+ }
+
+ //m_log.DebugFormat("[SERIALIZER]: Finished deserialization of SOG {0}, {1}ms", Name, System.Environment.TickCount - time);
+
+ return sceneObject;
+ }
+
+ ///
/// Serialize a scene object to the original xml format
///
///
--
cgit v1.1