From b491aebb01001d0bc05b7eb906b22ed0dac5a687 Mon Sep 17 00:00:00 2001 From: Matt Hicks Date: Fri, 8 Feb 2019 10:05:30 -0600 Subject: [PATCH] Fixed bug in communication error logging when the error message is null Better error handling for generation of communication message JSON --- build.sbt | 2 +- .../src/main/scala/io/youi/communication/Communication.scala | 3 ++- .../scala/io/youi/communication/CommunicationMessage.scala | 4 +++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/build.sbt b/build.sbt index 0eed07d24..b47b9d66c 100644 --- a/build.sbt +++ b/build.sbt @@ -3,7 +3,7 @@ import sbtcrossproject.CrossPlugin.autoImport.crossProject name := "youi" organization in ThisBuild := "io.youi" -version in ThisBuild := "0.10.4" +version in ThisBuild := "0.10.5-SNAPSHOT" scalaVersion in ThisBuild := "2.12.8" crossScalaVersions in ThisBuild := List("2.12.8", "2.11.12") resolvers in ThisBuild += Resolver.sonatypeRepo("releases") diff --git a/communication/shared/src/main/scala/io/youi/communication/Communication.scala b/communication/shared/src/main/scala/io/youi/communication/Communication.scala index 94b99d8fe..82d9cab3c 100644 --- a/communication/shared/src/main/scala/io/youi/communication/Communication.scala +++ b/communication/shared/src/main/scala/io/youi/communication/Communication.scala @@ -97,7 +97,8 @@ class CommunicationInternal private[communication](communication: Communication) endPoint(message).map { content => send := CommunicationMessage(CommunicationMessage.MethodResponse, message.endPoint, message.invocationId, List(content), None) }.failed.foreach { t => - send := CommunicationMessage(CommunicationMessage.MethodResponse, message.endPoint, message.invocationId, Nil, Some(t.getMessage)) + val error = Option(t.getMessage).orElse(Some("An error occurred")) + send := CommunicationMessage(CommunicationMessage.MethodResponse, message.endPoint, message.invocationId, Nil, error) communication.error(t) } } diff --git a/communication/shared/src/main/scala/io/youi/communication/CommunicationMessage.scala b/communication/shared/src/main/scala/io/youi/communication/CommunicationMessage.scala index 2d169cc95..d5bd4cb39 100644 --- a/communication/shared/src/main/scala/io/youi/communication/CommunicationMessage.scala +++ b/communication/shared/src/main/scala/io/youi/communication/CommunicationMessage.scala @@ -7,9 +7,11 @@ case class CommunicationMessage(messageType: Int, invocationId: Int, content: List[String], error: Option[String]) { - lazy val parsableString: String = { + lazy val parsableString: String = try { val json = JsonUtil.toJsonString(this) s"|CM|$json" + } catch { + case t: Throwable => throw new RuntimeException(s"Unable to convert $this to JSON", t) } }