diff options
Diffstat (limited to 'OpenSim/Region/Framework/Scenes')
3 files changed, 73 insertions, 61 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index ac27716..b838177 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | |||
@@ -2243,13 +2243,25 @@ namespace OpenSim.Region.Framework.Scenes | |||
2243 | 2243 | ||
2244 | if (isSingleObject || isAttachment) | 2244 | if (isSingleObject || isAttachment) |
2245 | { | 2245 | { |
2246 | SceneObjectGroup g = SceneObjectSerializer.FromOriginalXmlFormat(reader); | 2246 | SceneObjectGroup g; |
2247 | try | ||
2248 | { | ||
2249 | g = SceneObjectSerializer.FromOriginalXmlFormat(reader); | ||
2250 | } | ||
2251 | catch (Exception e) | ||
2252 | { | ||
2253 | m_log.Error("[AGENT INVENTORY]: Deserialization of xml failed ", e); | ||
2254 | Util.LogFailedXML("[AGENT INVENTORY]:", xmlData); | ||
2255 | g = null; | ||
2256 | } | ||
2257 | |||
2247 | if (g != null) | 2258 | if (g != null) |
2248 | { | 2259 | { |
2249 | objlist.Add(g); | 2260 | objlist.Add(g); |
2250 | veclist.Add(Vector3.Zero); | 2261 | veclist.Add(Vector3.Zero); |
2251 | bbox = g.GetAxisAlignedBoundingBox(out offsetHeight); | 2262 | bbox = g.GetAxisAlignedBoundingBox(out offsetHeight); |
2252 | } | 2263 | } |
2264 | |||
2253 | return true; | 2265 | return true; |
2254 | } | 2266 | } |
2255 | else | 2267 | else |
@@ -2291,9 +2303,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
2291 | } | 2303 | } |
2292 | catch (Exception e) | 2304 | catch (Exception e) |
2293 | { | 2305 | { |
2294 | m_log.Error( | 2306 | m_log.Error("[AGENT INVENTORY]: Deserialization of xml failed when looking for CoalescedObject tag ", e); |
2295 | "[AGENT INVENTORY]: Deserialization of xml failed when looking for CoalescedObject tag. Exception ", | 2307 | Util.LogFailedXML("[AGENT INVENTORY]:", xmlData); |
2296 | e); | ||
2297 | } | 2308 | } |
2298 | 2309 | ||
2299 | return true; | 2310 | return true; |
diff --git a/OpenSim/Region/Framework/Scenes/Serialization/CoalescedSceneObjectsSerializer.cs b/OpenSim/Region/Framework/Scenes/Serialization/CoalescedSceneObjectsSerializer.cs index a556f9d..998789d 100644 --- a/OpenSim/Region/Framework/Scenes/Serialization/CoalescedSceneObjectsSerializer.cs +++ b/OpenSim/Region/Framework/Scenes/Serialization/CoalescedSceneObjectsSerializer.cs | |||
@@ -178,10 +178,8 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
178 | } | 178 | } |
179 | catch (Exception e) | 179 | catch (Exception e) |
180 | { | 180 | { |
181 | m_log.Error(string.Format( | 181 | m_log.Error("[COALESCED SCENE OBJECTS SERIALIZER]: Deserialization of xml failed ", e); |
182 | "[COALESCED SCENE OBJECTS SERIALIZER]: Deserialization of xml failed with {0} ", | 182 | Util.LogFailedXML("[COALESCED SCENE OBJECTS SERIALIZER]:", xml); |
183 | e.Message), e); | ||
184 | |||
185 | return false; | 183 | return false; |
186 | } | 184 | } |
187 | 185 | ||
diff --git a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs index 463ef22..4caa9cb 100644 --- a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs +++ b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs | |||
@@ -62,8 +62,20 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
62 | { | 62 | { |
63 | String fixedData = ExternalRepresentationUtils.SanitizeXml(xmlData); | 63 | String fixedData = ExternalRepresentationUtils.SanitizeXml(xmlData); |
64 | using (XmlTextReader wrappedReader = new XmlTextReader(fixedData, XmlNodeType.Element, null)) | 64 | using (XmlTextReader wrappedReader = new XmlTextReader(fixedData, XmlNodeType.Element, null)) |
65 | { | ||
65 | using (XmlReader reader = XmlReader.Create(wrappedReader, new XmlReaderSettings() { IgnoreWhitespace = true, ConformanceLevel = ConformanceLevel.Fragment })) | 66 | using (XmlReader reader = XmlReader.Create(wrappedReader, new XmlReaderSettings() { IgnoreWhitespace = true, ConformanceLevel = ConformanceLevel.Fragment })) |
66 | return FromOriginalXmlFormat(reader); | 67 | { |
68 | try { | ||
69 | return FromOriginalXmlFormat(reader); | ||
70 | } | ||
71 | catch (Exception e) | ||
72 | { | ||
73 | m_log.Error("[SERIALIZER]: Deserialization of xml failed ", e); | ||
74 | Util.LogFailedXML("[SERIALIZER]:", fixedData); | ||
75 | return null; | ||
76 | } | ||
77 | } | ||
78 | } | ||
67 | } | 79 | } |
68 | 80 | ||
69 | /// <summary> | 81 | /// <summary> |
@@ -76,43 +88,33 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
76 | //m_log.DebugFormat("[SOG]: Starting deserialization of SOG"); | 88 | //m_log.DebugFormat("[SOG]: Starting deserialization of SOG"); |
77 | //int time = System.Environment.TickCount; | 89 | //int time = System.Environment.TickCount; |
78 | 90 | ||
79 | SceneObjectGroup sceneObject = null; | 91 | int linkNum; |
80 | 92 | ||
81 | try | 93 | reader.ReadToFollowing("RootPart"); |
82 | { | 94 | reader.ReadToFollowing("SceneObjectPart"); |
83 | int linkNum; | 95 | SceneObjectGroup sceneObject = new SceneObjectGroup(SceneObjectPart.FromXml(reader)); |
96 | reader.ReadToFollowing("OtherParts"); | ||
84 | 97 | ||
85 | reader.ReadToFollowing("RootPart"); | 98 | if (reader.ReadToDescendant("Part")) |
86 | reader.ReadToFollowing("SceneObjectPart"); | 99 | { |
87 | sceneObject = new SceneObjectGroup(SceneObjectPart.FromXml(reader)); | 100 | do |
88 | reader.ReadToFollowing("OtherParts"); | ||
89 | |||
90 | if (reader.ReadToDescendant("Part")) | ||
91 | { | 101 | { |
92 | do | 102 | if (reader.ReadToDescendant("SceneObjectPart")) |
93 | { | 103 | { |
94 | if (reader.ReadToDescendant("SceneObjectPart")) | 104 | SceneObjectPart part = SceneObjectPart.FromXml(reader); |
95 | { | 105 | linkNum = part.LinkNum; |
96 | SceneObjectPart part = SceneObjectPart.FromXml(reader); | 106 | sceneObject.AddPart(part); |
97 | linkNum = part.LinkNum; | 107 | part.LinkNum = linkNum; |
98 | sceneObject.AddPart(part); | 108 | part.TrimPermissions(); |
99 | part.LinkNum = linkNum; | 109 | } |
100 | part.TrimPermissions(); | 110 | } |
101 | } | 111 | while (reader.ReadToNextSibling("Part")); |
102 | } | ||
103 | while (reader.ReadToNextSibling("Part")); | ||
104 | } | ||
105 | |||
106 | // Script state may, or may not, exist. Not having any, is NOT | ||
107 | // ever a problem. | ||
108 | sceneObject.LoadScriptState(reader); | ||
109 | } | ||
110 | catch (Exception e) | ||
111 | { | ||
112 | m_log.ErrorFormat("[SERIALIZER]: Deserialization of xml failed. Exception {0}", e); | ||
113 | return null; | ||
114 | } | 112 | } |
115 | 113 | ||
114 | // Script state may, or may not, exist. Not having any, is NOT | ||
115 | // ever a problem. | ||
116 | sceneObject.LoadScriptState(reader); | ||
117 | |||
116 | return sceneObject; | 118 | return sceneObject; |
117 | } | 119 | } |
118 | 120 | ||
@@ -236,7 +238,8 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
236 | 238 | ||
237 | if (parts.Count == 0) | 239 | if (parts.Count == 0) |
238 | { | 240 | { |
239 | m_log.ErrorFormat("[SERIALIZER]: Deserialization of xml failed: No SceneObjectPart nodes. xml was " + xmlData); | 241 | m_log.Error("[SERIALIZER]: Deserialization of xml failed: No SceneObjectPart nodes"); |
242 | Util.LogFailedXML("[SERIALIZER]:", xmlData); | ||
240 | return null; | 243 | return null; |
241 | } | 244 | } |
242 | 245 | ||
@@ -280,7 +283,8 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
280 | } | 283 | } |
281 | catch (Exception e) | 284 | catch (Exception e) |
282 | { | 285 | { |
283 | m_log.ErrorFormat("[SERIALIZER]: Deserialization of xml failed with {0}. xml was {1}", e, xmlData); | 286 | m_log.Error("[SERIALIZER]: Deserialization of xml failed ", e); |
287 | Util.LogFailedXML("[SERIALIZER]:", xmlData); | ||
284 | return null; | 288 | return null; |
285 | } | 289 | } |
286 | } | 290 | } |
@@ -708,7 +712,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
708 | private static void ProcessShape(SceneObjectPart obj, XmlReader reader) | 712 | private static void ProcessShape(SceneObjectPart obj, XmlReader reader) |
709 | { | 713 | { |
710 | List<string> errorNodeNames; | 714 | List<string> errorNodeNames; |
711 | obj.Shape = ReadShape(reader, "Shape", out errorNodeNames); | 715 | obj.Shape = ReadShape(reader, "Shape", out errorNodeNames, obj); |
712 | 716 | ||
713 | if (errorNodeNames != null) | 717 | if (errorNodeNames != null) |
714 | { | 718 | { |
@@ -1599,18 +1603,21 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
1599 | 1603 | ||
1600 | reader.ReadStartElement("SceneObjectPart"); | 1604 | reader.ReadStartElement("SceneObjectPart"); |
1601 | 1605 | ||
1602 | ExternalRepresentationUtils.ExecuteReadProcessors( | 1606 | bool errors = ExternalRepresentationUtils.ExecuteReadProcessors( |
1603 | obj, | 1607 | obj, |
1604 | m_SOPXmlProcessors, | 1608 | m_SOPXmlProcessors, |
1605 | reader, | 1609 | reader, |
1606 | (o, nodeName, e) | 1610 | (o, nodeName, e) => { |
1607 | => m_log.DebugFormat( | 1611 | m_log.Debug(string.Format("[SceneObjectSerializer]: Error while parsing element {0} in object {1} {2} ", |
1608 | "[SceneObjectSerializer]: Exception while parsing {0} in object {1} {2}: {3}{4}", | 1612 | nodeName, ((SceneObjectPart)o).Name, ((SceneObjectPart)o).UUID), e); |
1609 | ((SceneObjectPart)o).Name, ((SceneObjectPart)o).UUID, nodeName, e.Message, e.StackTrace)); | 1613 | }); |
1614 | |||
1615 | if (errors) | ||
1616 | throw new XmlException(string.Format("Error parsing object {0} {1}", obj.Name, obj.UUID)); | ||
1610 | 1617 | ||
1611 | reader.ReadEndElement(); // SceneObjectPart | 1618 | reader.ReadEndElement(); // SceneObjectPart |
1612 | 1619 | ||
1613 | //m_log.DebugFormat("[XXX]: parsed SOP {0} - {1}", obj.Name, obj.UUID); | 1620 | // m_log.DebugFormat("[SceneObjectSerializer]: parsed SOP {0} {1}", obj.Name, obj.UUID); |
1614 | return obj; | 1621 | return obj; |
1615 | } | 1622 | } |
1616 | 1623 | ||
@@ -1655,7 +1662,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
1655 | /// <param name="name">The name of the xml element containing the shape</param> | 1662 | /// <param name="name">The name of the xml element containing the shape</param> |
1656 | /// <param name="errors">a list containing the failing node names. If no failures then null.</param> | 1663 | /// <param name="errors">a list containing the failing node names. If no failures then null.</param> |
1657 | /// <returns>The shape parsed</returns> | 1664 | /// <returns>The shape parsed</returns> |
1658 | public static PrimitiveBaseShape ReadShape(XmlReader reader, string name, out List<string> errorNodeNames) | 1665 | public static PrimitiveBaseShape ReadShape(XmlReader reader, string name, out List<string> errorNodeNames, SceneObjectPart obj) |
1659 | { | 1666 | { |
1660 | List<string> internalErrorNodeNames = null; | 1667 | List<string> internalErrorNodeNames = null; |
1661 | 1668 | ||
@@ -1674,18 +1681,14 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
1674 | shape, | 1681 | shape, |
1675 | m_ShapeXmlProcessors, | 1682 | m_ShapeXmlProcessors, |
1676 | reader, | 1683 | reader, |
1677 | (o, nodeName, e) | 1684 | (o, nodeName, e) => { |
1678 | => | 1685 | m_log.Debug(string.Format("[SceneObjectSerializer]: Error while parsing element {0} in Shape property of object {1} {2} ", |
1679 | { | 1686 | nodeName, obj.Name, obj.UUID), e); |
1680 | // m_log.DebugFormat( | ||
1681 | // "[SceneObjectSerializer]: Exception while parsing Shape property {0}: {1}{2}", | ||
1682 | // nodeName, e.Message, e.StackTrace); | ||
1683 | if (internalErrorNodeNames == null) | ||
1684 | internalErrorNodeNames = new List<string>(); | ||
1685 | 1687 | ||
1686 | internalErrorNodeNames.Add(nodeName); | 1688 | if (internalErrorNodeNames == null) |
1687 | } | 1689 | internalErrorNodeNames = new List<string>(); |
1688 | ); | 1690 | internalErrorNodeNames.Add(nodeName); |
1691 | }); | ||
1689 | 1692 | ||
1690 | reader.ReadEndElement(); // Shape | 1693 | reader.ReadEndElement(); // Shape |
1691 | 1694 | ||