[gxml] Set version to 0.9.1: API Changes



commit cfa2aa2afec3780cff50fae983bc16b0121c9926
Author: Daniel Espinosa <esodan gmail com>
Date:   Mon Feb 22 18:39:05 2016 -0600

    Set version to 0.9.1: API Changes
    
    * API change Serializable.deserialize now return a boolean
    * API change SerializableCollection: added new abstract methods

 NEWS                                  |    8 ++++++++
 configure.ac                          |    2 +-
 gxml/Serializable.vala                |    2 +-
 gxml/SerializableContainer.vala       |   29 +++++++++++++++++++++++++++++
 gxml/SerializableGeeArrayList.vala    |   15 +++++++++++----
 gxml/SerializableGeeDualKeyMap.vala   |   13 ++++++++++---
 gxml/SerializableGeeHashMap.vala      |   15 ++++++++++++---
 gxml/SerializableGeeTreeMap.vala      |   13 ++++++++++---
 gxml/SerializableObjectModel.vala     |    8 ++++----
 test/SerializableObjectModelTest.vala |    2 +-
 10 files changed, 87 insertions(+), 20 deletions(-)
---
diff --git a/NEWS b/NEWS
index 4bae2de..69c68d1 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,12 @@
 ===============
+Version 0.9.2
+===============
+
+* API change Serializable.deserialize now return a boolean
+* API change SerializableCollection: added new abstract methods
+
+
+===============
 Version 0.9.1
 ===============
 
diff --git a/configure.ac b/configure.ac
index 14bee7f..362d23c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -12,7 +12,7 @@
 # Release Version
 m4_define([project_major_version], [0])
 m4_define([project_minor_version], [9])
-m4_define([project_micro_version], [1])
+m4_define([project_micro_version], [2])
 m4_define([project_nano_version], [0])
 
 # LT_VERSION
diff --git a/gxml/Serializable.vala b/gxml/Serializable.vala
index 3498bb7..8147a3e 100644
--- a/gxml/Serializable.vala
+++ b/gxml/Serializable.vala
@@ -166,7 +166,7 @@ namespace GXml {
      *
      * @param node { link GXml.Node} used to deserialize from.
      */
-    public abstract GXml.Node? deserialize (GXml.Node node)
+    public abstract bool deserialize (GXml.Node node)
                                       throws GLib.Error;
     /**
      * Handles deserializing individual properties.
diff --git a/gxml/SerializableContainer.vala b/gxml/SerializableContainer.vala
index 1191903..379ed18 100644
--- a/gxml/SerializableContainer.vala
+++ b/gxml/SerializableContainer.vala
@@ -45,5 +45,34 @@ public abstract class GXml.SerializableContainer : SerializableObjectModel
  */
 public interface GXml.SerializableCollection : Object, Gee.Traversable<Serializable>, Serializable
 {
+  /**
+   * Returns true if the collection was deserialized from a { link GXml.Node}'s children.
+   */
+  public abstract bool deserialized ();
+  /**
+   * Returns true if the collection is able to deserialize from a { link GXml.Node}'s children.
+   */
+  public abstract bool is_prepared ();
+  /**
+   * Executes a deserialization from a { link GXml.Node}. After this operation
+   * { link GXml.SerializableCollection.deserialized} should return true. This
+   * operation should not be executed if { link GXml.SerializableCollection.is_prepared}
+   * return false;
+   *
+   * This could override existing objects in collection.
+   */
+  public abstract bool deserialize_node (GXml.Node node);
+  /**
+   * Executes a deserialization from all children nodes in a { link GXml.Node}. After this operation
+   * { link GXml.SerializableCollection.deserialized} should return true. This
+   * operation should not be executed if { link GXml.SerializableCollection.is_prepared}
+   * return false;
+   *
+   * This could override existing objects in collection.
+   */
+  public abstract bool deserialize_children (GXml.Node node);
+  /**
+   * Convenient function to detect Serializable Collections.
+   */
   public virtual bool is_collection () { return true; }
 }
diff --git a/gxml/SerializableGeeArrayList.vala b/gxml/SerializableGeeArrayList.vala
index c4f5c9b..ccf35f8 100644
--- a/gxml/SerializableGeeArrayList.vala
+++ b/gxml/SerializableGeeArrayList.vala
@@ -32,7 +32,14 @@ public class GXml.SerializableArrayList<G> : Gee.ArrayList<G>, Serializable, Ser
 {
   Gee.HashMap<string,GXml.Attribute> _unknown_serializable_property = new Gee.HashMap<string,GXml.Attribute> 
();
   Gee.ArrayList<GXml.Node> _unknown_serializable_nodes = new Gee.ArrayList<GXml.Node> ();
-  
+  GXml.Node _node;
+
+  // SerializableCollection interface
+  public virtual bool deserialized () { return true; }
+  public virtual bool is_prepared () { return (_node is GXml.Node); }
+  public virtual bool deserialize_node (GXml.Node node) { return deserialize_property (node); }
+  public virtual bool deserialize_children (GXml.Node node) { return deserialize (node); }
+
        construct { Init.init (); }
 
   public Gee.Map<string,GXml.Attribute> unknown_serializable_properties
@@ -101,13 +108,13 @@ public class GXml.SerializableArrayList<G> : Gee.ArrayList<G>, Serializable, Ser
   {
     return element;
   }
-  public virtual GXml.Node? deserialize (GXml.Node node)
+  public virtual bool deserialize (GXml.Node node)
                                     throws GLib.Error
                                     requires (node_name () != null)
   {
     return default_deserialize (node);
   }
-  public GXml.Node? default_deserialize (GXml.Node node)
+  public bool default_deserialize (GXml.Node node)
                     throws GLib.Error
   {
     if (!element_type.is_a (typeof (GXml.Serializable))) {
@@ -122,7 +129,7 @@ public class GXml.SerializableArrayList<G> : Gee.ArrayList<G>, Serializable, Ser
         deserialize_property (n);
       }
     }
-    return node;
+    return true;
   }
   public virtual bool deserialize_property (GXml.Node property_node)
                                             throws GLib.Error
diff --git a/gxml/SerializableGeeDualKeyMap.vala b/gxml/SerializableGeeDualKeyMap.vala
index fd7d387..afc6ca8 100644
--- a/gxml/SerializableGeeDualKeyMap.vala
+++ b/gxml/SerializableGeeDualKeyMap.vala
@@ -31,6 +31,13 @@ using Gee;
 public class GXml.SerializableDualKeyMap<P,S,V> : Object, Gee.Traversable <V>, Serializable, 
SerializableCollection
 {
   protected Gee.HashMultiMap<P,HashMap<S,V>> storage;
+  GXml.Node _node;
+
+  // SerializableCollection interface
+  public virtual bool deserialized () { return true; }
+  public virtual bool is_prepared () { return (_node is GXml.Node); }
+  public virtual bool deserialize_node (GXml.Node node) { return deserialize_property (node); }
+  public virtual bool deserialize_children (GXml.Node node) { return deserialize (node); }
 
        construct { Init.init (); }
 
@@ -181,13 +188,13 @@ public class GXml.SerializableDualKeyMap<P,S,V> : Object, Gee.Traversable <V>, S
   {
     return element;
   }
-  public virtual GXml.Node? deserialize (GXml.Node node)
+  public virtual bool deserialize (GXml.Node node)
                                     throws GLib.Error
                                     requires (node_name () != null)
   {
     return default_deserialize (node);
   }
-  public GXml.Node? default_deserialize (GXml.Node node)
+  public bool default_deserialize (GXml.Node node)
                     throws GLib.Error
                     requires (node is Element)
   {
@@ -217,7 +224,7 @@ public class GXml.SerializableDualKeyMap<P,S,V> : Object, Gee.Traversable <V>, S
         }
       }
     }
-    return node;
+    return true;
   }
   public virtual bool deserialize_property (GXml.Node property_node)
                                             throws GLib.Error
diff --git a/gxml/SerializableGeeHashMap.vala b/gxml/SerializableGeeHashMap.vala
index b6fe8a6..63441aa 100644
--- a/gxml/SerializableGeeHashMap.vala
+++ b/gxml/SerializableGeeHashMap.vala
@@ -30,9 +30,18 @@ public class GXml.SerializableHashMap<K,V> : Gee.HashMap<K,V>, Serializable, Ser
 {
   Gee.HashMap<string,GXml.Attribute> _unknown_serializable_property = new Gee.HashMap<string,GXml.Attribute> 
();
   Gee.ArrayList<GXml.Node> _unknown_serializable_nodes = new Gee.ArrayList<GXml.Node> ();
+  GXml.Node _node;
 
+  // SerializableCollection interface
+  public virtual bool deserialized () { return true; }
+  public virtual bool is_prepared () { return (_node is GXml.Node); }
+  public virtual bool deserialize_node (GXml.Node node) { return deserialize_property (node); }
+  public virtual bool deserialize_children (GXml.Node node) { return deserialize (node); }
+
+       // Construct
        construct { Init.init (); }
 
+  // Serializable interface
   public Gee.Map<string,GXml.Attribute> unknown_serializable_properties
   {
     owned get {
@@ -98,13 +107,13 @@ public class GXml.SerializableHashMap<K,V> : Gee.HashMap<K,V>, Serializable, Ser
   {
     return element;
   }
-  public virtual GXml.Node? deserialize (GXml.Node node)
+  public virtual bool deserialize (GXml.Node node)
                                     throws GLib.Error
                                     requires (node_name () != null)
   {
     return default_deserialize (node);
   }
-  public GXml.Node? default_deserialize (GXml.Node node)
+  public bool default_deserialize (GXml.Node node)
                     throws GLib.Error
   {
     if (!(value_type.is_a (typeof (GXml.Serializable)) &&
@@ -126,7 +135,7 @@ public class GXml.SerializableHashMap<K,V> : Gee.HashMap<K,V>, Serializable, Ser
         }
       }
     }
-    return node;
+    return true;
   }
   public virtual bool deserialize_property (GXml.Node property_node)
                                             throws GLib.Error
diff --git a/gxml/SerializableGeeTreeMap.vala b/gxml/SerializableGeeTreeMap.vala
index 81d550d..02586d3 100644
--- a/gxml/SerializableGeeTreeMap.vala
+++ b/gxml/SerializableGeeTreeMap.vala
@@ -30,6 +30,13 @@ public class GXml.SerializableTreeMap<K,V> : Gee.TreeMap<K,V>, Serializable, Ser
 {
   Gee.HashMap<string,GXml.Attribute> _unknown_serializable_property = new Gee.HashMap<string,GXml.Attribute> 
();
   Gee.ArrayList<GXml.Node> _unknown_serializable_nodes = new Gee.ArrayList<GXml.Node> ();
+  GXml.Node _node;
+
+  // SerializableCollection interface
+  public virtual bool deserialized () { return true; }
+  public virtual bool is_prepared () { return (_node is GXml.Node); }
+  public virtual bool deserialize_node (GXml.Node node) { return deserialize_property (node); }
+  public virtual bool deserialize_children (GXml.Node node) { return deserialize (node); }
 
        construct { Init.init (); }
 
@@ -101,13 +108,13 @@ public class GXml.SerializableTreeMap<K,V> : Gee.TreeMap<K,V>, Serializable, Ser
   {
     return element;
   }
-  public virtual GXml.Node? deserialize (GXml.Node node)
+  public virtual bool deserialize (GXml.Node node)
                                     throws GLib.Error
                                     requires (node_name () != null)
   {
     return default_deserialize (node);
   }
-  public GXml.Node? default_deserialize (GXml.Node node)
+  public bool default_deserialize (GXml.Node node)
                     throws GLib.Error
   {
     if (!(value_type.is_a (typeof (GXml.Serializable)) &&
@@ -129,7 +136,7 @@ public class GXml.SerializableTreeMap<K,V> : Gee.TreeMap<K,V>, Serializable, Ser
         }
       }
     }
-    return node;
+    return true;
   }
   public virtual bool deserialize_property (GXml.Node property_node)
                                             throws GLib.Error
diff --git a/gxml/SerializableObjectModel.vala b/gxml/SerializableObjectModel.vala
index 54c65f9..6d0a16e 100644
--- a/gxml/SerializableObjectModel.vala
+++ b/gxml/SerializableObjectModel.vala
@@ -292,13 +292,13 @@ public abstract class GXml.SerializableObjectModel : Object, Serializable
     return attr;
   }
 
-  public virtual GXml.Node? deserialize (GXml.Node node)
+  public virtual bool deserialize (GXml.Node node)
                                     throws GLib.Error
                                     requires (node_name () != null)
   {
     return default_deserialize (node);
   }
-  public GXml.Node? default_deserialize (GXml.Node node)
+  public bool default_deserialize (GXml.Node node)
                                     throws GLib.Error
   {
     Document doc;
@@ -316,7 +316,7 @@ public abstract class GXml.SerializableObjectModel : Object, Serializable
     return_val_if_fail (element != null, null);
     if (node_name () == null) {
       GLib.warning (_("WARNING: Object type '%s' have no Node Name defined").printf (get_type ().name ()));
-      return null;
+      return false;
     }
     if (element.name.down () != node_name ().down ()) {
       GLib.warning (_("Actual node's name is '%s' expected '%s'").printf (element.name.down (),node_name 
().down ()));
@@ -385,7 +385,7 @@ public abstract class GXml.SerializableObjectModel : Object, Serializable
 #endif
       deserialize_property (n);
     }
-    return null;
+    return true;
   }
 
   public virtual bool deserialize_property (GXml.Node property_node)
diff --git a/test/SerializableObjectModelTest.vala b/test/SerializableObjectModelTest.vala
index f1a9399..dce9d41 100644
--- a/test/SerializableObjectModelTest.vala
+++ b/test/SerializableObjectModelTest.vala
@@ -251,7 +251,7 @@ class Configuration : ObjectModel
     n.set_namespace ("http://www.gnome.org/gxml/0.4";, "om");
     return (GXml.Node)n;
   }
-  public override GXml.Node? deserialize (GXml.Node node) throws GLib.Error
+  public override bool deserialize (GXml.Node node) throws GLib.Error
   {
 #if DEBUG
     GLib.message (@"CONFIGURATOR: Deserializing... $(node.to_string ())");


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]