[gxml/gxml-0-4: 5/5] API change on Serializable. * SerializableError enumeration change name * Improved error reporting o
- From: Daniel Espinosa Ortiz <despinosa src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gxml/gxml-0-4: 5/5] API change on Serializable. * SerializableError enumeration change name * Improved error reporting o
- Date: Tue, 16 Sep 2014 16:32:25 +0000 (UTC)
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]