diff --git a/web-modules/jooby/conf/application.conf b/web-modules/jooby/conf/application.conf
index 2f89e0eb6b..7da56eef6b 100644
--- a/web-modules/jooby/conf/application.conf
+++ b/web-modules/jooby/conf/application.conf
@@ -1,2 +1,4 @@
#application.secret = 2o128940921eo298e21
-#db = /url/to/the/datastore
\ No newline at end of file
+#db = /url/to/the/datastore
+
+#redis = "redis://localhost:6379"
\ No newline at end of file
diff --git a/web-modules/jooby/pom.xml b/web-modules/jooby/pom.xml
index 6c2ce3a5c5..024a41e1d9 100644
--- a/web-modules/jooby/pom.xml
+++ b/web-modules/jooby/pom.xml
@@ -1,7 +1,7 @@
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
4.0.0
com.baeldung.jooby
jooby
@@ -14,26 +14,25 @@
1.0.0-SNAPSHOT
-
-
-
- org.jooby
- modules
- ${jooby.version}
- pom
-
-
-
-
- org.jooby
- jooby-netty
+ io.jooby
+ jooby
${jooby.version}
- org.jooby
- jooby-jedis
+ io.jooby
+ jooby-test
+ ${jooby.version}
+
+
+ io.jooby
+ jooby-jetty
+ ${jooby.version}
+
+
+ io.jooby
+ jooby-redis
${jooby.version}
@@ -42,23 +41,43 @@
test
${rest-assured.version}
+
+ com.squareup.okhttp3
+ okhttp
+ ${squareup.okhttp.version}
+
- org.apache.maven.plugins
maven-shade-plugin
${maven-shade-plugin.version}
+
+ io.jooby
+ jooby-maven-plugin
+ ${jooby.version}
+
+
+ maven-compiler-plugin
+ ${maven-compiler.version}
+
+
+ -parameters
+
+
+
- 1.1.3
+ 2.16.1
3.1.1
com.baeldung.jooby.App
- 2.4.3
+ 3.2.4
+ 3.8.1
+ 4.9.1
\ No newline at end of file
diff --git a/web-modules/jooby/public/form.html b/web-modules/jooby/public/form.html
index a23620812a..bb9a705b9a 100644
--- a/web-modules/jooby/public/form.html
+++ b/web-modules/jooby/public/form.html
@@ -1,17 +1,18 @@
-
-Insert title here
+
+ Insert title here
-
+
\ No newline at end of file
diff --git a/web-modules/jooby/src/main/java/com/baeldung/jooby/App.java b/web-modules/jooby/src/main/java/com/baeldung/jooby/App.java
index 94a24048c2..87899944ee 100644
--- a/web-modules/jooby/src/main/java/com/baeldung/jooby/App.java
+++ b/web-modules/jooby/src/main/java/com/baeldung/jooby/App.java
@@ -1,95 +1,135 @@
package com.baeldung.jooby;
-import org.jooby.Jooby;
-import org.jooby.Mutant;
-import org.jooby.Session;
-import org.jooby.jedis.Redis;
-import org.jooby.jedis.RedisSessionStore;
-
import com.baeldung.jooby.bean.Employee;
+import io.jooby.Jooby;
+import io.jooby.ServerOptions;
+import io.jooby.Session;
+import io.jooby.SessionStore;
+import io.jooby.redis.RedisModule;
+import io.jooby.redis.RedisSessionStore;
+import io.lettuce.core.RedisClient;
+
public class App extends Jooby {
+ {
+ setServerOptions(new ServerOptions().setPort(8080)
+ .setSecurePort(8433));
+ }
- {
- port(8080);
- securePort(8443);
- }
- {
- get("/", () -> "Hello World!");
- }
+ {
+ get("/", ctx -> "Hello World!");
+ }
- {
- get("/user/{id}", req -> "Hello user : " + req.param("id").value());
- get("/user/:id", req -> "Hello user: " + req.param("id").value());
- get("/uid:{id}", req -> "Hello User with id : uid" + req.param("id").value());
- }
+ {
+ get("/user/{id}", ctx -> "Hello user : " + ctx.path("id")
+ .value());
+ get("/user/:id", ctx -> "Hello user: " + ctx.path("id")
+ .value());
+ get("/uid:{id}", ctx -> "Hello User with id : uid = " + ctx.path("id")
+ .value());
+ }
- {
- onStart(() -> {
- System.out.println("starting app");
- });
+ {
+ onStarting(() -> {
+ System.out.println("starting app");
+ });
- onStop(() -> {
- System.out.println("stopping app");
- });
+ onStop(() -> {
+ System.out.println("stopping app");
+ });
- onStarted(() -> {
- System.out.println("app started");
- });
- }
+ onStarted(() -> {
+ System.out.println("app started");
+ });
+ }
- {
- get("/login", () -> "Hello from Baeldung");
- }
+ {
+ get("/login", ctx -> "Hello from Baeldung");
+ }
- {
- post("/save", req -> {
- Mutant token = req.param("token");
- return token.intValue();
- });
- }
+ {
+ post("/save", ctx -> {
+ String userId = ctx.query("id")
+ .value();
+ return userId;
+ });
+ }
- {
- {
- assets("/employee", "form.html");
- }
+ {
+ {
+ assets("/employee", "public/form.html");
+ }
- post("/submitForm", req -> {
- Employee employee = req.params(Employee.class);
- // TODO
- return "empoyee data saved successfullly";
- });
- }
+ post("/submitForm", ctx -> {
+ Employee employee = ctx.path(Employee.class);
+ // TODO
+ return "employee data saved successfully";
+ });
- {
- get("/filter", (req, resp, chain) -> {
- // TODO
- // resp.send(...);
- chain.next(req, resp);
- });
- get("/filter", (req, resp) -> {
- resp.send("filter response");
- });
- }
+ }
- {
-// cookieSession();
-
-// use(new Redis());
-//
-// session(RedisSessionStore.class);
- get("/session", req -> {
- Session session = req.session();
- session.set("token", "value");
- return session.get("token").value();
- });
- }
+ {
+ decorator(next -> ctx -> {
+ System.out.println("first");
+ // Moves execution to next handler: second
+ return next.apply(ctx);
+ });
+ decorator(next -> ctx -> {
+ System.out.println("second");
+ // Moves execution to next handler: third
+ return next.apply(ctx);
+ });
- public static void main(final String[] args) {
+ get("/handler", ctx -> {
+ return "third";
+ });
+ }
- run(App::new, args);
- }
+ {
+ get("/sessionInMemory", ctx -> {
+ Session session = ctx.session();
+ session.put("token", "value");
+ return session.get("token")
+ .value();
+ });
+ }
+
+ {
+ String secret = "super secret token";
+
+ setSessionStore(SessionStore.signed(secret));
+
+ get("/signedSession", ctx -> {
+ Session session = ctx.session();
+ session.put("token", "value");
+ return session.get("token").value();
+ });
+ }
+
+ {
+ get("/sessionInMemoryRedis", ctx -> {
+ Session session = ctx.session();
+ session.put("token", "value");
+ return session.get("token")
+ .value();
+ });
+ }
+
+ /* This will work once redis is installed locally
+ {
+ install(new RedisModule("redis"));
+ setSessionStore(new RedisSessionStore(require(RedisClient.class)));
+ get("/redisSession", ctx -> {
+ Session session = ctx.session();
+ session.put("token", "value");
+ return session.get("token");
+ });
+ }*/
+
+ public static void main(final String[] args) {
+ runApp(args, App::new);
+ }
}
diff --git a/web-modules/jooby/src/main/java/com/baeldung/jooby/mvc/GetController.java b/web-modules/jooby/src/main/java/com/baeldung/jooby/mvc/GetController.java
index a2c51bae70..bd43fb1717 100644
--- a/web-modules/jooby/src/main/java/com/baeldung/jooby/mvc/GetController.java
+++ b/web-modules/jooby/src/main/java/com/baeldung/jooby/mvc/GetController.java
@@ -1,22 +1,23 @@
package com.baeldung.jooby.mvc;
-import org.jooby.Result;
-import org.jooby.Results;
-import org.jooby.mvc.GET;
-import org.jooby.mvc.Path;
+import java.util.HashMap;
+
+import io.jooby.ModelAndView;
+import io.jooby.annotations.GET;
+import io.jooby.annotations.Path;
@Path("/hello")
public class GetController {
- @GET
- public String hello() {
- return "Hello Baeldung";
- }
+ @GET
+ public String hello() {
+ return "Hello Baeldung";
+ }
- @GET
- @Path("/home")
- public Result home() {
- return Results.html("welcome").put("model", new Object());
- }
+ @GET
+ @Path("/home")
+ public ModelAndView home() {
+ return new ModelAndView("welcome.html", new HashMap<>());
+ }
}
diff --git a/web-modules/jooby/src/main/java/com/baeldung/jooby/mvc/PostController.java b/web-modules/jooby/src/main/java/com/baeldung/jooby/mvc/PostController.java
index df00e47da5..0f014580f9 100644
--- a/web-modules/jooby/src/main/java/com/baeldung/jooby/mvc/PostController.java
+++ b/web-modules/jooby/src/main/java/com/baeldung/jooby/mvc/PostController.java
@@ -1,14 +1,13 @@
package com.baeldung.jooby.mvc;
-import org.jooby.mvc.POST;
-import org.jooby.mvc.Path;
+import io.jooby.annotations.POST;
+import io.jooby.annotations.Path;
@Path("/submit")
public class PostController {
- @POST
- public String hello() {
- return "Submit Baeldung";
- }
-
+ @POST
+ public String hello() {
+ return "Submit Baeldung";
+ }
}
diff --git a/web-modules/jooby/src/test/java/com/baeldung/jooby/AppLiveTest.java b/web-modules/jooby/src/test/java/com/baeldung/jooby/AppLiveTest.java
index 1bd12f8bb3..18a505b406 100644
--- a/web-modules/jooby/src/test/java/com/baeldung/jooby/AppLiveTest.java
+++ b/web-modules/jooby/src/test/java/com/baeldung/jooby/AppLiveTest.java
@@ -1,21 +1,32 @@
package com.baeldung.jooby;
-import static io.restassured.RestAssured.get;
-import static org.hamcrest.Matchers.equalTo;
+import static org.junit.jupiter.api.Assertions.assertEquals;
-import org.jooby.test.JoobyRule;
-import org.junit.ClassRule;
-import org.junit.Test;
+import java.io.IOException;
+import org.junit.jupiter.api.Test;
+
+import io.jooby.JoobyTest;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.Response;
+
+@JoobyTest(value = App.class, port = 8080)
public class AppLiveTest {
- @ClassRule
- public static JoobyRule app = new JoobyRule(new App());
+ static OkHttpClient client = new OkHttpClient();
- @Test
- public void given_defaultUrl_expect_fixedString() {
- get("/").then().assertThat().body(equalTo("Hello World!")).statusCode(200)
- .contentType("text/html;charset=UTF-8");
- }
+ @Test
+ public void given_defaultUrl_expect_fixedString() {
+ Request request = new Request.Builder().url("http://localhost:8080")
+ .build();
+ try (Response response = client.newCall(request)
+ .execute()) {
+ assertEquals("Hello World!", response.body()
+ .string());
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
}
diff --git a/web-modules/jooby/src/test/java/com/baeldung/jooby/AppUnitTest.java b/web-modules/jooby/src/test/java/com/baeldung/jooby/AppUnitTest.java
index 9bca30e2c1..98184e11f3 100644
--- a/web-modules/jooby/src/test/java/com/baeldung/jooby/AppUnitTest.java
+++ b/web-modules/jooby/src/test/java/com/baeldung/jooby/AppUnitTest.java
@@ -2,15 +2,16 @@ package com.baeldung.jooby;
import static org.junit.Assert.assertEquals;
-import org.jooby.test.MockRouter;
import org.junit.Test;
+import io.jooby.MockRouter;
+
public class AppUnitTest {
- @Test
- public void given_defaultUrl_with_mockrouter_expect_fixedString() throws Throwable {
- String result = new MockRouter(new App()).get("/");
- assertEquals("Hello World!", result);
- }
-
+ @Test
+ public void given_defaultUrl_with_mockrouter_expect_fixedString() {
+ MockRouter router = new MockRouter(new App());
+ assertEquals("Hello World!", router.get("/")
+ .value());
+ }
}
diff --git a/web-modules/pom.xml b/web-modules/pom.xml
index 7283df64fd..5d71f105b8 100644
--- a/web-modules/pom.xml
+++ b/web-modules/pom.xml
@@ -24,7 +24,7 @@
javax-servlets
javax-servlets-2
jee-7
-
+ jooby
linkrest