This is an automated email from the ASF dual-hosted git repository. markusthoemmes pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/openwhisk.git
The following commit(s) were added to refs/heads/master by this push: new 1dc31b2 Remove explicit right biasing of Eithers. (#4848) 1dc31b2 is described below commit 1dc31b271983d3bc703b98052d25967bd9bfb8db Author: Markus Thömmes <markusthoem...@me.com> AuthorDate: Sun Mar 29 11:42:45 2020 +0200 Remove explicit right biasing of Eithers. (#4848) * Remove usages of .right.get in production code. - There's no reason parse the ContentType we fully control anyway, so let's just compose it and not think about non-existent errors at all. - More explicit error handling where we actually need to parse. * Remove explicit right biasing. * Fix compilation error. * Small improvement. * Fix compile errors. --- .../src/main/scala/org/apache/openwhisk/common/Prometheus.scala | 5 +++-- .../org/apache/openwhisk/core/containerpool/Container.scala | 2 +- .../org/apache/openwhisk/core/entity/ActivationResult.scala | 4 +--- .../scala/org/apache/openwhisk/core/entity/Attachments.scala | 9 ++++----- .../openwhisk/core/monitoring/metrics/PrometheusEventsApi.scala | 5 +++-- .../openwhisk/core/database/test/ExtendedCouchDbRestClient.scala | 5 ++--- 6 files changed, 14 insertions(+), 16 deletions(-) diff --git a/common/scala/src/main/scala/org/apache/openwhisk/common/Prometheus.scala b/common/scala/src/main/scala/org/apache/openwhisk/common/Prometheus.scala index 614f836..87dc46f 100644 --- a/common/scala/src/main/scala/org/apache/openwhisk/common/Prometheus.scala +++ b/common/scala/src/main/scala/org/apache/openwhisk/common/Prometheus.scala @@ -18,7 +18,7 @@ package org.apache.openwhisk.common import java.nio.charset.StandardCharsets.UTF_8 -import akka.http.scaladsl.model.{ContentType, HttpEntity} +import akka.http.scaladsl.model.{ContentType, HttpCharsets, HttpEntity, MediaType} import akka.http.scaladsl.server.Directives._ import akka.http.scaladsl.server.Route import kamon.Kamon @@ -26,7 +26,8 @@ import kamon.prometheus.PrometheusReporter class KamonPrometheus extends AutoCloseable { private val reporter = new PrometheusReporter - private val v4 = ContentType.parse("text/plain; version=0.0.4; charset=utf-8").right.get + private val v4: ContentType = ContentType.apply( + MediaType.textWithFixedCharset("plain", HttpCharsets.`UTF-8`).withParams(Map("version" -> "0.0.4"))) Kamon.registerModule("prometheus", reporter) def route: Route = path("metrics") { diff --git a/common/scala/src/main/scala/org/apache/openwhisk/core/containerpool/Container.scala b/common/scala/src/main/scala/org/apache/openwhisk/core/containerpool/Container.scala index 20627fb..5080dae 100644 --- a/common/scala/src/main/scala/org/apache/openwhisk/core/containerpool/Container.scala +++ b/common/scala/src/main/scala/org/apache/openwhisk/core/containerpool/Container.scala @@ -261,7 +261,7 @@ case class Interval(start: Instant, end: Instant) { } case class RunResult(interval: Interval, response: Either[ContainerConnectionError, ContainerResponse]) { - def ok = response.right.exists(_.ok) + def ok = response.exists(_.ok) def toBriefString = response.fold(_.toString, _.toString) } diff --git a/common/scala/src/main/scala/org/apache/openwhisk/core/entity/ActivationResult.scala b/common/scala/src/main/scala/org/apache/openwhisk/core/entity/ActivationResult.scala index d3727c5..6a737d6 100644 --- a/common/scala/src/main/scala/org/apache/openwhisk/core/entity/ActivationResult.scala +++ b/common/scala/src/main/scala/org/apache/openwhisk/core/entity/ActivationResult.scala @@ -160,9 +160,7 @@ protected[core] object ActivationResponse extends DefaultJsonProtocol { */ protected[core] def processInitResponseContent(response: Either[ContainerConnectionError, ContainerResponse], logger: Logging): ActivationResponse = { - require( - response.isLeft || !response.right.exists(_.ok), - s"should not interpret init response when status code is OK") + require(response.isLeft || !response.exists(_.ok), s"should not interpret init response when status code is OK") response match { case Right(ContainerResponse(code, str, truncated)) => val sizeOpt = Option(str).map(_.length) diff --git a/common/scala/src/main/scala/org/apache/openwhisk/core/entity/Attachments.scala b/common/scala/src/main/scala/org/apache/openwhisk/core/entity/Attachments.scala index e8a18b5..c6b30c8 100644 --- a/common/scala/src/main/scala/org/apache/openwhisk/core/entity/Attachments.scala +++ b/common/scala/src/main/scala/org/apache/openwhisk/core/entity/Attachments.scala @@ -66,13 +66,12 @@ object Attachments { implicit val serdes = { implicit val contentTypeSerdes = new RootJsonFormat[ContentType] { override def write(c: ContentType) = JsString(c.value) - override def read(js: JsValue) = - Try { - val JsString(c) = js - ContentType.parse(c).right.get - } getOrElse { + + override def read(js: JsValue): ContentType = { + Try(js.convertTo[String]).toOption.flatMap(ContentType.parse(_).toOption).getOrElse { throw new DeserializationException("Could not deserialize content-type") } + } } jsonFormat4(Attached.apply) diff --git a/core/monitoring/user-events/src/main/scala/org/apache/openwhisk/core/monitoring/metrics/PrometheusEventsApi.scala b/core/monitoring/user-events/src/main/scala/org/apache/openwhisk/core/monitoring/metrics/PrometheusEventsApi.scala index c485dcc..2c2a5f4 100644 --- a/core/monitoring/user-events/src/main/scala/org/apache/openwhisk/core/monitoring/metrics/PrometheusEventsApi.scala +++ b/core/monitoring/user-events/src/main/scala/org/apache/openwhisk/core/monitoring/metrics/PrometheusEventsApi.scala @@ -18,7 +18,7 @@ package org.apache.openwhisk.core.monitoring.metrics import akka.http.scaladsl.model.StatusCodes.ServiceUnavailable -import akka.http.scaladsl.model.{ContentType, MessageEntity} +import akka.http.scaladsl.model.{ContentType, HttpCharsets, MediaType, MessageEntity} import akka.http.scaladsl.server.Directives._ import akka.http.scaladsl.server.Route import org.apache.openwhisk.connector.kafka.KafkaMetricRoute @@ -30,7 +30,8 @@ trait PrometheusExporter { } object PrometheusExporter { - val textV4: ContentType = ContentType.parse("text/plain; version=0.0.4; charset=utf-8").right.get + val textV4: ContentType = ContentType.apply( + MediaType.textWithFixedCharset("plain", HttpCharsets.`UTF-8`).withParams(Map("version" -> "0.0.4"))) } class PrometheusEventsApi(consumer: EventConsumer, prometheus: PrometheusExporter)(implicit ec: ExecutionContext) { diff --git a/tests/src/test/scala/org/apache/openwhisk/core/database/test/ExtendedCouchDbRestClient.scala b/tests/src/test/scala/org/apache/openwhisk/core/database/test/ExtendedCouchDbRestClient.scala index bdbd78f..df843b9 100644 --- a/tests/src/test/scala/org/apache/openwhisk/core/database/test/ExtendedCouchDbRestClient.scala +++ b/tests/src/test/scala/org/apache/openwhisk/core/database/test/ExtendedCouchDbRestClient.scala @@ -46,9 +46,8 @@ class ExtendedCouchDbRestClient(protocol: String, // http://docs.couchdb.org/en/1.6.1/api/server/common.html#all-dbs def dbs(): Future[Either[StatusCode, List[String]]] = { - requestJson[JsArray](mkRequest(HttpMethods.GET, uri("_all_dbs"), headers = baseHeaders)).map { either => - either.right.map(_.convertTo[List[String]]) - } + requestJson[JsArray](mkRequest(HttpMethods.GET, uri("_all_dbs"), headers = baseHeaders)) + .map(_.map(_.convertTo[List[String]])) } // http://docs.couchdb.org/en/1.6.1/api/database/common.html#put--db