[gxml] Fixed Serializable.serialize_set_namespace as ignored property
- From: Daniel Espinosa Ortiz <despinosa src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gxml] Fixed Serializable.serialize_set_namespace as ignored property
- Date: Fri, 6 Feb 2015 17:37:47 +0000 (UTC)
commit 5b3f7d0f0531c9095c72f60ebbd81c705f9b5ece
Author: Daniel Espinosa <esodan gmail com>
Date: Fri Feb 6 11:36:31 2015 -0600
Fixed Serializable.serialize_set_namespace as ignored property
* make check pass
gxml/Serializable.vala | 16 ++++++++++++++++
gxml/SerializableGeeArrayList.vala | 1 +
gxml/SerializableGeeDualKeyMap.vala | 1 +
gxml/SerializableGeeHashMap.vala | 1 +
gxml/SerializableGeeTreeMap.vala | 1 +
gxml/SerializableJson.vala | 5 ++++-
gxml/SerializableObjectModel.vala | 1 +
gxml/Serialization.vala | 4 +++-
test/SerializableTest.vala | 13 ++++++++++---
9 files changed, 38 insertions(+), 5 deletions(-)
---
diff --git a/gxml/Serializable.vala b/gxml/Serializable.vala
index 854f313..f14d728 100644
--- a/gxml/Serializable.vala
+++ b/gxml/Serializable.vala
@@ -95,6 +95,20 @@ namespace GXml {
* This property is ignored on serialisation.
*/
public abstract string? serialized_xml_node_value { get; protected set; default = null; }
+
+ /**
+ * Used to set specific namespace for an { link GXml.Element}.
+ *
+ * By default no namspace prefix is added to { link GXml.Element} on serialized. Implementors
+ * must consider { link Serializable.serialize_set_namespace} proterty value
+ * to discover if this node should have a namespace.
+ *
+ * { link GXml.Element} namespace should be added before to serialize any
+ * property.
+ *
+ * This property is ignored on serialisation.
+ */
+ public abstract string? serialize_set_namespace { get; set; default = null; }
/**
* Used to check { link GXml.Element}'s contents must be deseralized.
*
@@ -297,6 +311,8 @@ namespace GXml {
get_class ().find_property("unknown-serializable-property"));
ignored_serializable_properties.set ("serialized-xml-node-value",
get_class ().find_property("serialized-xml-node-value"));
+ ignored_serializable_properties.set ("serialize-set-namespace",
+ get_class ().find_property("serialize_set_namespace"));
}
if (unknown_serializable_property == null) {
unknown_serializable_property = new HashTable<string,GXml.Node> (str_hash, str_equal);
diff --git a/gxml/SerializableGeeArrayList.vala b/gxml/SerializableGeeArrayList.vala
index 1df4bca..bd5ce0a 100644
--- a/gxml/SerializableGeeArrayList.vala
+++ b/gxml/SerializableGeeArrayList.vala
@@ -33,6 +33,7 @@ public class GXml.SerializableArrayList<G> : Gee.ArrayList<G>, Serializable, Ser
protected ParamSpec[] properties { get; set; }
public GLib.HashTable<string,GLib.ParamSpec> ignored_serializable_properties { get; protected set; }
public string? serialized_xml_node_value { get; protected set; default=null; }
+ public string? serialize_set_namespace { get; set; default = null; }
public GLib.HashTable<string,GXml.Node> unknown_serializable_property { get; protected set; }
diff --git a/gxml/SerializableGeeDualKeyMap.vala b/gxml/SerializableGeeDualKeyMap.vala
index 8667e81..bb6625c 100644
--- a/gxml/SerializableGeeDualKeyMap.vala
+++ b/gxml/SerializableGeeDualKeyMap.vala
@@ -115,6 +115,7 @@ public class GXml.SerializableDualKeyMap<P,S,V> : Object, Serializable, Serializ
protected ParamSpec[] properties { get; set; }
public GLib.HashTable<string,GLib.ParamSpec> ignored_serializable_properties { get; protected set; }
public string? serialized_xml_node_value { get; protected set; default=null; }
+ public string? serialize_set_namespace { get; set; default = null; }
public GLib.HashTable<string,GXml.Node> unknown_serializable_property { get; protected set; }
public virtual bool get_enable_unknown_serializable_property () { return false; }
diff --git a/gxml/SerializableGeeHashMap.vala b/gxml/SerializableGeeHashMap.vala
index 9c70b98..398d238 100644
--- a/gxml/SerializableGeeHashMap.vala
+++ b/gxml/SerializableGeeHashMap.vala
@@ -31,6 +31,7 @@ public class GXml.SerializableHashMap<K,V> : Gee.HashMap<K,V>, Serializable, Ser
protected ParamSpec[] properties { get; set; }
public GLib.HashTable<string,GLib.ParamSpec> ignored_serializable_properties { get; protected set; }
public string? serialized_xml_node_value { get; protected set; default=null; }
+ public string? serialize_set_namespace { get; set; default = null; }
public GLib.HashTable<string,GXml.Node> unknown_serializable_property { get; protected set; }
public virtual bool get_enable_unknown_serializable_property () { return false; }
diff --git a/gxml/SerializableGeeTreeMap.vala b/gxml/SerializableGeeTreeMap.vala
index 901fb74..74359da 100644
--- a/gxml/SerializableGeeTreeMap.vala
+++ b/gxml/SerializableGeeTreeMap.vala
@@ -31,6 +31,7 @@ public class GXml.SerializableTreeMap<K,V> : Gee.TreeMap<K,V>, Serializable, Ser
protected ParamSpec[] properties { get; set; }
public GLib.HashTable<string,GLib.ParamSpec> ignored_serializable_properties { get; protected set; }
public string? serialized_xml_node_value { get; protected set; default=null; }
+ public string? serialize_set_namespace { get; set; default = null; }
public GLib.HashTable<string,GXml.Node> unknown_serializable_property { get; protected set; }
public bool get_enable_unknown_serializable_property () { return false; }
diff --git a/gxml/SerializableJson.vala b/gxml/SerializableJson.vala
index 31f6f3a..0a7e293 100644
--- a/gxml/SerializableJson.vala
+++ b/gxml/SerializableJson.vala
@@ -66,6 +66,7 @@ public class GXml.SerializableJson : GLib.Object, GXml.Serializable
public HashTable<string,GXml.Node> unknown_serializable_property { get; protected set; }
public virtual bool get_enable_unknown_serializable_property () { return false; }
public string? serialized_xml_node_value { get; protected set; default = null; }
+ public string? serialize_set_namespace { get; set; default = null; }
public virtual bool serialize_use_xml_node_value () { return false; }
public virtual string node_name () { return "Object"; }
@@ -176,7 +177,9 @@ public class GXml.SerializableJson : GLib.Object, GXml.Serializable
Value t = Value (typeof (string));
this.get_property_value (prop, ref val);
val.transform (ref t);
- value_node = doc.create_text_node (t.get_string ());
+ string str = t.get_string ();
+ if (str == null) str = "";
+ value_node = doc.create_text_node (str);
prop_node.append_child (value_node);
return prop_node;
}
diff --git a/gxml/SerializableObjectModel.vala b/gxml/SerializableObjectModel.vala
index 0160e8c..338bf76 100644
--- a/gxml/SerializableObjectModel.vala
+++ b/gxml/SerializableObjectModel.vala
@@ -39,6 +39,7 @@ public abstract class GXml.SerializableObjectModel : Object, Serializable
protected ParamSpec[] properties { get; set; }
public GLib.HashTable<string,GLib.ParamSpec> ignored_serializable_properties { get; protected set; }
public string? serialized_xml_node_value { get; protected set; default=null; }
+ public string? serialize_set_namespace { get; set; default = null; }
public virtual bool get_enable_unknown_serializable_property () { return false; }
public GLib.HashTable<string,GXml.Node> unknown_serializable_property { get; protected set; }
diff --git a/gxml/Serialization.vala b/gxml/Serialization.vala
index a3dd8e0..2ac6685 100644
--- a/gxml/Serialization.vala
+++ b/gxml/Serialization.vala
@@ -134,7 +134,9 @@ namespace GXml {
} else if (Value.type_transformable (prop_spec.value_type, typeof (string))) { //
e.g. int, double, string, bool
value = Value (typeof (string));
object.get_property (prop_spec.name, ref value);
- value_node = doc.create_text_node (value.get_string ());
+ string str = value.get_string ();
+ if (str == null) str = "";
+ value_node = doc.create_text_node (str);
} else if (type == typeof (GLib.Type)) {
value_node = doc.create_text_node (type.name ());
/*
diff --git a/test/SerializableTest.vala b/test/SerializableTest.vala
index aea2044..7762604 100644
--- a/test/SerializableTest.vala
+++ b/test/SerializableTest.vala
@@ -229,9 +229,16 @@ class SerializableTest : GXmlTest {
public static void add_tests () {
Test.add_func ("/gxml/serializable/interface_defaults", () => {
SerializableTomato tomato = new SerializableTomato (0, 0, 12, "cats");
-
- SerializationTest.test_serialization_deserialization (tomato,
"interface_defaults", (GLib.EqualFunc)SerializableTomato.equals,
(SerializationTest.StringifyFunc)SerializableTomato.to_string);
- });
+ var doc = new Document ();
+ tomato.serialize (doc);
+ GLib.message (doc.to_string ());
+ SerializableTomato tomato2 = new SerializableTomato (1,1,4,"dogs");
+ tomato2.deserialize (doc);
+ assert (tomato.weight != tomato2.weight);
+ assert (tomato2.weight == 1);
+ assert (tomato.height == tomato2.height);
+ assert (tomato.description == tomato2.description);
+ });
Test.add_func ("/gxml/serializable/interface_override_serialization_on_list", () => {
GXml.Document doc;
SerializableCapsicum capsicum;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]