diff --git a/OpenSim/Data/MSSQL/MSSQLSimulationData.cs b/OpenSim/Data/MSSQL/MSSQLSimulationData.cs
index e9497389c8..e0e260d31f 100644
--- a/OpenSim/Data/MSSQL/MSSQLSimulationData.cs
+++ b/OpenSim/Data/MSSQL/MSSQLSimulationData.cs
@@ -1693,9 +1693,9 @@ VALUES
prim.MediaUrl = (string)primRow["MediaURL"];
if (!(primRow["DynAttrs"] is System.DBNull))
- prim.DynAttrs = DynAttrsOSDMap.FromXml((string)primRow["DynAttrs"]);
+ prim.DynAttrs = DAMap.FromXml((string)primRow["DynAttrs"]);
else
- prim.DynAttrs = new DynAttrsOSDMap();
+ prim.DynAttrs = new DAMap();
return prim;
}
@@ -1755,9 +1755,9 @@ VALUES
}
if (!(shapeRow["DynAttrs"] is System.DBNull))
- baseShape.DynAttrs = DynAttrsOSDMap.FromXml((string)shapeRow["DynAttrs"]);
+ baseShape.DynAttrs = DAMap.FromXml((string)shapeRow["DynAttrs"]);
else
- baseShape.DynAttrs = new DynAttrsOSDMap();
+ baseShape.DynAttrs = new DAMap();
return baseShape;
}
diff --git a/OpenSim/Data/MySQL/MySQLSimulationData.cs b/OpenSim/Data/MySQL/MySQLSimulationData.cs
index b7f39fba6f..e558702421 100644
--- a/OpenSim/Data/MySQL/MySQLSimulationData.cs
+++ b/OpenSim/Data/MySQL/MySQLSimulationData.cs
@@ -1293,9 +1293,9 @@ namespace OpenSim.Data.MySQL
prim.MediaUrl = (string)row["MediaURL"];
if (!(row["DynAttrs"] is System.DBNull))
- prim.DynAttrs = DynAttrsOSDMap.FromXml((string)row["DynAttrs"]);
+ prim.DynAttrs = DAMap.FromXml((string)row["DynAttrs"]);
else
- prim.DynAttrs = new DynAttrsOSDMap();
+ prim.DynAttrs = new DAMap();
return prim;
}
@@ -1837,9 +1837,9 @@ namespace OpenSim.Data.MySQL
s.Media = PrimitiveBaseShape.MediaList.FromXml((string)row["Media"]);
if (!(row["DynAttrs"] is System.DBNull))
- s.DynAttrs = DynAttrsOSDMap.FromXml((string)row["DynAttrs"]);
+ s.DynAttrs = DAMap.FromXml((string)row["DynAttrs"]);
else
- s.DynAttrs = new DynAttrsOSDMap();
+ s.DynAttrs = new DAMap();
return s;
}
diff --git a/OpenSim/Data/SQLite/SQLiteSimulationData.cs b/OpenSim/Data/SQLite/SQLiteSimulationData.cs
index b97653baec..6875ed60d7 100644
--- a/OpenSim/Data/SQLite/SQLiteSimulationData.cs
+++ b/OpenSim/Data/SQLite/SQLiteSimulationData.cs
@@ -1718,11 +1718,11 @@ namespace OpenSim.Data.SQLite
if (!(row["DynAttrs"] is System.DBNull))
{
//m_log.DebugFormat("[SQLITE]: DynAttrs type [{0}]", row["DynAttrs"].GetType());
- prim.DynAttrs = DynAttrsOSDMap.FromXml((string)row["DynAttrs"]);
+ prim.DynAttrs = DAMap.FromXml((string)row["DynAttrs"]);
}
else
{
- prim.DynAttrs = new DynAttrsOSDMap();
+ prim.DynAttrs = new DAMap();
}
return prim;
@@ -2408,9 +2408,9 @@ namespace OpenSim.Data.SQLite
s.Media = PrimitiveBaseShape.MediaList.FromXml((string)row["Media"]);
if (!(row["DynAttrs"] is System.DBNull))
- s.DynAttrs = DynAttrsOSDMap.FromXml((string)row["DynAttrs"]);
+ s.DynAttrs = DAMap.FromXml((string)row["DynAttrs"]);
else
- s.DynAttrs = new DynAttrsOSDMap();
+ s.DynAttrs = new DAMap();
return s;
}
diff --git a/OpenSim/Framework/DAMap.cs b/OpenSim/Framework/DAMap.cs
new file mode 100644
index 0000000000..a6fdf6194a
--- /dev/null
+++ b/OpenSim/Framework/DAMap.cs
@@ -0,0 +1,173 @@
+/*
+ * Copyright (c) Contributors, http://opensimulator.org/
+ * See CONTRIBUTORS.TXT for a full list of copyright holders.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of the OpenSimulator Project nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+using System.Xml;
+using System.Xml.Schema;
+using System.Xml.Serialization;
+using OpenMetaverse;
+using OpenMetaverse.StructuredData;
+
+namespace OpenSim.Framework
+{
+ ///
+ /// This is the map for storing and retrieving dynamic attributes.
+ ///
+ public class DAMap : IDictionary, IXmlSerializable
+ {
+ protected OSDMap m_map;
+
+ public DAMap() { m_map = new OSDMap(); }
+
+ public XmlSchema GetSchema() { return null; }
+
+ public static DAMap FromXml(string rawXml)
+ {
+ DAMap map = new DAMap();
+ map.ReadXml(rawXml);
+ return map;
+ }
+
+ public void ReadXml(string rawXml)
+ {
+ //System.Console.WriteLine("Trying to deserialize [{0}]", rawXml);
+
+ m_map = (OSDMap)OSDParser.DeserializeLLSDXml(rawXml);
+ }
+
+ public void ReadXml(XmlReader reader)
+ {
+ ReadXml(reader.ReadInnerXml());
+ }
+
+ public string ToXml()
+ {
+ lock (m_map)
+ return OSDParser.SerializeLLSDXmlString(m_map);
+ }
+
+ public void WriteXml(XmlWriter writer)
+ {
+ writer.WriteRaw(ToXml());
+ }
+
+ public int Count { get { lock (m_map) { return m_map.Count; } } }
+ public bool IsReadOnly { get { return false; } }
+ public ICollection Keys { get { lock (m_map) { return m_map.Keys; } } }
+ public ICollection Values { get { lock (m_map) { return m_map.Values; } } }
+ public OSD this[string key]
+ {
+ get
+ {
+ OSD llsd;
+
+ lock (m_map)
+ {
+ if (m_map.TryGetValue(key, out llsd))
+ return llsd;
+ else
+ return null;
+ }
+ }
+ set { lock (m_map) { m_map[key] = value; } }
+ }
+
+ public bool ContainsKey(string key)
+ {
+ lock (m_map)
+ return m_map.ContainsKey(key);
+ }
+
+ public void Add(string key, OSD llsd)
+ {
+ lock (m_map)
+ m_map.Add(key, llsd);
+ }
+
+ public void Add(KeyValuePair kvp)
+ {
+ lock (m_map)
+ m_map.Add(kvp.Key, kvp.Value);
+ }
+
+ public bool Remove(string key)
+ {
+ lock (m_map)
+ return m_map.Remove(key);
+ }
+
+ public bool TryGetValue(string key, out OSD llsd)
+ {
+ lock (m_map)
+ return m_map.TryGetValue(key, out llsd);
+ }
+
+ public void Clear()
+ {
+ lock (m_map)
+ m_map.Clear();
+ }
+
+ public bool Contains(KeyValuePair kvp)
+ {
+ lock (m_map)
+ return m_map.ContainsKey(kvp.Key);
+ }
+
+ public void CopyTo(KeyValuePair[] array, int index)
+ {
+ throw new NotImplementedException();
+ }
+
+ public bool Remove(KeyValuePair kvp)
+ {
+ lock (m_map)
+ return m_map.Remove(kvp.Key);
+ }
+
+ public System.Collections.IDictionaryEnumerator GetEnumerator()
+ {
+ lock (m_map)
+ return m_map.GetEnumerator();
+ }
+
+ IEnumerator> IEnumerable>.GetEnumerator()
+ {
+ return null;
+ }
+
+ IEnumerator IEnumerable.GetEnumerator()
+ {
+ lock (m_map)
+ return m_map.GetEnumerator();
+ }
+ }
+}
\ No newline at end of file
diff --git a/OpenSim/Framework/DynAttrsOSDMap.cs b/OpenSim/Framework/DynAttrsOSDMap.cs
deleted file mode 100644
index 2d45f66d80..0000000000
--- a/OpenSim/Framework/DynAttrsOSDMap.cs
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the OpenSimulator Project nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Text;
-using System.Xml;
-using System.Xml.Schema;
-using System.Xml.Serialization;
-using OpenMetaverse;
-using OpenMetaverse.StructuredData;
-
-namespace OpenSim.Framework
-{
- ///
- /// This is the map for storing and retrieving dynamic attributes.
- ///
- public class DynAttrsOSDMap : OSDMap, IXmlSerializable
- {
- public XmlSchema GetSchema() { return null; }
-
- public static DynAttrsOSDMap FromXml(string rawXml)
- {
- DynAttrsOSDMap map = new DynAttrsOSDMap();
- map.ReadXml(rawXml);
- return map;
- }
-
- public void ReadXml(string rawXml)
- {
- //System.Console.WriteLine("Trying to deserialize [{0}]", rawXml);
-
- OSDMap map = (OSDMap)OSDParser.DeserializeLLSDXml(rawXml);
-
- foreach (string key in map.Keys)
- this[key] = map[key];
- }
-
- public void ReadXml(XmlReader reader)
- {
- ReadXml(reader.ReadInnerXml());
- }
-
- public string ToXml()
- {
- return OSDParser.SerializeLLSDXmlString(this);
- }
-
- public void WriteXml(XmlWriter writer)
- {
- writer.WriteRaw(ToXml());
- }
- }
-}
\ No newline at end of file
diff --git a/OpenSim/Framework/PrimitiveBaseShape.cs b/OpenSim/Framework/PrimitiveBaseShape.cs
index fb0255b0a1..775412b15b 100644
--- a/OpenSim/Framework/PrimitiveBaseShape.cs
+++ b/OpenSim/Framework/PrimitiveBaseShape.cs
@@ -86,7 +86,7 @@ namespace OpenSim.Framework
///
/// Dynamic attributes can be created and deleted as required.
///
- public DynAttrsOSDMap DynAttrs { get; set; }
+ public DAMap DynAttrs { get; set; }
private byte[] m_textureEntry;
@@ -199,7 +199,7 @@ namespace OpenSim.Framework
{
PCode = (byte)PCodeEnum.Primitive;
m_textureEntry = DEFAULT_TEXTURE;
- DynAttrs = new DynAttrsOSDMap();
+ DynAttrs = new DAMap();
}
///
@@ -211,7 +211,7 @@ namespace OpenSim.Framework
// m_log.DebugFormat("[PRIMITIVE BASE SHAPE]: Creating from {0}", prim.ID);
PCode = (byte)prim.PrimData.PCode;
- DynAttrs = new DynAttrsOSDMap();
+ DynAttrs = new DAMap();
State = prim.PrimData.State;
PathBegin = Primitive.PackBeginCut(prim.PrimData.PathBegin);
diff --git a/OpenSim/Region/CoreModules/Framework/DynamicAttributes/DAExampleModule.cs b/OpenSim/Region/CoreModules/Framework/DynamicAttributes/DAExampleModule.cs
index 2aca93a3d0..d6fb15bfbe 100644
--- a/OpenSim/Region/CoreModules/Framework/DynamicAttributes/DAExampleModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/DynamicAttributes/DAExampleModule.cs
@@ -76,7 +76,7 @@ namespace OpenSim.Region.Framework.DynamicAttributes.DAExampleModule
protected bool OnSceneGroupMove(UUID groupId, Vector3 delta)
{
SceneObjectPart sop = m_scene.GetSceneObjectPart(groupId);
- OSDMap attrs = sop.DynAttrs;
+ DAMap attrs = sop.DynAttrs;
lock (attrs)
{
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index 2a9b99e50a..27f3a4d8f2 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -128,7 +128,7 @@ namespace OpenSim.Region.Framework.Scenes
///
/// Dynamic attributes can be created and deleted as required.
///
- public DynAttrsOSDMap DynAttrs { get; set; }
+ public DAMap DynAttrs { get; set; }
///
/// Is this a root part?
@@ -341,7 +341,7 @@ namespace OpenSim.Region.Framework.Scenes
m_particleSystem = Utils.EmptyBytes;
Rezzed = DateTime.UtcNow;
Description = String.Empty;
- DynAttrs = new DynAttrsOSDMap();
+ DynAttrs = new DAMap();
// Prims currently only contain a single folder (Contents). From looking at the Second Life protocol,
// this appears to have the same UUID (!) as the prim. If this isn't the case, one can't drag items from