Есть ли способ конвертировать javadsl Route в Flow? В Scala у нас неявно доступен handlerFlow, но в Java у нас нет аналогов.
Пытался вызвать handlerFlow, но он использует типы scaladsl и несовместим с версией Route для javadsl.
Я хочу использовать низкоуровневую версию API для возможности привязки к http и https и для доступа к соединениям.
==========================
Обновление: я использовал идею из ответа svezfaz, и теперь я получаю код:
Flow<HttpRequest, HttpResponse, NotUsed> createFlow(ActorSystem system, Materializer mat) {
scala.Function1<akka.http.scaladsl.server.RequestContext, scala.concurrent.Future<akka.http.scaladsl.server.RouteResult>> r = RouteImplementation.apply(createRoute());
Flow f = RouteResult$.MODULE$.route2HandlerFlow(
r,
RoutingSettings$.MODULE$.apply(system),
ParserSettings$.MODULE$.apply(system),
mat,
RoutingLog$.MODULE$.fromActorSystem(system),
null,
RejectionHandler$.MODULE$._mthdefault(),
null
).asJava();
return f;
}
Выглядит правильно, но не компилируется. Возможно, мне нужно включить библиотеку Scala в путь к классам. А затем немного поработайте с другими преобразованиями типов Scala в Java.
Я думаю, что проще переписать его без маршрутов на Java.