@@ -55,35 +55,37 @@ void SpecificationParser::GetProcedure (Json::Value &si
5555{
5656 if (signature.isObject () && GetProcedureName (signature) != " " )
5757 {
58- if (signature[KEY_SPEC_PROCEDURE_PARAMETERS].isObject () || signature[KEY_SPEC_PROCEDURE_PARAMETERS].isArray ())
58+ result.SetProcedureName (GetProcedureName (signature));
59+ if (signature.isMember (KEY_SPEC_RETURN_TYPE))
5960 {
60- result.SetProcedureName (GetProcedureName (signature));
61- if (signature.isMember (KEY_SPEC_RETURN_TYPE))
61+ result.SetProcedureType (RPC_METHOD);
62+ result.SetReturnType (toJsonType (signature[KEY_SPEC_RETURN_TYPE]));
63+ }
64+ else
65+ {
66+ result.SetProcedureType (RPC_NOTIFICATION);
67+ }
68+ if (signature.isMember (KEY_SPEC_PROCEDURE_PARAMETERS))
69+ {
70+ if (signature[KEY_SPEC_PROCEDURE_PARAMETERS].isObject () || signature[KEY_SPEC_PROCEDURE_PARAMETERS].isArray ())
6271 {
63- result.SetProcedureType (RPC_METHOD);
64- result.SetReturnType (toJsonType (signature[KEY_SPEC_RETURN_TYPE]));
72+ if (signature[KEY_SPEC_PROCEDURE_PARAMETERS].isArray ())
73+ {
74+ result.SetParameterDeclarationType (PARAMS_BY_POSITION);
75+ GetPositionalParameters (signature, result);
76+ }
77+ else if (signature[KEY_SPEC_PROCEDURE_PARAMETERS].isObject ())
78+ {
79+ result.SetParameterDeclarationType (PARAMS_BY_NAME);
80+ GetNamedParameters (signature, result);
81+ }
6582 }
6683 else
6784 {
68- result.SetProcedureType (RPC_NOTIFICATION);
85+ throw JsonRpcException (Errors::ERROR_SERVER_PROCEDURE_SPECIFICATION_SYNTAX,
86+ " Invalid signature types in fileds: "
87+ + signature.toStyledString ());
6988 }
70-
71- if (signature.isMember (KEY_SPEC_PROCEDURE_PARAMETERS) && signature[KEY_SPEC_PROCEDURE_PARAMETERS].isArray ())
72- {
73- result.SetParameterDeclarationType (PARAMS_BY_POSITION);
74- GetPositionalParameters (signature, result);
75- }
76- else if (signature.isMember (KEY_SPEC_PROCEDURE_PARAMETERS) && signature[KEY_SPEC_PROCEDURE_PARAMETERS].isObject ())
77- {
78- result.SetParameterDeclarationType (PARAMS_BY_NAME);
79- GetNamedParameters (signature, result);
80- }
81- }
82- else
83- {
84- throw JsonRpcException (Errors::ERROR_SERVER_PROCEDURE_SPECIFICATION_SYNTAX,
85- " Invalid signature types in fileds: "
86- + signature.toStyledString ());
8789 }
8890 }
8991 else
0 commit comments