[gxml/gxml-0-4: 5/5] API change on Serializable. * SerializableError enumeration change name * Improved error reporting o



commit 6d038b640ff4438fc74a1cefd8e3d902d21ab351
Author: Daniel Espinosa <esodan gmail com>
Date:   Fri Sep 5 07:44:24 2014 -0500

    API change on Serializable.
    * SerializableError enumeration change name
    * Improved error reporting on transformations from string

 gxml/Serializable.vala                |   29 ++++++++++++++++++++---------
 gxml/SerializableGeeArrayList.vala    |    2 +-
 gxml/SerializableGeeDualKeyMap.vala   |    2 +-
 gxml/SerializableGeeHashMap.vala      |    2 +-
 gxml/SerializableGeeTreeMap.vala      |    2 +-
 gxml/SerializableJson.vala            |    4 +++-
 gxml/SerializableObjectModel.vala     |    4 +++-
 test/SerializableObjectModelTest.vala |   17 +++++++++++++++++
 8 files changed, 47 insertions(+), 15 deletions(-)
---
diff --git a/gxml/Serializable.vala b/gxml/Serializable.vala
index e6702af..6f6ab94 100644
--- a/gxml/Serializable.vala
+++ b/gxml/Serializable.vala
@@ -157,7 +157,9 @@ namespace GXml {
      * @prop a { link GLib.ParamSpec} describing attribute to serialize
      * @node set to the { link GXml.Node} representing this attribute
      */
-    public signal void serialize_unknown_property (GXml.Node element, ParamSpec prop, out GXml.Node node);
+    public signal void serialize_unknown_property (GXml.Node element,
+                                                   ParamSpec prop,
+                                                   out GXml.Node node);
 
     /**
      * Signal to serialize unknown properties. Any new node must be added to
@@ -167,7 +169,9 @@ namespace GXml {
      * @prop a { link GLib.ParamSpec} describing attribute to serialize
      * @node set to the { link GXml.Node} representing this attribute
      */
-    public signal void serialize_unknown_property_type (GXml.Node element, ParamSpec prop, out GXml.Node 
node);
+    public signal void serialize_unknown_property_type (GXml.Node element,
+                                                        ParamSpec prop,
+                                                        out GXml.Node node);
 
     /**
      * Signal to deserialize unknown properties.
@@ -175,7 +179,8 @@ namespace GXml {
      * @node a { link GXml.Node} to get attribute from
      * @prop a { link GLib.ParamSpec} describing attribute to deserialize
      */
-    public signal void deserialize_unknown_property (GXml.Node node, ParamSpec prop);
+    public signal void deserialize_unknown_property (GXml.Node node,
+                                                     ParamSpec prop);
 
     /**
      * Signal to deserialize unknown properties' type.
@@ -183,7 +188,8 @@ namespace GXml {
      * @node a { link GXml.Node} to get attribute from
      * @prop a { link GLib.ParamSpec} describing attribute to deserialize
      */
-    public signal void deserialize_unknown_property_type (GXml.Node node, ParamSpec prop);
+    public signal void deserialize_unknown_property_type (GXml.Node node,
+                                                          ParamSpec prop);
 
     /**
      * Handles finding the { link GLib.ParamSpec} for a given property.
@@ -403,7 +409,8 @@ namespace GXml {
      * @node a { link GXml.Node} to get attribute from
      * @prop a { link GLib.ParamSpec} describing attribute to deserialize
      */
-    public abstract bool transform_from_string (string str, ref GLib.Value dest);
+    public abstract bool transform_from_string (string str, ref GLib.Value dest)
+                                                throws GLib.Error;
 
     /**
      * Transforms a string into another type hosted by { link GLib.Value}.
@@ -441,6 +448,7 @@ namespace GXml {
         }
       } else if (t == typeof (uint)) {
         uint64 val;
+        ;
         if (ret = uint64.try_parse (str, out val)) {
           dest2.set_uint ((uint)val);
         }
@@ -492,7 +500,8 @@ namespace GXml {
         dest = dest2;
         return true;
       } else {
-        throw new SerializableError.UNSUPPORTED_TYPE ("%s/%s", t.name (), t.to_string ());
+        throw new SerializableError.UNSUPPORTED_TYPE_ERROR ("Transformation Error on '%s' or Unsupported 
type: '%s'",
+                                                      str, t.name ());
       }
     }
 
@@ -515,7 +524,8 @@ namespace GXml {
      * @node a { link GXml.Node} to get attribute from
      * @prop a { link GLib.ParamSpec} describing attribute to deserialize
      */
-    public abstract bool transform_to_string (GLib.Value val, ref string str);
+    public abstract bool transform_to_string (GLib.Value val, ref string str)
+                                              throws GLib.Error;
     /**
      * Transforms a { link GLib.Value} to its string representation.
      *
@@ -533,7 +543,7 @@ namespace GXml {
       }
       else
       {
-        throw new SerializableError.UNSUPPORTED_TYPE ("Can't transform '%s' to string", val.type ().name ());
+        throw new SerializableError.UNSUPPORTED_TYPE_ERROR ("Can't transform '%s' to string", val.type 
().name ());
       }
     }
   }
@@ -545,6 +555,7 @@ namespace GXml {
     /**
      * An object with a known { link GLib.Type} that we do not support was encountered.
      */
-    UNSUPPORTED_TYPE
+    UNSUPPORTED_TYPE_ERROR,
+    STR_TO_VALUE_ERROR,
   }
 }
diff --git a/gxml/SerializableGeeArrayList.vala b/gxml/SerializableGeeArrayList.vala
index 4ca42a6..b4fec6d 100644
--- a/gxml/SerializableGeeArrayList.vala
+++ b/gxml/SerializableGeeArrayList.vala
@@ -114,7 +114,7 @@ public class GXml.SerializableArrayList<G> : Gee.ArrayList<G>, Serializable, Ser
                     throws GLib.Error
   {
     if (!element_type.is_a (typeof (GXml.Serializable))) {
-      throw new SerializableError.UNSUPPORTED_TYPE ("%s: Value type '%s' is unsupported", 
+      throw new SerializableError.UNSUPPORTED_TYPE_ERROR ("%s: Value type '%s' is unsupported", 
                                                     this.get_type ().name (), element_type.name ());
     }
     if (node is Element) {
diff --git a/gxml/SerializableGeeDualKeyMap.vala b/gxml/SerializableGeeDualKeyMap.vala
index 667bdfe..3db39f3 100644
--- a/gxml/SerializableGeeDualKeyMap.vala
+++ b/gxml/SerializableGeeDualKeyMap.vala
@@ -196,7 +196,7 @@ public class GXml.SerializableDualKeyMap<P,S,V> : Object, Serializable, Serializ
   {
     if (!(value_type.is_a (typeof (GXml.Serializable)) &&
         value_type.is_a (typeof (SerializableMapDualKey)))) {
-      throw new SerializableError.UNSUPPORTED_TYPE ("%s: Value type '%s' is unsupported", 
+      throw new SerializableError.UNSUPPORTED_TYPE_ERROR ("%s: Value type '%s' is unsupported", 
                                                     this.get_type ().name (), value_type.name ());
     }
     foreach (GXml.Node n in node.child_nodes) {
diff --git a/gxml/SerializableGeeHashMap.vala b/gxml/SerializableGeeHashMap.vala
index a7ce625..eb21231 100644
--- a/gxml/SerializableGeeHashMap.vala
+++ b/gxml/SerializableGeeHashMap.vala
@@ -112,7 +112,7 @@ public class GXml.SerializableHashMap<K,V> : Gee.HashMap<K,V>, Serializable, Ser
   {
     if (!(value_type.is_a (typeof (GXml.Serializable)) &&
         value_type.is_a (typeof (SerializableMapKey)))) {
-      throw new SerializableError.UNSUPPORTED_TYPE ("%s: Value type '%s' is unsupported", 
+      throw new SerializableError.UNSUPPORTED_TYPE_ERROR ("%s: Value type '%s' is unsupported", 
                                                     this.get_type ().name (), value_type.name ());
     }
     if (node is Element) {
diff --git a/gxml/SerializableGeeTreeMap.vala b/gxml/SerializableGeeTreeMap.vala
index 4f3efd2..fb8609e 100644
--- a/gxml/SerializableGeeTreeMap.vala
+++ b/gxml/SerializableGeeTreeMap.vala
@@ -115,7 +115,7 @@ public class GXml.SerializableTreeMap<K,V> : Gee.TreeMap<K,V>, Serializable, Ser
   {
     if (!(value_type.is_a (typeof (GXml.Serializable)) &&
         value_type.is_a (typeof (SerializableMapKey)))) {
-      throw new SerializableError.UNSUPPORTED_TYPE ("%s: Value type '%s' is unsupported", 
+      throw new SerializableError.UNSUPPORTED_TYPE_ERROR ("%s: Value type '%s' is unsupported", 
                                                     this.get_type ().name (), value_type.name ());
     }
     if (node is Element) {
diff --git a/gxml/SerializableJson.vala b/gxml/SerializableJson.vala
index 8241751..3c3ec6a 100644
--- a/gxml/SerializableJson.vala
+++ b/gxml/SerializableJson.vala
@@ -1,4 +1,4 @@
-/* -*- Mode: vala; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
+/* -*- Mode: vala; indent-tabs-mode: nil; c-basic-offset: 2; tab-width: 2 -*- */
 /* Serialization.vala
  *
  * Copyright (C) 2012-2013  Richard Schwarting <aquarichy gmail com>
@@ -98,11 +98,13 @@ public class GXml.SerializableJson : GLib.Object, GXml.Serializable
   }
 
   public virtual bool transform_from_string (string str, ref GLib.Value dest)
+                                            throws GLib.Error
   {
     return false;
   }
 
   public virtual bool transform_to_string (GLib.Value val, ref string str)
+                                            throws GLib.Error
   {
     return false;
   }
diff --git a/gxml/SerializableObjectModel.vala b/gxml/SerializableObjectModel.vala
index c0e3146..96bba68 100644
--- a/gxml/SerializableObjectModel.vala
+++ b/gxml/SerializableObjectModel.vala
@@ -1,4 +1,4 @@
-/* -*- Mode: vala; indent-tabs-mode: nil; c-basic-offset: 0; tab-width: 4 -*- */
+/* -*- Mode: vala; indent-tabs-mode: nil; c-basic-offset: 0; tab-width: 2 -*- */
 /* ObjectModel.vala
  *
  * Copyright (C) 2013, 2014  Daniel Espinosa <esodan gmail com>
@@ -67,11 +67,13 @@ public abstract class GXml.SerializableObjectModel : Object, Serializable
   }
 
   public virtual bool transform_from_string (string str, ref GLib.Value dest)
+                                            throws GLib.Error
   {
     return false;
   }
 
   public virtual bool transform_to_string (GLib.Value val, ref string str)
+                                          throws GLib.Error
   {
     return false;
   }
diff --git a/test/SerializableObjectModelTest.vala b/test/SerializableObjectModelTest.vala
index 3325464..90c82eb 100644
--- a/test/SerializableObjectModelTest.vala
+++ b/test/SerializableObjectModelTest.vala
@@ -74,6 +74,7 @@ public class Computer : ObjectModel
   public string model { get; set; }
   public int cores { get; set; }
   public float ghz { get; set; }
+  public uint quantity { get; set; }
 
   public Computer ()
   {
@@ -944,6 +945,22 @@ class SerializableObjectModelTest : GXmlTest
                        assert_not_reached ();
                      }
                    });
+    Test.add_func ("/gxml/serializable/object_model/deserialize_incorrect_uint",
+                   () => {
+                     try {
+                       var doc = new Document.from_string (
+                            """<?xml version="1.0"?>
+                            <PACKAGE source="Mexico/North" destiny="Brazil" Hope="2/4.04">
+                            <manual document="Sales Card" pages="1">Selling Card Specification</manual>
+                            <Computer manufacturer="BoxingLAN" model="J24-EX9" cores="32.5" ghz="1.8" 
quantity="0.2" />
+                            <Box size="1" volume="33.15" units="cm3" />
+                            </PACKAGE>""");
+                       Test.message (@"XML:\n$(doc)");
+                       var pkg = new Package ();
+                       pkg.deserialize (doc);
+                     }
+                     catch (GXml.SerializableError e) { Test.message ("Error thrown for invalid string to 
guint"); }
+                   });
   }
   static void serialize_manual_check (Element element, Manual manual)
   {


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