mirror of https://github.com/sbt/sbt.git
Make JSON parsing errors more consistent
This commit is contained in:
parent
cad84afc6d
commit
033ff1d8a5
|
|
@ -145,7 +145,10 @@ final class NetworkChannel(
|
||||||
case Some(_) =>
|
case Some(_) =>
|
||||||
state = InHeader
|
state = InHeader
|
||||||
process()
|
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 _ => ()
|
case _ => ()
|
||||||
|
|
@ -226,15 +229,15 @@ final class NetworkChannel(
|
||||||
onNotification(ntf)
|
onNotification(ntf)
|
||||||
} catch {
|
} catch {
|
||||||
case LangServerError(code, message) =>
|
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) =>
|
case Right(msg) =>
|
||||||
log.debug(s"Unhandled message: $msg")
|
log.debug(s"unhandled message: $msg")
|
||||||
case Left(errorDesc) =>
|
case Left(errorDesc) =>
|
||||||
logMessage(
|
val msg =
|
||||||
"error",
|
s"got invalid chunk from client (${new String(chunk.toArray, "UTF-8")}): $errorDesc"
|
||||||
s"Got invalid chunk from client (${new String(chunk.toArray, "UTF-8")}): $errorDesc"
|
log.error(msg)
|
||||||
)
|
logMessage("error", msg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -175,22 +175,23 @@ object Serialization {
|
||||||
if ((fields find { _.field == "id" }).isDefined)
|
if ((fields find { _.field == "id" }).isDefined)
|
||||||
Converter.fromJson[JsonRpcRequestMessage](json) match {
|
Converter.fromJson[JsonRpcRequestMessage](json) match {
|
||||||
case Success(request) => Right(request)
|
case Success(request) => Right(request)
|
||||||
case Failure(e) => Left(s"Conversion error: ${e.getMessage}")
|
case Failure(e) => Left(s"conversion error: ${e.getMessage}")
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Converter.fromJson[JsonRpcNotificationMessage](json) match {
|
Converter.fromJson[JsonRpcNotificationMessage](json) match {
|
||||||
case Success(notification) => Right(notification)
|
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 {
|
Converter.fromJson[JsonRpcResponseMessage](json) match {
|
||||||
case Success(res) => Right(res)
|
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) =>
|
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) =>
|
case Failure(e) =>
|
||||||
Left(s"Parse error: ${e.getMessage}")
|
Left(s"parse error: ${e.getMessage}")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue