Skip to content

Commit 632b0c9

Browse files
authored
Merge pull request #4 from Malcom1986/javalin6
update to javalin 6
2 parents 78abc27 + 5943c93 commit 632b0c9

File tree

10 files changed

+53
-82
lines changed

10 files changed

+53
-82
lines changed

build.gradle.kts

+13-13
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ import org.gradle.api.tasks.testing.logging.TestLogEvent
33

44
plugins {
55
application
6-
id("checkstyle")
7-
id("io.freefair.lombok") version "8.3"
8-
id("com.github.ben-manes.versions") version "0.47.0"
6+
checkstyle
7+
id("io.freefair.lombok") version "8.6"
8+
id("com.github.ben-manes.versions") version "0.51.0"
99
id("com.github.johnrengelman.shadow") version "8.1.1"
1010
}
1111

@@ -21,18 +21,18 @@ repositories {
2121
}
2222

2323
dependencies {
24-
implementation("com.h2database:h2:2.2.222")
25-
implementation("com.zaxxer:HikariCP:5.0.1")
26-
implementation("com.fasterxml.jackson.core:jackson-databind:2.15.2")
27-
implementation("org.apache.commons:commons-text:1.10.0")
28-
implementation("gg.jte:jte:3.1.0")
24+
implementation("com.h2database:h2:2.2.224")
25+
implementation("com.zaxxer:HikariCP:5.1.0")
26+
implementation("com.fasterxml.jackson.core:jackson-databind:2.16.1")
27+
implementation("org.apache.commons:commons-text:1.11.0")
28+
implementation("gg.jte:jte:3.1.9")
2929
implementation("org.slf4j:slf4j-simple:2.0.9")
30-
implementation("io.javalin:javalin:5.6.2")
31-
implementation("io.javalin:javalin-bundle:5.6.2")
32-
implementation("io.javalin:javalin-rendering:5.6.2")
30+
implementation("io.javalin:javalin:6.1.3")
31+
implementation("io.javalin:javalin-bundle:6.1.3")
32+
implementation("io.javalin:javalin-rendering:6.1.3")
3333

34-
testImplementation("org.assertj:assertj-core:3.24.2")
35-
testImplementation(platform("org.junit:junit-bom:5.10.0"))
34+
testImplementation("org.assertj:assertj-core:3.25.3")
35+
testImplementation(platform("org.junit:junit-bom:5.10.1"))
3636
testImplementation("org.junit.jupiter:junit-jupiter")
3737
}
3838

gradle/wrapper/gradle-wrapper.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
44
networkTimeout=10000
55
validateDistributionUrl=true
66
zipStoreBase=GRADLE_USER_HOME

migrate-to-jdbc.md

-38
This file was deleted.

src/main/java/org/example/hexlet/HelloWorld.java

+15-15
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,21 @@
55
import java.io.InputStreamReader;
66
import java.nio.charset.StandardCharsets;
77
import java.sql.SQLException;
8-
import java.util.Collections;
98
import java.util.List;
109
import java.util.stream.Collectors;
1110

11+
import io.javalin.rendering.template.JavalinJte;
12+
13+
import static io.javalin.rendering.template.TemplateUtil.model;
14+
1215
import org.example.hexlet.controller.CarsController;
1316
import org.example.hexlet.controller.PostsController;
1417
import org.example.hexlet.controller.SessionsController;
1518
import org.example.hexlet.controller.UsersController;
1619
import org.example.hexlet.dto.MainPage;
17-
import org.example.hexlet.dto.UsersPage;
1820
import org.example.hexlet.dto.courses.CoursesPage;
1921
import org.example.hexlet.dto.users.BuildUserPage;
22+
import org.example.hexlet.dto.users.UsersPage;
2023
import org.example.hexlet.model.Course;
2124
import org.example.hexlet.model.User;
2225
import org.example.hexlet.repository.BaseRepository;
@@ -63,13 +66,14 @@ public static Javalin getApp() throws IOException, SQLException {
6366

6467
log.info(sql);
6568
try (var connection = dataSource.getConnection();
66-
var statement = connection.createStatement()) {
69+
var statement = connection.createStatement()) {
6770
statement.execute(sql);
6871
}
6972
BaseRepository.dataSource = dataSource;
7073

7174
var app = Javalin.create(config -> {
72-
config.plugins.enableDevLogging();
75+
config.bundledPlugins.enableDevLogging();
76+
config.fileRenderer(new JavalinJte());
7377
});
7478

7579
app.before(ctx -> {
@@ -88,8 +92,6 @@ public static Javalin getApp() throws IOException, SQLException {
8892
app.patch("/posts/{id}", PostsController::update);
8993
app.delete("/posts", PostsController::destroy);
9094

91-
app.get("/users/{id}", UsersController::show);
92-
9395
app.get("/cars", CarsController::index);
9496
app.get("/cars/build", CarsController::build);
9597
app.get("/cars/{id}", CarsController::show);
@@ -98,18 +100,16 @@ public static Javalin getApp() throws IOException, SQLException {
98100
app.get("/", ctx -> {
99101
var visited = Boolean.valueOf(ctx.cookie("visited"));
100102
var page = new MainPage(visited, ctx.sessionAttribute("currentUser"));
101-
ctx.render("index.jte", Collections.singletonMap("page", page));
103+
ctx.render("index.jte", model("page", page));
102104
ctx.cookie("visited", String.valueOf(true));
103105
});
104106

105107
app.get(NamedRoutes.buildUserPath(), ctx -> {
106108
var page = new BuildUserPage();
107-
ctx.render("users/build.jte", Collections.singletonMap("page", page));
109+
ctx.render("users/build.jte", model("page", page));
108110
});
109111

110-
// app.get(NamedRoutes.userPath("{id}"), ctx -> {
111-
// ctx.render("users/show.jte");
112-
// });
112+
app.get("/users/{id}", UsersController::show);
113113

114114
app.post(NamedRoutes.usersPath(), ctx -> {
115115
var name = ctx.formParam("name").trim();
@@ -126,15 +126,15 @@ public static Javalin getApp() throws IOException, SQLException {
126126
ctx.redirect(NamedRoutes.usersPath());
127127
} catch (ValidationException e) {
128128
var page = new BuildUserPage(name, email, e.getErrors());
129-
ctx.render("users/build.jte", Collections.singletonMap("page", page));
129+
ctx.render("users/build.jte", model("page", page));
130130
}
131131
});
132132

133133
app.get(NamedRoutes.usersPath(), ctx -> {
134-
var users = new String[] {"ivan", "peter"};
134+
var users = UserRepository.getEntities();
135135
var page = new UsersPage(users);
136136
// Отдаем обратно url + query params
137-
ctx.render("users/index.jte", Collections.singletonMap("page", page));
137+
ctx.render("users/index.jte", model("page", page));
138138
});
139139

140140
app.get(NamedRoutes.buildCoursePath(), ctx -> {
@@ -154,7 +154,7 @@ public static Javalin getApp() throws IOException, SQLException {
154154
var page = new CoursesPage(courses, term);
155155
page.setFlash(ctx.consumeSessionAttribute("flash"));
156156

157-
ctx.render("courses/index.jte", Collections.singletonMap("page", page));
157+
ctx.render("courses/index.jte", model("page", page));
158158
});
159159

160160
app.post(NamedRoutes.coursesPath(), ctx -> {

src/main/java/org/example/hexlet/controller/CarsController.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package org.example.hexlet.controller;
22

33
import java.sql.SQLException;
4-
import java.util.Collections;
54

65
import org.example.hexlet.dto.cars.CarPage;
76
import org.example.hexlet.dto.cars.CarsPage;
@@ -11,20 +10,21 @@
1110

1211
import io.javalin.http.Context;
1312
import io.javalin.http.NotFoundResponse;
13+
import static io.javalin.rendering.template.TemplateUtil.model;
1414

1515
public class CarsController {
1616
public static void index(Context ctx) throws SQLException {
1717
var cars = CarRepository.getEntities();
1818
var page = new CarsPage(cars);
19-
ctx.render("cars/index.jte", Collections.singletonMap("page", page));
19+
ctx.render("cars/index.jte", model("page", page));
2020
}
2121

2222
public static void show(Context ctx) throws SQLException {
2323
var id = ctx.pathParamAsClass("id", Long.class).get();
2424
var car = CarRepository.find(id)
2525
.orElseThrow(() -> new NotFoundResponse("Entity with id = " + id + " not found"));
2626
var page = new CarPage(car);
27-
ctx.render("cars/show.jte", Collections.singletonMap("page", page));
27+
ctx.render("cars/show.jte", model("page", page));
2828
}
2929

3030
public static void build(Context ctx) {

src/main/java/org/example/hexlet/controller/PostsController.java

+4-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package org.example.hexlet.controller;
22

3-
import java.util.Collections;
4-
53
import org.example.hexlet.dto.posts.PostPage;
64
import org.example.hexlet.dto.posts.PostsPage;
75
import org.example.hexlet.model.Post;
@@ -10,20 +8,21 @@
108

119
import io.javalin.http.Context;
1210
import io.javalin.http.NotFoundResponse;
11+
import static io.javalin.rendering.template.TemplateUtil.model;
1312

1413
public class PostsController {
1514
public static void index(Context ctx) {
1615
var posts = PostRepository.getEntities();
1716
var page = new PostsPage(posts);
18-
ctx.render("posts/index.jte", Collections.singletonMap("page", page));
17+
ctx.render("posts/index.jte", model("page", page));
1918
}
2019

2120
public static void show(Context ctx) {
2221
var id = ctx.pathParamAsClass("id", Long.class).get();
2322
var post = PostRepository.find(id)
2423
.orElseThrow(() -> new NotFoundResponse("Entity with id = " + id + " not found"));
2524
var page = new PostPage(post);
26-
ctx.render("posts/show.jte", Collections.singletonMap("page", page));
25+
ctx.render("posts/show.jte", model("page", page));
2726
}
2827

2928
public static void build(Context ctx) {
@@ -44,7 +43,7 @@ public static void edit(Context ctx) {
4443
var post = PostRepository.find(id)
4544
.orElseThrow(() -> new NotFoundResponse("Entity with id = " + id + " not found"));
4645
var page = new PostPage(post);
47-
ctx.render("posts/edit.jte", Collections.singletonMap("page", page));
46+
ctx.render("posts/edit.jte", model("page", page));
4847
}
4948

5049
public static void update(Context ctx) {

src/main/java/org/example/hexlet/controller/UsersController.java

+4-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package org.example.hexlet.controller;
22

3-
import java.util.Collections;
4-
53
import org.example.hexlet.dto.users.UserPage;
64
import org.example.hexlet.dto.users.UsersPage;
75
import org.example.hexlet.model.User;
@@ -10,6 +8,7 @@
108

119
import io.javalin.http.Context;
1210
import io.javalin.http.NotFoundResponse;
11+
import static io.javalin.rendering.template.TemplateUtil.model;
1312

1413
/**
1514
* UsersController.
@@ -18,15 +17,15 @@ public class UsersController {
1817
public static void index(Context ctx) {
1918
var users = UserRepository.getEntities();
2019
var page = new UsersPage(users);
21-
ctx.render("users/index.jte", Collections.singletonMap("page", page));
20+
ctx.render("users/index.jte", model("page", page));
2221
}
2322

2423
public static void show(Context ctx) {
2524
var id = ctx.pathParamAsClass("id", Long.class).get();
2625
var user = UserRepository.find(id)
2726
.orElseThrow(() -> new NotFoundResponse("Entity with id = " + id + " not found"));
2827
var page = new UserPage(user);
29-
ctx.render("users/show.jte", Collections.singletonMap("page", page));
28+
ctx.render("users/show.jte", model("page", page));
3029
}
3130

3231
public static void build(Context ctx) {
@@ -48,7 +47,7 @@ public static void edit(Context ctx) {
4847
var user = UserRepository.find(id)
4948
.orElseThrow(() -> new NotFoundResponse("Entity with id = " + id + " not found"));
5049
var page = new UserPage(user);
51-
ctx.render("users/edit.jte", Collections.singletonMap("page", page));
50+
ctx.render("users/edit.jte", model("page", page));
5251
}
5352

5453
public static void update(Context ctx) {

src/main/jte/.jteroot

Whitespace-only changes.

src/main/jte/users/index.jte

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
@import org.example.hexlet.util.NamedRoutes
2-
@import org.example.hexlet.dto.UsersPage
2+
@import org.example.hexlet.dto.users.UsersPage;
33
@param UsersPage page
44

55
@template.layout.page(
66
content = @`
77
<a href="${NamedRoutes.buildUserPath()}">New User</a>
88
@for(var user : page.getUsers())
9-
<div>${user}</div>
9+
<div>
10+
<a href="${NamedRoutes.userPath(user.getId())}">${user.getName()}</a>
11+
</div>
1012
@endfor
1113
`
1214
)

src/main/jte/users/show.jte

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
@import org.example.hexlet.dto.users.UserPage;
2+
@param UserPage page
3+
4+
@template.layout.page(
5+
content = @`
6+
<div>${page.getUser().getName()}</div>
7+
<div>${page.getUser().getEmail()}</div>
8+
`
9+
)

0 commit comments

Comments
 (0)