aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs34
1 files changed, 22 insertions, 12 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs
index 0a32214..e6b88a3 100644
--- a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs
+++ b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs
@@ -29,6 +29,7 @@ using System;
29using System.Collections.Generic; 29using System.Collections.Generic;
30using System.Drawing; 30using System.Drawing;
31using System.IO; 31using System.IO;
32using System.Linq;
32using System.Reflection; 33using System.Reflection;
33using System.Xml; 34using System.Xml;
34using log4net; 35using log4net;
@@ -570,13 +571,15 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
570 571
571 private static void ProcessShape(SceneObjectPart obj, XmlTextReader reader) 572 private static void ProcessShape(SceneObjectPart obj, XmlTextReader reader)
572 { 573 {
573 bool errors = false; 574 List<string> errorNodeNames;
574 obj.Shape = ReadShape(reader, "Shape", out errors); 575 obj.Shape = ReadShape(reader, "Shape", out errorNodeNames);
575 576
576 if (errors) 577 if (errorNodeNames != null)
578 {
577 m_log.DebugFormat( 579 m_log.DebugFormat(
578 "[SceneObjectSerializer]: Parsing PrimitiveBaseShape for object part {0} {1} encountered errors. Please see earlier log entries.", 580 "[SceneObjectSerializer]: Parsing PrimitiveBaseShape for object part {0} {1} encountered errors in properties {2}.",
579 obj.Name, obj.UUID); 581 obj.Name, obj.UUID, string.Join(", ", errorNodeNames.ToArray()));
582 }
580 } 583 }
581 584
582 private static void ProcessScale(SceneObjectPart obj, XmlTextReader reader) 585 private static void ProcessScale(SceneObjectPart obj, XmlTextReader reader)
@@ -1519,37 +1522,44 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
1519 /// </summary> 1522 /// </summary>
1520 /// <param name="reader"></param> 1523 /// <param name="reader"></param>
1521 /// <param name="name">The name of the xml element containing the shape</param> 1524 /// <param name="name">The name of the xml element containing the shape</param>
1522 /// <param name="errors">true if any errors were encountered during parsing, false otherwise</param> 1525 /// <param name="errors">a list containing the failing node names. If no failures then null.</param>
1523 /// <returns>The shape parsed</returns> 1526 /// <returns>The shape parsed</returns>
1524 public static PrimitiveBaseShape ReadShape(XmlTextReader reader, string name, out bool errors) 1527 public static PrimitiveBaseShape ReadShape(XmlTextReader reader, string name, out List<string> errorNodeNames)
1525 { 1528 {
1526 errors = false; 1529 List<string> internalErrorNodeNames = null;
1527 1530
1528 PrimitiveBaseShape shape = new PrimitiveBaseShape(); 1531 PrimitiveBaseShape shape = new PrimitiveBaseShape();
1529 1532
1530 if (reader.IsEmptyElement) 1533 if (reader.IsEmptyElement)
1531 { 1534 {
1532 reader.Read(); 1535 reader.Read();
1536 errorNodeNames = null;
1533 return shape; 1537 return shape;
1534 } 1538 }
1535 1539
1536 reader.ReadStartElement(name, String.Empty); // Shape 1540 reader.ReadStartElement(name, String.Empty); // Shape
1537 1541
1538 errors = ExternalRepresentationUtils.ExecuteReadProcessors( 1542 ExternalRepresentationUtils.ExecuteReadProcessors(
1539 shape, 1543 shape,
1540 m_ShapeXmlProcessors, 1544 m_ShapeXmlProcessors,
1541 reader, 1545 reader,
1542 (o, nodeName, e) 1546 (o, nodeName, e)
1543 => 1547 =>
1544 { 1548 {
1545 m_log.DebugFormat( 1549// m_log.DebugFormat(
1546 "[SceneObjectSerializer]: Exception while parsing Shape property {0}: {1}{2}", 1550// "[SceneObjectSerializer]: Exception while parsing Shape property {0}: {1}{2}",
1547 nodeName, e.Message, e.StackTrace); 1551// nodeName, e.Message, e.StackTrace);
1552 if (internalErrorNodeNames == null)
1553 internalErrorNodeNames = new List<string>();
1554
1555 internalErrorNodeNames.Add(nodeName);
1548 } 1556 }
1549 ); 1557 );
1550 1558
1551 reader.ReadEndElement(); // Shape 1559 reader.ReadEndElement(); // Shape
1552 1560
1561 errorNodeNames = internalErrorNodeNames;
1562
1553 return shape; 1563 return shape;
1554 } 1564 }
1555 1565