mirror of
https://github.com/opensim/opensim.git
synced 2026-08-01 06:06:06 +08:00
Merge branch 'master' into careminster
Conflicts: OpenSim/Data/MySQL/Resources/RegionStore.migrations OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
This commit is contained in:
@@ -34,6 +34,7 @@ using System.Xml;
|
||||
using log4net;
|
||||
using OpenMetaverse;
|
||||
using OpenSim.Framework;
|
||||
using OpenSim.Framework.Serialization.External;
|
||||
using OpenSim.Region.Framework.Interfaces;
|
||||
using OpenSim.Region.Framework.Scenes;
|
||||
|
||||
@@ -276,14 +277,14 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||
|
||||
#region manual serialization
|
||||
|
||||
private delegate void SOPXmlProcessor(SceneObjectPart sop, XmlTextReader reader);
|
||||
private static Dictionary<string, SOPXmlProcessor> m_SOPXmlProcessors = new Dictionary<string, SOPXmlProcessor>();
|
||||
private static Dictionary<string, Action<SceneObjectPart, XmlTextReader>> m_SOPXmlProcessors
|
||||
= new Dictionary<string, Action<SceneObjectPart, XmlTextReader>>();
|
||||
|
||||
private delegate void TaskInventoryXmlProcessor(TaskInventoryItem item, XmlTextReader reader);
|
||||
private static Dictionary<string, TaskInventoryXmlProcessor> m_TaskInventoryXmlProcessors = new Dictionary<string, TaskInventoryXmlProcessor>();
|
||||
private static Dictionary<string, Action<TaskInventoryItem, XmlTextReader>> m_TaskInventoryXmlProcessors
|
||||
= new Dictionary<string, Action<TaskInventoryItem, XmlTextReader>>();
|
||||
|
||||
private delegate void ShapeXmlProcessor(PrimitiveBaseShape shape, XmlTextReader reader);
|
||||
private static Dictionary<string, ShapeXmlProcessor> m_ShapeXmlProcessors = new Dictionary<string, ShapeXmlProcessor>();
|
||||
private static Dictionary<string, Action<PrimitiveBaseShape, XmlTextReader>> m_ShapeXmlProcessors
|
||||
= new Dictionary<string, Action<PrimitiveBaseShape, XmlTextReader>>();
|
||||
|
||||
static SceneObjectSerializer()
|
||||
{
|
||||
@@ -1480,34 +1481,14 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||
|
||||
reader.ReadStartElement("SceneObjectPart");
|
||||
|
||||
string nodeName = string.Empty;
|
||||
while (reader.NodeType != XmlNodeType.EndElement)
|
||||
{
|
||||
nodeName = reader.Name;
|
||||
SOPXmlProcessor p = null;
|
||||
if (m_SOPXmlProcessors.TryGetValue(reader.Name, out p))
|
||||
{
|
||||
//m_log.DebugFormat("[XXX] Processing: {0}", reader.Name);
|
||||
try
|
||||
{
|
||||
p(obj, reader);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
m_log.DebugFormat(
|
||||
"[SceneObjectSerializer]: exception while parsing {0} in object {1} {2}: {3}{4}",
|
||||
obj.Name, obj.UUID, nodeName, e.Message, e.StackTrace);
|
||||
if (reader.NodeType == XmlNodeType.EndElement)
|
||||
reader.Read();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// m_log.DebugFormat("[SceneObjectSerializer]: caught unknown element {0}", nodeName);
|
||||
reader.ReadOuterXml(); // ignore
|
||||
}
|
||||
|
||||
}
|
||||
ExternalRepresentationUtils.ExecuteReadProcessors(
|
||||
obj,
|
||||
m_SOPXmlProcessors,
|
||||
reader,
|
||||
(o, nodeName, e)
|
||||
=> m_log.ErrorFormat(
|
||||
"[SceneObjectSerializer]: Exception while parsing {0} in object {1} {2}: {3}{4}",
|
||||
((SceneObjectPart)o).Name, ((SceneObjectPart)o).UUID, nodeName, e.Message, e.StackTrace));
|
||||
|
||||
reader.ReadEndElement(); // SceneObjectPart
|
||||
|
||||
@@ -1526,17 +1507,12 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||
reader.ReadStartElement("TaskInventoryItem", String.Empty); // TaskInventory
|
||||
|
||||
TaskInventoryItem item = new TaskInventoryItem();
|
||||
while (reader.NodeType != XmlNodeType.EndElement)
|
||||
{
|
||||
TaskInventoryXmlProcessor p = null;
|
||||
if (m_TaskInventoryXmlProcessors.TryGetValue(reader.Name, out p))
|
||||
p(item, reader);
|
||||
else
|
||||
{
|
||||
// m_log.DebugFormat("[SceneObjectSerializer]: caught unknown element in TaskInventory {0}, {1}", reader.Name, reader.Value);
|
||||
reader.ReadOuterXml();
|
||||
}
|
||||
}
|
||||
|
||||
ExternalRepresentationUtils.ExecuteReadProcessors(
|
||||
item,
|
||||
m_TaskInventoryXmlProcessors,
|
||||
reader);
|
||||
|
||||
reader.ReadEndElement(); // TaskInventoryItem
|
||||
tinv.Add(item.ItemID, item);
|
||||
|
||||
@@ -1563,35 +1539,14 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||
|
||||
reader.ReadStartElement(name, String.Empty); // Shape
|
||||
|
||||
string nodeName = string.Empty;
|
||||
while (reader.NodeType != XmlNodeType.EndElement)
|
||||
{
|
||||
nodeName = reader.Name;
|
||||
//m_log.DebugFormat("[XXX] Processing: {0}", reader.Name);
|
||||
ShapeXmlProcessor p = null;
|
||||
if (m_ShapeXmlProcessors.TryGetValue(reader.Name, out p))
|
||||
{
|
||||
try
|
||||
{
|
||||
p(shape, reader);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
errors = true;
|
||||
m_log.DebugFormat(
|
||||
"[SceneObjectSerializer]: exception while parsing Shape property {0}: {1}{2}",
|
||||
nodeName, e.Message, e.StackTrace);
|
||||
|
||||
if (reader.NodeType == XmlNodeType.EndElement)
|
||||
reader.Read();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// m_log.DebugFormat("[SceneObjectSerializer]: caught unknown element in Shape {0}", reader.Name);
|
||||
reader.ReadOuterXml();
|
||||
}
|
||||
}
|
||||
ExternalRepresentationUtils.ExecuteReadProcessors(
|
||||
shape,
|
||||
m_ShapeXmlProcessors,
|
||||
reader,
|
||||
(o, nodeName, e)
|
||||
=> m_log.ErrorFormat(
|
||||
"[SceneObjectSerializer]: Exception while parsing Shape property {0}: {1}{2}",
|
||||
nodeName, e.Message, e.StackTrace));
|
||||
|
||||
reader.ReadEndElement(); // Shape
|
||||
|
||||
|
||||
Reference in New Issue
Block a user