redef fun answer(request, truncated_uri) do return new HttpResponse(400)
- # Service to deserialize arguments from JSON
+ # Deserialize `val` from JSON for a parameter typed by `static_type`
#
# Accepts `nullable String` for convenience, but returns `null` when `val == null`.
#
# This method is called by the code generated by `nitrestful`.
# It can be specialized to customize its behavior.
- protected fun deserialize_arg(val: nullable String): nullable Object
+ protected fun deserialize_arg(val: nullable String, static_type: String): nullable Object
do
if val == null then return null
var deserializer = new JsonDeserializer(val)
- var obj = deserializer.deserialize
+ var obj = deserializer.deserialize(static_type)
if deserializer.errors.not_empty then
print_error deserializer.errors.join("\n")
else
# Deserialize everything else
template.add """
- var out_{{{arg_name}}} = deserialize_arg(in_{{{arg_name}}})
+ var out_{{{arg_name}}} = deserialize_arg(in_{{{arg_name}}}, "{{{self.name}}}")
"""
end
end
"""
var mtype = param.mtype
- mtype.gen_arg_convert(t, param.name)
+ var bound_mtype = mclassdef.bound_mtype
+ var resolved_mtype = mtype.resolve_for(bound_mtype, bound_mtype, mclassdef.mmodule, true)
+ var resolved_type_name = resolved_mtype.name
+
+ resolved_mtype.gen_arg_convert(t, param.name)
var arg = "out_{param.name}"
args.add arg