@@ -20,36 +20,38 @@ import cats.data.NonEmptyChain
2020import cats .syntax .all ._
2121import software .amazon .smithy .model .validation .ValidationEvent
2222
23- sealed trait ToSmithyError extends Throwable
23+ sealed trait ToSmithyError extends Throwable {
24+ // Force all subtypes to provide a message
25+ final override def getMessage (): String = message
26+ def message : String
27+ }
2428
2529object ToSmithyError {
2630
2731 implicit val order : cats.Order [ToSmithyError ] = cats.Order .by(_.getMessage())
2832
29- final case class Restriction (message : String ) extends ToSmithyError {
30- override def getMessage (): String = message
31- }
33+ final case class Restriction (message : String ) extends ToSmithyError
3234
33- final case class ProcessingError (message : String ) extends ToSmithyError {
34- override def getMessage (): String = message
35- }
35+ final case class ProcessingError (message : String ) extends ToSmithyError
3636
3737 final case class SmithyValidationFailed (
3838 smithyValidationEvents : List [ValidationEvent ]
3939 ) extends ToSmithyError {
40- override def getMessage () : String = {
40+ override def message : String = {
4141 s " Failed to validate the Smithy model: \n ${smithyValidationEvents.mkString(" \n " )}"
4242 }
4343 }
4444
45- final case class BadRef (ref : String ) extends ToSmithyError
45+ final case class BadRef (ref : String ) extends ToSmithyError {
46+ override def message : String = s " Unable to parse ref string: $ref"
47+ }
4648
4749 final case class OpenApiParseError (
4850 namespace : NonEmptyChain [String ],
4951 errorMessages : List [String ]
5052 ) extends ToSmithyError
5153 with NoStackTrace {
52- override def getMessage () : String =
54+ override def message : String =
5355 s " Unable to parse openapi file located at ${namespace.mkString_(" /" )} with errors: ${errorMessages
5456 .mkString(" , " )}"
5557 }
0 commit comments