55import java .util .concurrent .TimeUnit ;
66
77import akka .actor .ActorRef ;
8+ import akka .actor .ActorSystem ;
89import akka .http .javadsl .marshallers .jackson .Jackson ;
910import akka .http .javadsl .model .StatusCodes ;
10- import akka .http .javadsl .server .AllDirectives ;
11+ import akka .http .javadsl .server .HttpApp ;
1112import akka .http .javadsl .server .Route ;
1213import akka .pattern .PatternsCS ;
1314import akka .util .Timeout ;
1415import com .baeldung .akkahttp .UserMessages .ActionPerformed ;
15- import com .baeldung .akkahttp .UserMessages .CreateUser ;
16+ import com .baeldung .akkahttp .UserMessages .CreateUserMessage ;
17+ import com .baeldung .akkahttp .UserMessages .GetUserMessage ;
1618import scala .concurrent .duration .Duration ;
1719import static akka .http .javadsl .server .PathMatchers .*;
1820
19- class UserRoutes extends AllDirectives {
21+ class UserServer extends HttpApp {
2022
2123 private final ActorRef userActor ;
2224
2325 Timeout timeout = new Timeout (Duration .create (5 , TimeUnit .SECONDS ));
2426
25- UserRoutes (ActorRef userActor ) {
27+ UserServer (ActorRef userActor ) {
2628 this .userActor = userActor ;
2729 }
2830
29- Route routes () {
31+ @ Override
32+ public Route routes () {
3033 return path ("users" , this ::postUser )
3134 .orElse (path (segment ("users" ).slash (longSegment ()), id ->
32- route (getUser (id ),
33- deleteUser (id ))));
35+ route (getUser (id ))));
3436 }
3537
3638 private Route getUser (Long id ) {
3739 return get (() -> {
38- CompletionStage <Optional <User >> user = PatternsCS .ask (userActor , new UserMessages . GetUser (id ), timeout )
40+ CompletionStage <Optional <User >> user = PatternsCS .ask (userActor , new GetUserMessage (id ), timeout )
3941 .thenApply (obj -> (Optional <User >) obj );
4042
4143 return onSuccess (() -> user , performed -> {
@@ -47,20 +49,9 @@ private Route getUser(Long id) {
4749 });
4850 }
4951
50- private Route deleteUser (Long id ) {
51- return delete (() -> {
52- CompletionStage <ActionPerformed > userDeleted = PatternsCS .ask (userActor , new UserMessages .DeleteUser (id ), timeout )
53- .thenApply (obj -> (ActionPerformed ) obj );
54-
55- return onSuccess (() -> userDeleted , performed -> {
56- return complete (StatusCodes .OK , performed , Jackson .marshaller ());
57- });
58- });
59- }
60-
6152 private Route postUser () {
6253 return route (post (() -> entity (Jackson .unmarshaller (User .class ), user -> {
63- CompletionStage <ActionPerformed > userCreated = PatternsCS .ask (userActor , new CreateUser (user ), timeout )
54+ CompletionStage <ActionPerformed > userCreated = PatternsCS .ask (userActor , new CreateUserMessage (user ), timeout )
6455 .thenApply (obj -> (ActionPerformed ) obj );
6556
6657 return onSuccess (() -> userCreated , performed -> {
@@ -69,4 +60,11 @@ private Route postUser() {
6960 })));
7061 }
7162
63+ public static void main (String [] args ) throws Exception {
64+ ActorSystem system = ActorSystem .create ("userServer" );
65+ ActorRef userActor = system .actorOf (UserActor .props (), "userActor" );
66+ UserServer server = new UserServer (userActor );
67+ server .startServer ("localhost" , 8080 , system );
68+ }
69+
7270}
0 commit comments