В настоящее время я работаю над приложением Scala, которое использует Spring-Boot и Swagger для отправки и получения REST-вызовов.
Swagger и Spring-Boot являются чистыми Java-проектами и имеют ограниченную совместимость со Scala, но я, кажется, нашел обходной путь в отношении проблемы.
Поскольку Spring-Boot и Swagger обрабатывают запросы как объекты Java (для работы которых нужны установщики и получатели), мне придется обработать запрос как объект Java и преобразовать запрос в более поздний.Это очень упрощенная версия того, что я сделал:
case class ParamsAsJava(includeMovies: java.lang.Boolean = java.lang.Boolean.FALSE, includeTvShows: java.lang.Boolean = java.lang.Boolean.FALSE) {
def toScala(): Params = {
Params(
includeMovies = convertToScala(includeMovies),
includeTvShows = convertToScala(includeTvShows)
)
}
private def convertToScala(test: java.lang.Boolean): Boolean
= if (test == null) false else test.booleanValue
}
case class Params(includeMovies: Boolean = false, includeTvShows: Boolean = false)
object Application extends App {
val test1 = ParamsAsJava(java.lang.Boolean.FALSE, java.lang.Boolean.TRUE).toScala
val test2 = ParamsAsJava(java.lang.Boolean.TRUE, java.lang.Boolean.TRUE).toScala
val test3 = ParamsAsJava().toScala
val test4 = ParamsAsJava(null, null).toScala
val test5 = ParamsAsJava(null, java.lang.Boolean.TRUE).toScala
println(s"Test 1 = $test1")
println(s"Test 2 = $test2")
println(s"Test 3 = $test3")
println(s"Test 4 = $test4")
println(s"Test 5 = $test5")
}
ВЫХОД
Тест 1= Параметры (ложь, истина)
тест 2 = параметры (истина, истина)
тест 3 = параметры (ложь, ложь)
тест 4 = параметры (ложь,false)
Test 5 = Params (false, true)
ОК ... мой вопрос:
ЕстьЕсть ли более простой и понятный способ достижения этого?Должен ли я каждый раз вызывать ParamsAsJava.toScala или есть какой-нибудь потрясающий способ Scala сделать это?