diff options
author | Justin Clark-Casey (justincc) | 2012-05-16 00:10:42 +0100 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2012-05-16 00:10:42 +0100 |
commit | 23ae24b4061f7c1e1bc1c0d5428374ccf4e25891 (patch) | |
tree | f850abd0af240f647d5e563e0f36c8cb98c954dd /OpenSim/Region/Framework/Scenes/Serialization | |
parent | Merge branch 'master' of ssh://opensimulator.org/var/git/opensim (diff) | |
download | opensim-SC-23ae24b4061f7c1e1bc1c0d5428374ccf4e25891.zip opensim-SC-23ae24b4061f7c1e1bc1c0d5428374ccf4e25891.tar.gz opensim-SC-23ae24b4061f7c1e1bc1c0d5428374ccf4e25891.tar.bz2 opensim-SC-23ae24b4061f7c1e1bc1c0d5428374ccf4e25891.tar.xz |
Route OAR SOG loading through the common SceneObjectSerializer.FromXml2Format() rather than the functionally identical but buggy Xml2ToSOG().
Remove buggy Xml2ToSOG().
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/Serialization')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs | 45 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Serialization/SceneXmlLoader.cs | 72 |
2 files changed, 4 insertions, 113 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs index a11dc49..0b34156 100644 --- a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs +++ b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs | |||
@@ -1424,51 +1424,6 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
1424 | } | 1424 | } |
1425 | } | 1425 | } |
1426 | 1426 | ||
1427 | //////// Read ///////// | ||
1428 | public static bool Xml2ToSOG(XmlTextReader reader, SceneObjectGroup sog) | ||
1429 | { | ||
1430 | reader.Read(); | ||
1431 | reader.ReadStartElement("SceneObjectGroup"); | ||
1432 | SceneObjectPart root = Xml2ToSOP(reader); | ||
1433 | if (root != null) | ||
1434 | sog.SetRootPart(root); | ||
1435 | else | ||
1436 | { | ||
1437 | return false; | ||
1438 | } | ||
1439 | |||
1440 | if (sog.UUID == UUID.Zero) | ||
1441 | sog.UUID = sog.RootPart.UUID; | ||
1442 | |||
1443 | reader.Read(); // OtherParts | ||
1444 | |||
1445 | while (!reader.EOF) | ||
1446 | { | ||
1447 | switch (reader.NodeType) | ||
1448 | { | ||
1449 | case XmlNodeType.Element: | ||
1450 | if (reader.Name == "SceneObjectPart") | ||
1451 | { | ||
1452 | SceneObjectPart child = Xml2ToSOP(reader); | ||
1453 | if (child != null) | ||
1454 | sog.AddPart(child); | ||
1455 | } | ||
1456 | else | ||
1457 | { | ||
1458 | //Logger.Log("Found unexpected prim XML element " + reader.Name, Helpers.LogLevel.Debug); | ||
1459 | reader.Read(); | ||
1460 | } | ||
1461 | break; | ||
1462 | case XmlNodeType.EndElement: | ||
1463 | default: | ||
1464 | reader.Read(); | ||
1465 | break; | ||
1466 | } | ||
1467 | |||
1468 | } | ||
1469 | return true; | ||
1470 | } | ||
1471 | |||
1472 | public static SceneObjectPart Xml2ToSOP(XmlTextReader reader) | 1427 | public static SceneObjectPart Xml2ToSOP(XmlTextReader reader) |
1473 | { | 1428 | { |
1474 | SceneObjectPart obj = new SceneObjectPart(); | 1429 | SceneObjectPart obj = new SceneObjectPart(); |
diff --git a/OpenSim/Region/Framework/Scenes/Serialization/SceneXmlLoader.cs b/OpenSim/Region/Framework/Scenes/Serialization/SceneXmlLoader.cs index d214eba..a3485d2 100644 --- a/OpenSim/Region/Framework/Scenes/Serialization/SceneXmlLoader.cs +++ b/OpenSim/Region/Framework/Scenes/Serialization/SceneXmlLoader.cs | |||
@@ -223,50 +223,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
223 | 223 | ||
224 | public static SceneObjectGroup DeserializeGroupFromXml2(string xmlString) | 224 | public static SceneObjectGroup DeserializeGroupFromXml2(string xmlString) |
225 | { | 225 | { |
226 | XmlDocument doc = new XmlDocument(); | 226 | return SceneObjectSerializer.FromXml2Format(xmlString); |
227 | XmlNode rootNode; | ||
228 | |||
229 | XmlTextReader reader = new XmlTextReader(new StringReader(xmlString)); | ||
230 | reader.WhitespaceHandling = WhitespaceHandling.None; | ||
231 | doc.Load(reader); | ||
232 | reader.Close(); | ||
233 | rootNode = doc.FirstChild; | ||
234 | |||
235 | // This is to deal with neighbouring regions that are still surrounding the group xml with the <scene> | ||
236 | // tag. It should be possible to remove the first part of this if statement once we go past 0.5.9 (or | ||
237 | // when some other changes forces all regions to upgrade). | ||
238 | // This might seem rather pointless since prim crossing from this revision to an earlier revision remains | ||
239 | // broken. But it isn't much work to accomodate the old format here. | ||
240 | if (rootNode.LocalName.Equals("scene")) | ||
241 | { | ||
242 | foreach (XmlNode aPrimNode in rootNode.ChildNodes) | ||
243 | { | ||
244 | // There is only ever one prim. This oddity should be removeable post 0.5.9 | ||
245 | //return SceneObjectSerializer.FromXml2Format(aPrimNode.OuterXml); | ||
246 | using (reader = new XmlTextReader(new StringReader(aPrimNode.OuterXml))) | ||
247 | { | ||
248 | SceneObjectGroup obj = new SceneObjectGroup(); | ||
249 | if (SceneObjectSerializer.Xml2ToSOG(reader, obj)) | ||
250 | return obj; | ||
251 | |||
252 | return null; | ||
253 | } | ||
254 | } | ||
255 | |||
256 | return null; | ||
257 | } | ||
258 | else | ||
259 | { | ||
260 | //return SceneObjectSerializer.FromXml2Format(rootNode.OuterXml); | ||
261 | using (reader = new XmlTextReader(new StringReader(rootNode.OuterXml))) | ||
262 | { | ||
263 | SceneObjectGroup obj = new SceneObjectGroup(); | ||
264 | if (SceneObjectSerializer.Xml2ToSOG(reader, obj)) | ||
265 | return obj; | ||
266 | |||
267 | return null; | ||
268 | } | ||
269 | } | ||
270 | } | 227 | } |
271 | 228 | ||
272 | /// <summary> | 229 | /// <summary> |
@@ -307,8 +264,8 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
307 | ICollection<SceneObjectGroup> sceneObjects = new List<SceneObjectGroup>(); | 264 | ICollection<SceneObjectGroup> sceneObjects = new List<SceneObjectGroup>(); |
308 | foreach (XmlNode aPrimNode in rootNode.ChildNodes) | 265 | foreach (XmlNode aPrimNode in rootNode.ChildNodes) |
309 | { | 266 | { |
310 | SceneObjectGroup obj = CreatePrimFromXml2(scene, aPrimNode.OuterXml); | 267 | SceneObjectGroup obj = DeserializeGroupFromXml2(aPrimNode.OuterXml); |
311 | if (obj != null && startScripts) | 268 | if (startScripts) |
312 | sceneObjects.Add(obj); | 269 | sceneObjects.Add(obj); |
313 | } | 270 | } |
314 | 271 | ||
@@ -319,27 +276,6 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
319 | } | 276 | } |
320 | } | 277 | } |
321 | 278 | ||
322 | /// <summary> | ||
323 | /// Create a prim from the xml2 representation. | ||
324 | /// </summary> | ||
325 | /// <param name="scene"></param> | ||
326 | /// <param name="xmlData"></param> | ||
327 | /// <returns>The scene object created. null if the scene object already existed</returns> | ||
328 | protected static SceneObjectGroup CreatePrimFromXml2(Scene scene, string xmlData) | ||
329 | { | ||
330 | //SceneObjectGroup obj = SceneObjectSerializer.FromXml2Format(xmlData); | ||
331 | using (XmlTextReader reader = new XmlTextReader(new StringReader(xmlData))) | ||
332 | { | ||
333 | SceneObjectGroup obj = new SceneObjectGroup(); | ||
334 | SceneObjectSerializer.Xml2ToSOG(reader, obj); | ||
335 | |||
336 | if (scene.AddRestoredSceneObject(obj, true, false)) | ||
337 | return obj; | ||
338 | else | ||
339 | return null; | ||
340 | } | ||
341 | } | ||
342 | |||
343 | #endregion | 279 | #endregion |
344 | } | 280 | } |
345 | } | 281 | } \ No newline at end of file |