Make JSON parsing errors more consistent

This commit is contained in:
Eugene Yokota 2020-06-11 20:31:13 -04:00
parent cad84afc6d
commit 033ff1d8a5
2 changed files with 17 additions and 13 deletions

View File

@ -145,7 +145,10 @@ final class NetworkChannel(
case Some(_) =>
state = InHeader
process()
case _ => log.error("Got invalid chunk from client: " + str)
case _ =>
val msg = s"got invalid chunk from client: $str"
log.error(msg)
logMessage("error", msg)
}
}
case _ => ()
@ -226,15 +229,15 @@ final class NetworkChannel(
onNotification(ntf)
} catch {
case LangServerError(code, message) =>
logMessage("error", s"Error $code while handling notification: $message")
logMessage("error", s"error $code while handling notification: $message")
}
case Right(msg) =>
log.debug(s"Unhandled message: $msg")
log.debug(s"unhandled message: $msg")
case Left(errorDesc) =>
logMessage(
"error",
s"Got invalid chunk from client (${new String(chunk.toArray, "UTF-8")}): $errorDesc"
)
val msg =
s"got invalid chunk from client (${new String(chunk.toArray, "UTF-8")}): $errorDesc"
log.error(msg)
logMessage("error", msg)
}
}

View File

@ -175,22 +175,23 @@ object Serialization {
if ((fields find { _.field == "id" }).isDefined)
Converter.fromJson[JsonRpcRequestMessage](json) match {
case Success(request) => Right(request)
case Failure(e) => Left(s"Conversion error: ${e.getMessage}")
case Failure(e) => Left(s"conversion error: ${e.getMessage}")
}
else
Converter.fromJson[JsonRpcNotificationMessage](json) match {
case Success(notification) => Right(notification)
case Failure(e) => Left(s"Conversion error: ${e.getMessage}")
case Failure(e) => Left(s"conversion error: ${e.getMessage}")
}
} else
} else if ((fields find { _.field == "id" }).isDefined)
Converter.fromJson[JsonRpcResponseMessage](json) match {
case Success(res) => Right(res)
case Failure(e) => Left(s"Conversion error: ${e.getMessage}")
case Failure(e) => Left(s"conversion error: ${e.getMessage}")
}
else Left(s"expected JSON-RPC object but found ${new String(bytes.toArray, "UTF-8")}")
case Success(json) =>
Left(s"Expected JSON object but found $json")
Left(s"expected JSON object but found ${new String(bytes.toArray, "UTF-8")}")
case Failure(e) =>
Left(s"Parse error: ${e.getMessage}")
Left(s"parse error: ${e.getMessage}")
}
}