[gxml] Fixed Serializable.serialize_set_namespace as ignored property



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]