[JAVA-13854] Half list moved (#12598)
* [JAVA-13854] added parent module * [JAVA-13854] moved apache-tapestry(submodule) to web-modules(parent) * [JAVA-13854] moved bootique(submodule) to web-modules(parent) * [JAVA-13854] moved dropwizard(submodule) to web-modules(parent) * [JAVA-13854] moved blade(submodule) to web-modules(parent) * [JAVA-13854] moved java-lite(submodule) to web-modules(parent) * [JAVA-13854] moved jooby(submodule) to web-modules(parent) * [JAVA-13854] moved linkrest(submodule) to web-modules(parent) * [JAVA-13854] moved ninja(submodule) to web-modules(parent) * [JAVA-13854] moved ratpack(submodule) to web-modules(parent) * [JAVA-13854] moved resteasy(submodule) to web-modules(parent) * [JAVA-13854] moved restx(submodule) to web-modules(parent) * [JAVA-13854] moved spark-java(submodule) to web-modules(parent) * [JAVA-13854] moved vraptor(submodule) to web-modules(parent) * [JAVA-13854] delete modules that were moved * [JAVA-13854] * [JAVA-13854] * [JAVA-13854] delete ninja submodule + moved raml(submodule) to web-modules(parent) * [JAVA-13854] moved gwt(submodule) to web-modules(parent) * [JAVA-13854] moved jakarta-ee(submodule) to web-modules(parent) * [JAVA-13854] moved javax-servlets(submodule) to web-modules(parent) * [JAVA-13854] moved javax-servlets-2(submodule) to web-modules(parent) * [JAVA-13854] moved jee-7(submodule) to web-modules(parent) * [JAVA-13854] moved play-framework(not a module) to web-modules * [JAVA-13854] fix failing test * [JAVA-13854] moved struts-2(submodule) to web-modules(parent) * [JAVA-13854] moved wicket(submodule) to web-modules(parent) * [JAVA-13854] deleted modules that were moved to web-modules * JAVA-13854 Removed moved modules from the main pom.xml Co-authored-by: panagiotiskakos <panagiotis.kakos@libra-is.com> Co-authored-by: Dhawal Kapil <dhawalkapil@gmail.com>
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
package controllers;
|
||||
|
||||
import actors.Messenger;
|
||||
import akka.actor.ActorSystem;
|
||||
import akka.stream.Materializer;
|
||||
import akka.stream.javadsl.Flow;
|
||||
import akka.stream.javadsl.Sink;
|
||||
import akka.stream.javadsl.Source;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import dto.MessageDTO;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import play.libs.F;
|
||||
import play.libs.streams.ActorFlow;
|
||||
import play.mvc.*;
|
||||
import utils.MessageConverter;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import java.time.Duration;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.CompletionStage;
|
||||
|
||||
@Slf4j
|
||||
public class HomeController extends Controller {
|
||||
private ActorSystem actorSystem;
|
||||
private Materializer materializer;
|
||||
|
||||
@Inject
|
||||
public HomeController(ActorSystem actorSystem, Materializer materializer) {
|
||||
this.actorSystem = actorSystem;
|
||||
this.materializer = materializer;
|
||||
}
|
||||
|
||||
public Result index(Http.Request request) {
|
||||
String url = routes.HomeController.socket().webSocketURL(request);
|
||||
//To test WebSockets with akka streams, uncomment the next line and comment out the previous
|
||||
//String url = routes.HomeController.akkaStreamsSocket().webSocketURL(request);
|
||||
return ok(views.html.index.render(url));
|
||||
}
|
||||
|
||||
|
||||
public WebSocket socket() {
|
||||
return WebSocket.Json.acceptOrResult(this::createActorFlow);
|
||||
}
|
||||
|
||||
private CompletionStage<F.Either<Result, Flow<JsonNode, JsonNode, ?>>> createActorFlow(
|
||||
Http.RequestHeader request) {
|
||||
return CompletableFuture.completedFuture(F.Either.Right(createFlowForActor()));
|
||||
}
|
||||
|
||||
private CompletionStage<F.Either<Result, Flow<JsonNode, JsonNode, ?>>>
|
||||
createActorFlow2(Http.RequestHeader request) {
|
||||
return CompletableFuture.completedFuture(
|
||||
request.session()
|
||||
.getOptional("username")
|
||||
.map(username ->
|
||||
F.Either.<Result, Flow<JsonNode, JsonNode, ?>>Right(
|
||||
createFlowForActor()))
|
||||
.orElseGet(() -> F.Either.Left(forbidden())));
|
||||
}
|
||||
|
||||
private Flow<JsonNode, JsonNode, ?> createFlowForActor() {
|
||||
return ActorFlow.actorRef(out -> Messenger.props(out), actorSystem, materializer);
|
||||
}
|
||||
|
||||
public WebSocket akkaStreamsSocket() {
|
||||
return WebSocket.Json.accept(
|
||||
request -> {
|
||||
Sink<JsonNode, ?> in = Sink.foreach(System.out::println);
|
||||
MessageDTO messageDTO = new MessageDTO("1", "1", "Title", "Test Body");
|
||||
Source<JsonNode, ?> out = Source.tick(
|
||||
Duration.ofSeconds(2),
|
||||
Duration.ofSeconds(2),
|
||||
MessageConverter.messageToJsonNode(messageDTO)
|
||||
);
|
||||
return Flow.fromSinkAndSource(in, out);
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user