Skip to content

Commit 35f52b5

Browse files
authored
Merge pull request #8 from vn7n24fzkq/upgrade-javalin
Upgrade javalin
2 parents 2c88c75 + 91c0d7e commit 35f52b5

File tree

21 files changed

+139
-83
lines changed

21 files changed

+139
-83
lines changed

build.gradle

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ group 'io.realworld'
22
version '1.0-SNAPSHOT'
33

44
ext {
5-
javalin_version = "2.6.0"
6-
jackson_version = "2.9.7"
7-
slf4j_version = "1.7.25"
5+
javalin_version = "3.8.0"
6+
jackson_version = "2.10.1"
7+
slf4j_version = "1.7.28"
88
koin_version = "1.0.2"
99
junit_version = "4.12"
1010
unirest_version = "1.4.9"
@@ -13,7 +13,8 @@ ext {
1313
h2_version = "1.4.197"
1414
exposed_version = "0.11.1"
1515
slugify_version = "2.1.+"
16-
swagger_version = "3.17.6"
16+
swagger_version = "3.24.3"
17+
swagger_core_version = "2.0.9"
1718
}
1819

1920
buildscript {
@@ -51,6 +52,7 @@ dependencies {
5152
compile "org.jetbrains.exposed:exposed:$exposed_version"
5253
compile "com.github.slugify:slugify:$slugify_version"
5354
compile "org.webjars:swagger-ui:$swagger_version"
55+
compile "io.swagger.core.v3:swagger-core:$swagger_core_version"
5456

5557
testCompile "junit:junit:$junit_version"
5658
testCompile "com.mashape.unirest:unirest-java:$unirest_version"

src/main/kotlin/io/realworld/app/config/AppConfig.kt

Lines changed: 34 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,17 @@ package io.realworld.app.config
33
import com.fasterxml.jackson.databind.SerializationFeature
44
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
55
import io.javalin.Javalin
6-
import io.javalin.JavalinEvent
7-
import io.javalin.json.JavalinJackson
6+
import io.javalin.core.plugin.Plugin
7+
import io.javalin.core.security.SecurityUtil.roles
8+
import io.javalin.plugin.json.JavalinJackson
9+
import io.javalin.plugin.openapi.OpenApiOptions
10+
import io.javalin.plugin.openapi.OpenApiPlugin
11+
import io.javalin.plugin.openapi.ui.SwaggerOptions
812
import io.realworld.app.config.ModulesConfig.allModules
913
import io.realworld.app.web.ErrorExceptionMapping
1014
import io.realworld.app.web.Router
15+
import io.swagger.v3.oas.models.info.Info
16+
import org.eclipse.jetty.server.Server
1117
import org.koin.core.KoinProperties
1218
import org.koin.standalone.KoinComponent
1319
import org.koin.standalone.StandAloneContext
@@ -21,32 +27,39 @@ class AppConfig : KoinComponent {
2127

2228
fun setup(): Javalin {
2329
StandAloneContext.startKoin(
24-
allModules,
25-
KoinProperties(true, true)
30+
allModules,
31+
KoinProperties(true, true)
2632
)
27-
return Javalin.create()
28-
.also { app ->
29-
this.configureMapper()
30-
app.enableCorsForAllOrigins()
31-
.contextPath(getProperty("context"))
32-
.event(JavalinEvent.SERVER_STOPPING) {
33-
StandAloneContext.stopKoin()
34-
}
35-
authConfig.configure(app)
36-
router.register(app)
37-
ErrorExceptionMapping.register(app)
38-
app.port(getProperty("server_port"))
39-
app.enableWebJars()
33+
this.configureMapper()
34+
val app = Javalin.create { config ->
35+
config.apply {
36+
enableWebjars()
37+
enableCorsForAllOrigins()
38+
contextPath = getProperty("context")
39+
addStaticFiles("/swagger")
40+
addSinglePageRoot("","/swagger/swagger-ui.html")
41+
server {
42+
Server(getProperty("server_port") as Int)
43+
}
4044
}
45+
}.events {
46+
it.serverStopping {
47+
StandAloneContext.stopKoin()
48+
}
49+
}
50+
authConfig.configure(app)
51+
router.register(app)
52+
ErrorExceptionMapping.register(app)
53+
return app
4154
}
4255

4356
private fun configureMapper() {
4457
val dateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
4558
JavalinJackson.configure(
46-
jacksonObjectMapper()
47-
.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
48-
.setDateFormat(dateFormat)
49-
.configure(SerializationFeature.WRITE_DATES_WITH_ZONE_ID, true)
59+
jacksonObjectMapper()
60+
.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
61+
.setDateFormat(dateFormat)
62+
.configure(SerializationFeature.WRITE_DATES_WITH_ZONE_ID, true)
5063
)
5164
}
5265
}

src/main/kotlin/io/realworld/app/config/AuthConfig.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package io.realworld.app.config
22

33
import com.auth0.jwt.interfaces.DecodedJWT
4-
import io.javalin.Context
5-
import io.javalin.ForbiddenResponse
64
import io.javalin.Javalin
7-
import io.javalin.security.Role
5+
import io.javalin.core.security.Role
6+
import io.javalin.http.Context
7+
import io.javalin.http.ForbiddenResponse
88
import io.realworld.app.utils.JwtProvider
99

1010
internal enum class Roles : Role {
@@ -15,7 +15,7 @@ private const val headerTokenName = "Authorization"
1515

1616
class AuthConfig(private val jwtProvider: JwtProvider) {
1717
fun configure(app: Javalin) {
18-
app.accessManager { handler, ctx, permittedRoles ->
18+
app.config.accessManager { handler, ctx, permittedRoles ->
1919
val jwtToken = getJwtTokenHeader(ctx)
2020
val userRole = getUserRole(jwtToken) ?: Roles.ANYONE
2121
permittedRoles.takeIf { !it.contains(userRole) }?.apply { throw ForbiddenResponse() }

src/main/kotlin/io/realworld/app/domain/repository/ArticleRepository.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package io.realworld.app.domain.repository
22

3-
import io.javalin.NotFoundResponse
3+
import io.javalin.http.NotFoundResponse
44
import io.realworld.app.domain.Article
55
import io.realworld.app.domain.User
66
import org.jetbrains.exposed.sql.Column

src/main/kotlin/io/realworld/app/domain/repository/CommentRepository.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package io.realworld.app.domain.repository
22

3-
import io.javalin.BadRequestResponse
4-
import io.javalin.NotFoundResponse
3+
import io.javalin.http.BadRequestResponse
4+
import io.javalin.http.NotFoundResponse
55
import io.realworld.app.domain.Comment
66
import io.realworld.app.domain.User
77
import org.jetbrains.exposed.dao.LongIdTable

src/main/kotlin/io/realworld/app/domain/repository/UserRepository.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package io.realworld.app.domain.repository
22

3-
import io.javalin.NotFoundResponse
3+
import io.javalin.http.NotFoundResponse
44
import io.realworld.app.domain.User
55
import org.jetbrains.exposed.dao.LongIdTable
66
import org.jetbrains.exposed.sql.Column

src/main/kotlin/io/realworld/app/domain/service/ArticleService.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package io.realworld.app.domain.service
22

33
import com.github.slugify.Slugify
4-
import io.javalin.BadRequestResponse
5-
import io.javalin.InternalServerErrorResponse
6-
import io.javalin.NotFoundResponse
4+
import io.javalin.http.BadRequestResponse
5+
import io.javalin.http.InternalServerErrorResponse
6+
import io.javalin.http.NotFoundResponse
77
import io.realworld.app.domain.Article
88
import io.realworld.app.domain.repository.ArticleRepository
99
import io.realworld.app.domain.repository.UserRepository

src/main/kotlin/io/realworld/app/domain/service/CommentService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package io.realworld.app.domain.service
22

3-
import io.javalin.BadRequestResponse
3+
import io.javalin.http.BadRequestResponse
44
import io.realworld.app.domain.Comment
55
import io.realworld.app.domain.repository.CommentRepository
66

src/main/kotlin/io/realworld/app/domain/service/UserService.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package io.realworld.app.domain.service
22

3-
import io.javalin.BadRequestResponse
4-
import io.javalin.HttpResponseException
5-
import io.javalin.NotFoundResponse
6-
import io.javalin.UnauthorizedResponse
3+
import io.javalin.http.BadRequestResponse
4+
import io.javalin.http.HttpResponseException
5+
import io.javalin.http.NotFoundResponse
6+
import io.javalin.http.UnauthorizedResponse
77
import io.realworld.app.config.Roles
88
import io.realworld.app.domain.Profile
99
import io.realworld.app.domain.User

src/main/kotlin/io/realworld/app/utils/JwtProvider.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package io.realworld.app.utils
22

33
import com.auth0.jwt.JWT
44
import com.auth0.jwt.interfaces.DecodedJWT
5-
import io.javalin.security.Role
5+
import io.javalin.core.security.Role
66
import io.realworld.app.domain.User
77
import java.util.*
88

0 commit comments

Comments
 (0)