From 64ad5d6bccbc658c1affd806c651e8bcfd96ea18 Mon Sep 17 00:00:00 2001 From: Pedro Batista Date: Tue, 2 Apr 2024 18:34:33 +0100 Subject: [PATCH 1/3] working with play 2.9 --- module/pom.xml | 2 +- .../play/AtmosphereWebSocketActor.java | 11 ++++- .../play/AtmosphereHttpRequestHandler.scala | 45 ++++++++++++------- pom.xml | 15 ++++++- 4 files changed, 54 insertions(+), 19 deletions(-) diff --git a/module/pom.xml b/module/pom.xml index d79453f..582e549 100644 --- a/module/pom.xml +++ b/module/pom.xml @@ -19,7 +19,7 @@ com.typesafe.play - play_2.12 + play_3 org.slf4j diff --git a/module/src/main/java/org/atmosphere/play/AtmosphereWebSocketActor.java b/module/src/main/java/org/atmosphere/play/AtmosphereWebSocketActor.java index 04a55f7..e06ae30 100644 --- a/module/src/main/java/org/atmosphere/play/AtmosphereWebSocketActor.java +++ b/module/src/main/java/org/atmosphere/play/AtmosphereWebSocketActor.java @@ -55,7 +55,16 @@ public void preStart() { try { playWebSocket = new PlayWebSocket(actorRef, atmosphereConfig); webSocketProcessor = WebSocketProcessorFactory.getDefault().getWebSocketProcessor(atmosphereConfig.framework()); - AtmosphereRequest atmosphereRequest = AtmosphereUtils.request(new Http.RequestImpl(requestHeader), additionalAttributes); + + Http.Request javaRequest = new Http.RequestBuilder() + .method(requestHeader.method()) + .uri(requestHeader.uri()) + .headers(requestHeader.headers().asJava()) + //.bodyRaw(requestHeader.body().asRaw().asBytes().toArray()) + .build(); + + + AtmosphereRequest atmosphereRequest = AtmosphereUtils.request(javaRequest, additionalAttributes); webSocketProcessor.open(playWebSocket, atmosphereRequest, AtmosphereResponseImpl.newInstance(atmosphereConfig, atmosphereRequest, playWebSocket)); } catch (Throwable throwable) { LOG.error("Failed to start the actor ", throwable); diff --git a/module/src/main/scala/org/atmosphere/play/AtmosphereHttpRequestHandler.scala b/module/src/main/scala/org/atmosphere/play/AtmosphereHttpRequestHandler.scala index b0c9ca3..af3479b 100644 --- a/module/src/main/scala/org/atmosphere/play/AtmosphereHttpRequestHandler.scala +++ b/module/src/main/scala/org/atmosphere/play/AtmosphereHttpRequestHandler.scala @@ -15,27 +15,35 @@ */ package org.atmosphere.play -import javax.inject.Inject -import play.api.http._ +import play.api.OptionalDevContext +import play.api.http.* import play.api.inject.Injector -import play.api.mvc.{BodyParser, Handler, RequestHeader} -import play.api.routing.Router -import play.core.j._ +import play.api.mvc.* +import play.core.j.* import play.mvc.Http import play.mvc.Http.RequestBody +import javax.inject.{Inject, Provider} import scala.concurrent.ExecutionContext.Implicits.global +class AtmosphereHttpRequestHandler@Inject()( webCommands: _root_.play.core.WebCommands, + optDevContext: _root_.play.api.OptionalDevContext, + router: _root_.javax.inject.Provider[_root_.play.api.routing.Router], + errorHandler: _root_.play.api.http.HttpErrorHandler, + configuration: _root_.play.api.http.HttpConfiguration, + filters: _root_.play.api.http.HttpFilters, + handlerComponents: _root_.play.core.j.JavaHandlerComponents, + injector: _root_.play.api.inject.Injector + ) extends JavaCompatibleHttpRequestHandler( webCommands, + optDevContext, + router, + errorHandler, + configuration, + filters, + handlerComponents) { -class AtmosphereHttpRequestHandler @Inject()(components: JavaHandlerComponents, - router: Router, - errorHandler: HttpErrorHandler, - configuration: HttpConfiguration, - filters: HttpFilters, - injector: Injector) - - extends JavaCompatibleHttpRequestHandler(router, errorHandler, configuration, filters, components) { + override def routeRequest(request: RequestHeader) = { dispatch(request) match { @@ -64,13 +72,15 @@ class AtmosphereHttpRequestHandler @Inject()(components: JavaHandlerComponents, upgradeHeader: Option[String], connectionHeaders: Seq[String]): Option[Handler] = { if (AtmosphereCoordinator.instance.matchPath(request.path)) { - val controller: AtmosphereController = Option(injector.instanceOf(controllerClass)).getOrElse(controllerClass.newInstance) + //val controller: AtmosphereController = Option(components.instanceOf(controllerClass)).getOrElse(controllerClass.newInstance) + val controller: AtmosphereController = Option(injector.instanceOf(controllerClass)).getOrElse(controllerClass.getDeclaredConstructor().newInstance()) // Netty fail to decode headers separated by a ',' val javaAction = if (isWsSupported(upgradeHeader, connectionHeaders)) controller.webSocket(request.asJava) else - new JavaAction(components) { + // new JavaAction(components) { + new JavaAction(handlerComponents) { val annotations = new JavaActionAnnotations(controllerClass, controllerClass.getMethod("http", classOf[Http.RequestHeader]), new ActionCompositionConfiguration()) val parser = javaBodyParserToScala(injector.instanceOf(annotations.parser)) def invocation(req : play.mvc.Http.Request) = controller.http(req) @@ -94,4 +104,7 @@ class AtmosphereHttpRequestHandler @Inject()(components: JavaHandlerComponents, } } -} + + } + + diff --git a/pom.xml b/pom.xml index 4bff6d2..4d64f22 100644 --- a/pom.xml +++ b/pom.xml @@ -45,12 +45,22 @@ + + com.typesafe.play + play_3 + 2.9.2 + provided + + + + org.atmosphere atmosphere-play @@ -252,7 +262,10 @@ http://oss.sonatype.org/content/repositories/snapshots false 1.8 - 1.8 + 11 2.7.6 + 11 + 11 + From 6c772ca993388fa94193acb24d5ccc50f2b0fb77 Mon Sep 17 00:00:00 2001 From: Pedro Batista Date: Tue, 2 Apr 2024 21:14:05 +0100 Subject: [PATCH 2/3] working with play 3.0 --- module/pom.xml | 2 +- .../org/atmosphere/play/AtmosphereController.java | 6 +++--- .../atmosphere/play/AtmosphereWebSocketActor.java | 8 ++++---- .../org/atmosphere/play/PlayAsyncIOWriter.java | 12 ++++++------ .../java/org/atmosphere/play/PlayWebSocket.java | 4 ++-- pom.xml | 14 ++------------ 6 files changed, 18 insertions(+), 28 deletions(-) diff --git a/module/pom.xml b/module/pom.xml index 582e549..892b0b3 100644 --- a/module/pom.xml +++ b/module/pom.xml @@ -18,7 +18,7 @@ atmosphere-runtime - com.typesafe.play + org.playframework play_3 diff --git a/module/src/main/java/org/atmosphere/play/AtmosphereController.java b/module/src/main/java/org/atmosphere/play/AtmosphereController.java index ace2b68..4acba7f 100644 --- a/module/src/main/java/org/atmosphere/play/AtmosphereController.java +++ b/module/src/main/java/org/atmosphere/play/AtmosphereController.java @@ -15,9 +15,9 @@ */ package org.atmosphere.play; -import akka.actor.ActorSystem; -import akka.stream.Materializer; -import akka.stream.OverflowStrategy; +import org.apache.pekko.actor.ActorSystem; +import org.apache.pekko.stream.Materializer; +import org.apache.pekko.stream.OverflowStrategy; import org.apache.commons.lang3.StringUtils; import org.atmosphere.config.service.Singleton; import org.atmosphere.cpr.AtmosphereConfig; diff --git a/module/src/main/java/org/atmosphere/play/AtmosphereWebSocketActor.java b/module/src/main/java/org/atmosphere/play/AtmosphereWebSocketActor.java index e06ae30..27bc4f9 100644 --- a/module/src/main/java/org/atmosphere/play/AtmosphereWebSocketActor.java +++ b/module/src/main/java/org/atmosphere/play/AtmosphereWebSocketActor.java @@ -15,10 +15,10 @@ */ package org.atmosphere.play; -import akka.actor.AbstractActor; -import akka.actor.ActorRef; -import akka.actor.Props; -import akka.util.ByteString; +import org.apache.pekko.actor.AbstractActor; +import org.apache.pekko.actor.ActorRef; +import org.apache.pekko.actor.Props; +import org.apache.pekko.util.ByteString; import org.atmosphere.cpr.AtmosphereConfig; import org.atmosphere.cpr.AtmosphereRequest; import org.atmosphere.cpr.AtmosphereResponseImpl; diff --git a/module/src/main/java/org/atmosphere/play/PlayAsyncIOWriter.java b/module/src/main/java/org/atmosphere/play/PlayAsyncIOWriter.java index 72c3617..e7419ed 100644 --- a/module/src/main/java/org/atmosphere/play/PlayAsyncIOWriter.java +++ b/module/src/main/java/org/atmosphere/play/PlayAsyncIOWriter.java @@ -15,12 +15,12 @@ */ package org.atmosphere.play; -import akka.NotUsed; -import akka.actor.ActorRef; -import akka.actor.Status; -import akka.stream.OverflowStrategy; -import akka.stream.javadsl.Source; -import akka.util.ByteString; +import org.apache.pekko.NotUsed; +import org.apache.pekko.actor.ActorRef; +import org.apache.pekko.actor.Status; +import org.apache.pekko.stream.OverflowStrategy; +import org.apache.pekko.stream.javadsl.Source; +import org.apache.pekko.util.ByteString; import org.atmosphere.cpr.AsyncIOWriter; import org.atmosphere.cpr.AsynchronousProcessor; import org.atmosphere.cpr.AtmosphereInterceptorWriter; diff --git a/module/src/main/java/org/atmosphere/play/PlayWebSocket.java b/module/src/main/java/org/atmosphere/play/PlayWebSocket.java index 675801f..f539ea9 100644 --- a/module/src/main/java/org/atmosphere/play/PlayWebSocket.java +++ b/module/src/main/java/org/atmosphere/play/PlayWebSocket.java @@ -15,8 +15,8 @@ */ package org.atmosphere.play; -import akka.actor.ActorRef; -import akka.actor.Status; +import org.apache.pekko.actor.ActorRef; +import org.apache.pekko.actor.Status; import org.atmosphere.cpr.AtmosphereConfig; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/pom.xml b/pom.xml index 4d64f22..7558b0d 100644 --- a/pom.xml +++ b/pom.xml @@ -46,21 +46,11 @@ - com.typesafe.play + org.playframework play_3 - 2.9.2 + 3.0.2 provided - - - org.atmosphere atmosphere-play From 731e56ca0ac959dd60038c4497dda10d7164d678 Mon Sep 17 00:00:00 2001 From: Pedro Batista Date: Tue, 2 Apr 2024 21:43:54 +0100 Subject: [PATCH 3/3] working with play 3.0 with atmosphere 3.0.5 --- module/pom.xml | 7 +++++-- pom.xml | 20 +++++++++++++++----- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/module/pom.xml b/module/pom.xml index 892b0b3..0f98736 100644 --- a/module/pom.xml +++ b/module/pom.xml @@ -26,10 +26,13 @@ slf4j-api - org.apache.geronimo.specs - geronimo-servlet_3.0_spec + jakarta.servlet + jakarta.servlet-api + 6.1.0-M2 + + com.ning diff --git a/pom.xml b/pom.xml index 7558b0d..fc4494e 100644 --- a/pom.xml +++ b/pom.xml @@ -51,6 +51,16 @@ 3.0.2 provided + + org.apache.pekko + pekko-actor_3 + 1.0.3-M1 + + + org.apache.pekko + pekko-actor-typed_3 + 1.0.3-M1 + org.atmosphere atmosphere-play @@ -71,11 +81,11 @@ logback-core 1.3.12 + - org.apache.geronimo.specs - geronimo-servlet_3.0_spec - 1.0 - true + jakarta.servlet + jakarta.servlet-api + 6.1.0-M2 @@ -253,7 +263,7 @@ false 1.8 11 - 2.7.6 + 3.0.5 11 11