in management/src/main/scala/org/apache/pekko/management/internal/HealthChecksImpl.scala [132:156]
private def load(
checks: immutable.Seq[NamedHealthCheck]): immutable.Seq[HealthCheck] = {
checks
.map(namedHealthCheck =>
tryLoadScalaHealthCheck(namedHealthCheck.fullyQualifiedClassName).recoverWith {
case _: ClassCastException =>
tryLoadJavaHealthCheck(namedHealthCheck.fullyQualifiedClassName)
})
.map {
case Success(c) => c
case Failure(_: NoSuchMethodException) =>
throw new InvalidHealthCheckException(
s"Health checks: [${checks.mkString(",")}] must have a no args constructor or a single argument constructor that takes an ActorSystem")
case Failure(_: ClassCastException) =>
throw new InvalidHealthCheckException(
s"Health checks: [${checks.mkString(",")}] must have type: () => Future[Boolean]")
case Failure(c: ClassNotFoundException) =>
throw new InvalidHealthCheckException(
s"Health check: [${c.getMessage}] not found")
case Failure(t) =>
throw new InvalidHealthCheckException(
"Uncaught exception from Health check construction",
t)
}
}