]> xenbits.xensource.com Git - xenclient/toolstack.git/commitdiff
simplify json_conv error handling
authorPrashanth Mundkur <prashanth.mundkur@citrix.com>
Fri, 8 May 2009 18:03:09 +0000 (11:03 -0700)
committerPrashanth Mundkur <prashanth.mundkur@citrix.com>
Fri, 8 May 2009 18:03:09 +0000 (11:03 -0700)
libs/json/json_conv.ml
libs/json/json_conv.mli
libs/jsonrpc/jsonrpc.ml
libs/jsonrpc/jsonrpc.mli

index 463c18885f8edb60d075c4e9fde8c5512d20c4fa..991d3d8dad3f77251ebade93087f8e0ae5f33290 100644 (file)
  * GNU Lesser General Public License for more details.
  *)
 
-type conv_error =
+type error =
        | Unexpected_json_type of (* rcvd *) string * (* expected *) string
        | Array_length of (* rcvd *) int * (* expected *) int
        | Unknown_constructor of (* type *) string * (* constructor *) string
        | Missing_object_field of string
 
-exception Json_conv_failure of conv_error
+let string_of_error = function
+       | Unexpected_json_type (r, e) ->
+               Printf.sprintf "type %s received when %s was expected" r e
+       | Array_length (r, e) ->
+               Printf.sprintf "array length %d received when %d was expected" r e
+       | Unknown_constructor (t, c) ->
+               Printf.sprintf "unknown constructor %s received for type %s" c t
+       | Missing_object_field f ->
+               Printf.sprintf "missing object field %s" f
+
+exception Json_conv_error of error
 
 let raise_unexpected_json_type typ exp =
-       raise (Json_conv_failure (Unexpected_json_type (typ, exp)))
+       raise (Json_conv_error (Unexpected_json_type (typ, exp)))
 
 let raise_short_array len exp =
-       raise (Json_conv_failure (Array_length (len, exp)))
+       raise (Json_conv_error (Array_length (len, exp)))
 
 let raise_unknown_constructor typ cons =
-       raise (Json_conv_failure (Unknown_constructor (typ, cons)))
+       raise (Json_conv_error (Unknown_constructor (typ, cons)))
 
 let raise_missing_object_field field =
-       raise (Json_conv_failure (Missing_object_field field))
+       raise (Json_conv_error (Missing_object_field field))
 
 let string_of_json ?(permissive=false) j =
        let strict = function
index 91dcf4b3d70633167ba761e46549226b385df3ce..921d2210babbf3c4b1e195ed1c266e8699b594d5 100644 (file)
 
 
 (* conversion errors *)
-type conv_error =
+type error =
        | Unexpected_json_type of (* rcvd *) string * (* expected *) string
        | Array_length of (* rcvd *) int * (* expected *) int
        | Unknown_constructor of (* type *) string * (* constructor *) string
        | Missing_object_field of string
+val string_of_error: error -> string
 
-exception Json_conv_failure of conv_error
+exception Json_conv_error of error
 
 
 (* conversion routines for base types *)
index 284d5406bf9b1f046dc8ec1e62d7f2cb2a0e7ccb..db093d4c443b14f4b422d31c061b53dbee884663 100644 (file)
@@ -23,11 +23,11 @@ let code_error_invalid_params = -32602      (* Invalid method parameters. *)
 let code_error_internal_error = -32603 (* Internal JSON-RPC error. *)
 
 type req_error =
-       | Request_json_conv_error of conv_error
+       | Request_json_conv_error of error
        | Request_invalid_params
 
 type resp_error =
-       | Response_json_conv_error of conv_error
+       | Response_json_conv_error of error
        | Response_no_result_or_error
        | Response_both_result_and_error
 
@@ -63,7 +63,7 @@ let request_of_json j =
                if not (Json.is_object params) && not (Json.is_array params) then
                        raise (Invalid_request Request_invalid_params);
                { request_id = id; method_name = method_name; params = params }
-       with Json_conv_failure e -> raise (Invalid_request (Request_json_conv_error e))
+       with Json_conv_error e -> raise (Invalid_request (Request_json_conv_error e))
 
 let request_of_string s = request_of_json (Json.of_string s)
 
@@ -105,7 +105,7 @@ let response_of_json j =
                        response_make_error id c m d
                | _ ->
                        raise (Invalid_response Response_both_result_and_error)
-       with Json_conv_failure e -> raise (Invalid_response (Response_json_conv_error e))
+       with Json_conv_error e -> raise (Invalid_response (Response_json_conv_error e))
 
 let response_of_string s = response_of_json (Json.of_string s)
 
index e343bce68857aa6f3a46fe381e6ccbc3bceb1d73..bb54c14cc56582665c633b8c5badd34d734ff808 100644 (file)
@@ -20,11 +20,11 @@ val code_error_invalid_params : int
 val code_error_internal_error : int
 
 type req_error =
-       | Request_json_conv_error of Json_conv.conv_error
+       | Request_json_conv_error of Json_conv.error
        | Request_invalid_params
 
 type resp_error =
-       | Response_json_conv_error of Json_conv.conv_error
+       | Response_json_conv_error of Json_conv.error
        | Response_no_result_or_error
        | Response_both_result_and_error