lib/serialization: support the Error class
authorAlexis Laferrière <alexis.laf@xymus.net>
Sat, 7 Nov 2015 13:02:42 +0000 (08:02 -0500)
committerAlexis Laferrière <alexis.laf@xymus.net>
Sun, 8 Nov 2015 17:41:45 +0000 (12:41 -0500)
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

lib/serialization/serialization.nit

index 7c689b6..5558d66 100644 (file)
@@ -257,3 +257,25 @@ redef class Ref[E]
                v.serialize_attribute("item", first)
        end
 end
+
+redef class Error
+       super Serializable
+
+       redef init from_deserializer(v)
+       do
+               v.notify_of_creation self
+
+               var message = v.deserialize_attribute("message")
+               if not message isa String then message = ""
+               init message
+
+               var cause = v.deserialize_attribute("cause")
+               if cause isa nullable Error then self.cause = cause
+       end
+
+       redef fun core_serialize_to(v)
+       do
+               v.serialize_attribute("message", message)
+               v.serialize_attribute("cause", cause)
+       end
+end