[gxml] Ported GXml.SerializableArrayList to new SerializableCollection



commit 400081e1e22be07a0228aa704b0d51e2f8ce5777
Author: Daniel Espinosa <esodan gmail com>
Date:   Tue Feb 23 22:05:04 2016 -0600

    Ported GXml.SerializableArrayList to new SerializableCollection

 gxml/SerializableContainer.vala     |    2 +-
 gxml/SerializableGeeArrayList.vala  |   61 +++++++++++++++++++---------------
 gxml/SerializableGeeDualKeyMap.vala |    1 +
 gxml/SerializableGeeHashMap.vala    |    1 +
 gxml/SerializableGeeTreeMap.vala    |    1 +
 5 files changed, 38 insertions(+), 28 deletions(-)
---
diff --git a/gxml/SerializableContainer.vala b/gxml/SerializableContainer.vala
index ba4451e..08460b8 100644
--- a/gxml/SerializableContainer.vala
+++ b/gxml/SerializableContainer.vala
@@ -51,7 +51,7 @@ public interface GXml.SerializableCollection : Object, Gee.Traversable<Serializa
    * this could impact in performance; return false and use { link 
GXml.SerializableCollection.deserialize_children}
    * when you need to deserialize all nodes to access them.
    */
-  //public abstract bool deserialize_proceed ();
+  public abstract bool deserialize_proceed ();
   /**
    * Returns true if the collection was deserialized from a { link GXml.Node}'s children.
    */
diff --git a/gxml/SerializableGeeArrayList.vala b/gxml/SerializableGeeArrayList.vala
index 159c62d..b9d3079 100644
--- a/gxml/SerializableGeeArrayList.vala
+++ b/gxml/SerializableGeeArrayList.vala
@@ -35,10 +35,38 @@ public class GXml.SerializableArrayList<G> : Gee.ArrayList<G>, Serializable, Ser
   GXml.Node _node;
 
   // SerializableCollection interface
+  public virtual bool deserialize_proceed () { return true; }
   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); }
+  public virtual bool deserialize_node (GXml.Node node) {
+    if (!element_type.is_a (typeof (GXml.Serializable))) {
+      throw new SerializableError.UNSUPPORTED_TYPE_ERROR (_("%s: Value type '%s' is unsupported"), 
+                                                    this.get_type ().name (), element_type.name ());
+    }
+    if (node is Element) {
+      var obj = Object.new (element_type) as Serializable;
+      if (node.name.down () == obj.node_name ().down ()) {
+        obj.deserialize (node);
+        add (obj);
+      }
+    }
+    return true;
+  }
+  public virtual bool deserialize_children (GXml.Node node) {
+    if (!element_type.is_a (typeof (GXml.Serializable))) {
+      throw new SerializableError.UNSUPPORTED_TYPE_ERROR (_("%s: Value type '%s' is unsupported"), 
+                                                    this.get_type ().name (), element_type.name ());
+    }
+    if (node is Element) {
+#if DEBUG
+            GLib.message (@"Deserializing ArrayList on Element: $(node.name)");
+#endif
+      foreach (GXml.Node n in node.childs) {
+        deserialize_property (n);
+      }
+    }
+    return true;
+  }
 
        construct { Init.init (); }
 
@@ -117,19 +145,9 @@ public class GXml.SerializableArrayList<G> : Gee.ArrayList<G>, Serializable, Ser
   public bool default_deserialize (GXml.Node node)
                     throws GLib.Error
   {
-    if (!element_type.is_a (typeof (GXml.Serializable))) {
-      throw new SerializableError.UNSUPPORTED_TYPE_ERROR (_("%s: Value type '%s' is unsupported"), 
-                                                    this.get_type ().name (), element_type.name ());
-    }
-    if (node is Element) {
-#if DEBUG
-            GLib.message (@"Deserializing ArrayList on Element: $(node.name)");
-#endif
-      foreach (GXml.Node n in node.childs) {
-        deserialize_property (n);
-      }
-    }
-    return true;
+    if (deserialize_proceed ())
+      return deserialize_children (node);
+    return false;
   }
   public virtual bool deserialize_property (GXml.Node property_node)
                                             throws GLib.Error
@@ -139,18 +157,7 @@ public class GXml.SerializableArrayList<G> : Gee.ArrayList<G>, Serializable, Ser
   public bool default_deserialize_property (GXml.Node property_node)
                                             throws GLib.Error
   {
-    if (!element_type.is_a (typeof (GXml.Serializable))) {
-      throw new SerializableError.UNSUPPORTED_TYPE_ERROR (_("%s: Value type '%s' is unsupported"), 
-                                                    this.get_type ().name (), element_type.name ());
-    }
-    if (property_node is Element) {
-      var obj = Object.new (element_type) as Serializable;
-      if (property_node.name.down () == obj.node_name ().down ()) {
-        obj.deserialize (property_node);
-        add (obj);
-      }
-    }
-    return true;
+    return deserialize_node (property_node);
   }
 }
 
diff --git a/gxml/SerializableGeeDualKeyMap.vala b/gxml/SerializableGeeDualKeyMap.vala
index caf9ac5..3d6c6ca 100644
--- a/gxml/SerializableGeeDualKeyMap.vala
+++ b/gxml/SerializableGeeDualKeyMap.vala
@@ -34,6 +34,7 @@ public class GXml.SerializableDualKeyMap<P,S,V> : Object, Gee.Traversable <V>, S
   GXml.Node _node;
 
   // SerializableCollection interface
+  public virtual bool deserialize_proceed () { return true; }
   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); }
diff --git a/gxml/SerializableGeeHashMap.vala b/gxml/SerializableGeeHashMap.vala
index 83ea4ad..f0cd113 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
   GXml.Node _node;
 
   // SerializableCollection interface
+  public virtual bool deserialize_proceed () { return true; }
   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); }
diff --git a/gxml/SerializableGeeTreeMap.vala b/gxml/SerializableGeeTreeMap.vala
index 8920cba..30a3065 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
   GXml.Node _node;
 
   // SerializableCollection interface
+  public virtual bool deserialize_proceed () { return true; }
   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); }


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