Gibt es eine Möglichkeit, javadsl Route in Flow zu konvertieren? In Scala haben wir implizit HandlerFlow verfügbar, aber in Java haben wir keine Analoga.Route in Fluss umwandeln in Akka-Http für Java
Versucht, handlerFlow aufzurufen, verwendet jedoch scaladsl-Typen und ist mit der javadsl-Version von Route nicht kompatibel.
Ich möchte Low-Level-Version der API für die Fähigkeit, an HTTP und HTTPS zu binden, und auf Verbindungen zugreifen können.
==========================
Update: benutzte ich Idee von Antwort des svezfaz und jetzt bekomme ich Code:
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;
}
Es sieht korrekt aus, aber es kompiliert nicht. Wahrscheinlich muss ich Scala Library in den Klassenpfad aufnehmen. Und dann arbeite ein wenig mit anderen Scala-zu-Java-Typ-Konvertierungen.
Ich denke, es ist einfach einfacher, es ohne Routes in Java neu zu schreiben.