[gxml] Ported GXml.SerializableArrayList to new SerializableCollection
- From: Daniel Espinosa Ortiz <despinosa src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gxml] Ported GXml.SerializableArrayList to new SerializableCollection
- Date: Wed, 24 Feb 2016 19:48:22 +0000 (UTC)
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]