diff --git a/libraries/pom.xml b/libraries/pom.xml
index f4bf994a58..678ba3279c 100644
--- a/libraries/pom.xml
+++ b/libraries/pom.xml
@@ -680,6 +680,12 @@
${unirest.version}
+
+
+ io.javalin
+ javalin
+ 1.6.0
+
io.atlassian.fugue
diff --git a/libraries/src/main/java/com/baeldung/javalin/JavalinApp.java b/libraries/src/main/java/com/baeldung/javalin/JavalinApp.java
new file mode 100644
index 0000000000..33d2c7083f
--- /dev/null
+++ b/libraries/src/main/java/com/baeldung/javalin/JavalinApp.java
@@ -0,0 +1,16 @@
+package com.baeldung.javalin;
+
+import com.baeldung.javalin.User.UserController;
+import io.javalin.Javalin;
+
+public class JavalinApp {
+ public static void main(String[] args) {
+ Javalin app = Javalin.create()
+ .port(7000)
+ .start();
+
+ app.get("/hello", ctx -> ctx.html("Hello, Javalin!"));
+ app.get("/users", UserController.fetchAllUsernames);
+ app.get("/users/:id", UserController.fetchById);
+ }
+}
diff --git a/libraries/src/main/java/com/baeldung/javalin/User/User.java b/libraries/src/main/java/com/baeldung/javalin/User/User.java
new file mode 100644
index 0000000000..09f710453b
--- /dev/null
+++ b/libraries/src/main/java/com/baeldung/javalin/User/User.java
@@ -0,0 +1,11 @@
+package com.baeldung.javalin.User;
+
+public class User {
+ public final int id;
+ public final String name;
+
+ public User(int id, String name) {
+ this.id = id;
+ this.name = name;
+ }
+}
diff --git a/libraries/src/main/java/com/baeldung/javalin/User/UserController.java b/libraries/src/main/java/com/baeldung/javalin/User/UserController.java
new file mode 100644
index 0000000000..fd713606cf
--- /dev/null
+++ b/libraries/src/main/java/com/baeldung/javalin/User/UserController.java
@@ -0,0 +1,24 @@
+package com.baeldung.javalin.User;
+
+import io.javalin.Handler;
+
+import java.util.Objects;
+
+public class UserController {
+ public static Handler fetchAllUsernames = ctx -> {
+ UserDao dao = UserDao.instance();
+ Iterable allUsers = dao.getAllUsernames();
+ ctx.json(allUsers);
+ };
+
+ public static Handler fetchById = ctx -> {
+ int id = Integer.parseInt(Objects.requireNonNull(ctx.param("id")));
+ UserDao dao = UserDao.instance();
+ User user = dao.getUserById(id);
+ if (user == null) {
+ ctx.html("Not Found");
+ } else {
+ ctx.json(user);
+ }
+ };
+}
diff --git a/libraries/src/main/java/com/baeldung/javalin/User/UserDao.java b/libraries/src/main/java/com/baeldung/javalin/User/UserDao.java
new file mode 100644
index 0000000000..1cbf3012a8
--- /dev/null
+++ b/libraries/src/main/java/com/baeldung/javalin/User/UserDao.java
@@ -0,0 +1,33 @@
+package com.baeldung.javalin.User;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+class UserDao {
+
+ private final List users = Arrays.asList(
+ new User(0, "Steve Rogers"),
+ new User(1, "Tony Stark"),
+ new User(2, "Carol Danvers")
+ );
+
+ private static UserDao userDao = null;
+
+ private UserDao() {
+ }
+
+ static UserDao instance() {
+ if (userDao == null) {
+ userDao = new UserDao();
+ }
+ return userDao;
+ }
+
+ Optional getUserById(int id) { return users.stream().filter(u -> u.id == id).findFirst(); }
+
+ Iterable getAllUsernames() {
+ return users.stream().map(user -> user.name).collect(Collectors.toList());
+ }
+}