Skip to content

Commit c8bbff6

Browse files
committed
Migrate to Java 21 and Spring Boot 3.3
1 parent 4509862 commit c8bbff6

File tree

104 files changed

+196
-187
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

104 files changed

+196
-187
lines changed

.github/dependabot.yml

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
---
2+
version: 2
3+
updates:
4+
- package-ecosystem: "gradle"
5+
directory: "/"
6+
schedule:
7+
interval: "weekly"
8+
ignore:
9+
- dependency-name: "kotlin"
10+
versions: [ "2.x" ]
11+
commit-message:
12+
prefix: "[deps]"

.github/workflows/build.yml

+7-13
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,16 @@ jobs:
55
name: Build
66
runs-on: ubuntu-latest
77
steps:
8-
- uses: actions/checkout@v3
8+
- uses: actions/checkout@v4
99

10-
- uses: actions/setup-java@v3
10+
- uses: actions/setup-java@v4
1111
with:
1212
distribution: "corretto"
13-
java-version: "17"
13+
java-version: "21"
1414
cache: "gradle"
1515

16-
- name: Build project
17-
uses: eskatos/gradle-command-action@v1
18-
with:
19-
dependencies-cache-enabled: true
20-
arguments: clean build
16+
- name: Validate
17+
uses: pre-commit/[email protected]
2118

22-
- name: Test Report
23-
uses: mikepenz/action-junit-report@v2
24-
if: always()
25-
with:
26-
report_paths: "**/build/test-results/test/TEST-*.xml"
19+
- name: Build project
20+
run: ./gradlew clean build

.gitignore

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@
55
out/
66
bin/
77
build/
8-
generated/
8+
generated/

.pre-commit-config.yaml

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
---
2+
repos:
3+
- repo: https://github.com/pre-commit/pre-commit-hooks
4+
rev: v4.5.0
5+
hooks:
6+
- id: trailing-whitespace
7+
- id: end-of-file-fixer
8+
- id: fix-byte-order-marker
9+
- id: mixed-line-ending
10+
- id: check-merge-conflict
11+
- id: check-case-conflict
12+
13+
- repo: https://github.com/Lucas-C/pre-commit-hooks
14+
rev: v1.5.4
15+
hooks:
16+
- id: remove-crlf
17+
- id: remove-tabs

README.md

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
# Протоколы обмена информацией
2-
31
[![Build project](https://github.com/Romanow/web-protocols/actions/workflows/build.yml/badge.svg?branch=master)](https://github.com/Romanow/web-protocols/actions/workflows/build.yml)
2+
[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit)](https://github.com/pre-commit/pre-commit)
3+
4+
# Протоколы обмена информацией
45

56
## Сборка и запуск
67

@@ -106,4 +107,4 @@ $ ./gradlew soap-server:bootRun
106107

107108
```shell
108109
$ java -jar soap-client/build/libs/soap-client.jar
109-
```
110+
```

_config.yml

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
title: Протоколы обмена информацией
2+
description: Примеры реализации основных протоколов REST, SOAP, gRPC, GraphQL
3+
author:
4+
name: Romanow
5+
6+
7+
show_downloads: false
8+
remote_theme: jekyll/minima
9+
header_pages: ['']
10+
11+
minima:
12+
skin: classic
13+
social_links:
14+
- { platform: linkedin, user_url: "https://www.linkedin.com/company/it-enduro" }
15+
- { platform: telegram, user_url: "https://t.me/romanowalex" }
16+
- { platform: youtube, user_url: "https://www.youtube.com/@it_enduro" }

api/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,4 @@ dependencies {
1111

1212
noArg {
1313
annotation "ru.romanow.protocols.api.model.NoArgConstructor"
14-
}
14+
}

api/src/main/java/ru/romanow/protocols/api/model/CreateServerRequest.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,4 @@ data class CreateServerRequest(
2727
@field:XmlElement
2828
@NotNull(message = "{field.not.null}")
2929
val state: StateInfo? = null
30-
)
30+
)

api/src/main/java/ru/romanow/protocols/api/model/ErrorDescription.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ import jakarta.xml.bind.annotation.XmlElement
88
data class ErrorDescription(
99
@field:XmlElement val field: String,
1010
@field:XmlElement val error: String
11-
)
11+
)

api/src/main/java/ru/romanow/protocols/api/model/ErrorResponse.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ import jakarta.xml.bind.annotation.XmlElement
77
@JacksonXmlRootElement(localName = "error")
88
data class ErrorResponse(
99
@field:XmlElement val message: String? = null
10-
)
10+
)

api/src/main/java/ru/romanow/protocols/api/model/Purpose.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ enum class Purpose {
66

77
fun findPurpose(purpose: String): Purpose {
88
return Purpose.values().first { it.name == purpose }
9-
}
9+
}

api/src/main/java/ru/romanow/protocols/api/model/ServerResponse.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,4 @@ data class ServerResponse(
1111
@field:XmlElement val latency: Int,
1212
@field:XmlElement val bandwidth: Int,
1313
@field:XmlElement val state: StateInfo
14-
)
14+
)

api/src/main/java/ru/romanow/protocols/api/model/ServersResponse.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@ data class ServersResponse(
1313
@JacksonXmlProperty(localName = "server")
1414
@JacksonXmlElementWrapper(useWrapping = false)
1515
val servers: List<ServerResponse>
16-
)
16+
)

api/src/main/java/ru/romanow/protocols/api/model/StateInfo.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,4 @@ data class StateInfo(
1717
@field:XmlElement
1818
@NotEmpty(message = "{field.not.empty}")
1919
val country: String? = null
20-
)
20+
)

api/src/main/java/ru/romanow/protocols/api/model/ValidationErrorResponse.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@ data class ValidationErrorResponse(
1313
@field:XmlElement
1414
@JacksonXmlElementWrapper(useWrapping = false)
1515
val error: List<ErrorDescription>
16-
)
16+
)

build.gradle

+19-19
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,50 @@
11
plugins {
22
id "idea"
3-
id "org.jetbrains.kotlin.jvm" version "1.7.10"
4-
id "org.jetbrains.kotlin.plugin.spring" version "1.7.10"
5-
id "org.jetbrains.kotlin.plugin.jpa" version "1.7.10"
6-
id "org.jetbrains.kotlin.plugin.noarg" version "1.7.10"
7-
id "io.spring.dependency-management" version "1.1.0"
8-
id "org.springframework.boot" version "3.0.4" apply false
9-
id "org.springframework.cloud.contract" version "4.0.2" apply false
3+
id "org.jetbrains.kotlin.jvm" version "1.9.25"
4+
id "org.jetbrains.kotlin.plugin.spring" version "1.9.25"
5+
id "org.jetbrains.kotlin.plugin.jpa" version "1.9.25"
6+
id "org.jetbrains.kotlin.plugin.noarg" version "1.9.25"
7+
id "io.spring.dependency-management" version "1.1.6"
8+
id "org.springframework.boot" version "3.3.6" apply false
9+
id "org.springframework.cloud.contract" version "4.1.4" apply false
1010
id "org.asciidoctor.jvm.convert" version "3.3.2" apply false
1111
id "io.mateo.cxf-codegen" version "1.2.0" apply false
12-
id "com.google.protobuf" version "0.9.2" apply false
12+
id "com.google.protobuf" version "0.9.4" apply false
1313
}
1414

1515
ext {
1616
// Common
17-
springBootVersion = "3.0.4"
18-
springContractVersion = "4.0.2"
19-
springShellVersion = "3.0.1"
20-
kotlinVersion = "1.7.10"
17+
springBootVersion = "3.3.6"
18+
springContractVersion = "4.1.4"
19+
springShellVersion = "3.3.3"
20+
kotlinVersion = "1.9.25"
2121
jetbrainsAnnotationsVersion = "22.0.0"
2222

2323
// RESTful
2424
openApiVersion = "2.1.0"
25-
logbookVersion = "3.0.0-RC.2"
25+
logbookVersion = "3.10.0"
2626
springCloudContractVersion = "4.0.2"
2727

2828
// SOAP
2929
cxfVersion = "4.0.0"
3030
jakartaVersion = "4.0.0"
3131

3232
// gRPC
33-
grpcVersion = "1.54.0"
34-
protobufVersion = "3.22.2"
35-
grpcSpringVersion = "5.0.0"
33+
grpcVersion = "1.68.1"
34+
protobufVersion = "4.28.3"
35+
grpcSpringVersion = "3.1.0.RELEASE"
3636
javaxAnnotationVersion = "1.3.2"
3737

3838
// Test
39-
postgresContainerVersion = "1.17.6"
39+
postgresContainerVersion = "1.20.4"
4040
}
4141

4242
allprojects { ->
4343
apply plugin: "idea"
4444
apply plugin: "kotlin"
4545
apply plugin: "io.spring.dependency-management"
4646

47-
[compileKotlin, compileTestKotlin]*.kotlinOptions*.jvmTarget = "17"
47+
[compileKotlin, compileTestKotlin]*.kotlinOptions*.jvmTarget = "21"
4848

4949
repositories {
5050
mavenCentral()
@@ -79,7 +79,7 @@ allprojects { ->
7979
}
8080
}
8181

82-
tasks.withType(Jar).all {
82+
tasks.withType(Jar).configureEach {
8383
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
8484
}
8585
}

common-client/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,4 @@ dependencies {
1111
api "org.springframework.shell:spring-shell-starter"
1212

1313
api "org.jetbrains:annotations:$jetbrainsAnnotationsVersion"
14-
}
14+
}

common-client/src/main/java/ru/romanow/protocols/common/client/CommonAutoConfiguration.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ import ru.romanow.protocols.common.client.properties.ServiceUrlProperties
88
@AutoConfiguration
99
@ComponentScan("ru.romanow.protocols.common.client")
1010
@EnableConfigurationProperties(ServiceUrlProperties::class)
11-
class CommonAutoConfiguration
11+
class CommonAutoConfiguration

common-client/src/main/java/ru/romanow/protocols/common/client/commands/ServerCommand.kt

+2-4
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,7 @@ import org.springframework.stereotype.Component
1111
import ru.romanow.protocols.common.client.service.ServerClient
1212

1313
@ShellComponent
14-
class ServerCommand(
15-
private val serverClient: ServerClient
16-
) {
14+
class ServerCommand(private val serverClient: ServerClient) {
1715
private val logger = LoggerFactory.getLogger(ServerCommand::class.java)
1816

1917
@ShellMethod(key = ["create"], value = "Create server", prefix = "-")
@@ -73,4 +71,4 @@ class ServerTypeProvider : ValueProvider {
7371
override fun complete(completionContext: CompletionContext): List<CompletionProposal> {
7472
return listOf("DATABASE", "BACKEND", "FRONTEND").map { CompletionProposal(it) }
7573
}
76-
}
74+
}

common-client/src/main/java/ru/romanow/protocols/common/client/properties/ServiceUrlProperties.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ import org.springframework.boot.context.properties.ConfigurationProperties
55
@ConfigurationProperties("application.services")
66
data class ServiceUrlProperties(
77
val serverUrl: String
8-
)
8+
)

common-client/src/main/java/ru/romanow/protocols/common/client/service/ServerClient.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ interface ServerClient {
77
fun findInCity(city: String): String
88
fun update(id: Int, purpose: String?, latency: Int?, bandwidth: Int?, city: String?, country: String?): String
99
fun delete(id: Int)
10-
}
10+
}

common-client/src/main/resources/META-INF/additional-spring-configuration-metadata.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@
1313
"description": "Server url."
1414
}
1515
]
16-
}
16+
}
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
ru.romanow.protocols.common.client.CommonAutoConfiguration
1+
ru.romanow.protocols.common.client.CommonAutoConfiguration
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
application:
22
services:
3-
server-url: http://localhost:8080
3+
server-url: http://localhost:8080

common-server/build.gradle

+3-2
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@ dependencies {
77
api project(":api")
88

99
api "org.springframework.boot:spring-boot-starter-data-jpa"
10+
api "org.springframework.boot:spring-boot-starter-actuator"
1011
api "org.springframework.boot:spring-boot-starter-logging"
1112

1213
api "org.postgresql:postgresql"
13-
api "org.flywaydb:flyway-core"
14+
api "org.flywaydb:flyway-database-postgresql"
1415

1516
api "org.jetbrains:annotations:$jetbrainsAnnotationsVersion"
16-
}
17+
}

common-server/src/main/java/ru/romanow/protocols/common/server/CommonAutoConfiguration.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,4 @@ import org.springframework.data.jpa.repository.config.EnableJpaRepositories
99
@ComponentScan("ru.romanow.protocols.common.server")
1010
@EntityScan("ru.romanow.protocols.common.server.domain")
1111
@EnableJpaRepositories("ru.romanow.protocols.common.server.repository")
12-
class CommonAutoConfiguration
12+
class CommonAutoConfiguration

common-server/src/main/java/ru/romanow/protocols/common/server/domain/Server.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,4 +55,4 @@ data class Server(
5555
override fun toString(): String {
5656
return "Server(id=$id, purpose=$purpose, latency=$latency, bandwidth=$bandwidth)"
5757
}
58-
}
58+
}

common-server/src/main/java/ru/romanow/protocols/common/server/domain/State.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,4 +47,4 @@ data class State(
4747
override fun toString(): String {
4848
return "State(id=$id, city=$city, country=$country)"
4949
}
50-
}
50+
}

common-server/src/main/java/ru/romanow/protocols/common/server/repository/ServerRepository.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,4 @@ interface ServerRepository : JpaRepository<Server, Int> {
99

1010
@Query("select s from Server s where s.state.city = :city")
1111
fun findInCity(@Param("city") city: String): List<Server>
12-
}
12+
}

common-server/src/main/java/ru/romanow/protocols/common/server/service/ServerService.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@ interface ServerService {
1010
fun create(request: CreateServerRequest): ServerResponse
1111
fun delete(id: Int)
1212
fun update(id: Int, request: CreateServerRequest): ServerResponse
13-
}
13+
}

common-server/src/main/java/ru/romanow/protocols/common/server/service/ServerServiceImpl.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -76,4 +76,4 @@ class ServerServiceImpl(
7676
country = server.state?.country
7777
)
7878
)
79-
}
79+
}
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
ru.romanow.protocols.common.server.CommonAutoConfiguration
1+
ru.romanow.protocols.common.server.CommonAutoConfiguration

common-server/src/main/resources/db/migration/V100__CreateServerAndStateTables.sql

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,4 @@ CREATE TABLE servers
1616
CONSTRAINT fk_servers_state_id REFERENCES states (id)
1717
);
1818

19-
CREATE INDEX idx_servers_state_id ON servers (state_id);
19+
CREATE INDEX idx_servers_state_id ON servers (state_id);

common-server/src/main/resources/db/migration/V200__InsertStatesAndServers.sql

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ INSERT INTO servers (bandwidth, latency, purpose, state_id)
77
VALUES (10000, 10, 'BACKEND', 1),
88
(5000, 5, 'DATABASE', 1),
99
(5000, 5, 'FRONTEND', 1),
10-
(5000, 5, 'BACKEND', 2);
10+
(5000, 5, 'BACKEND', 2);

docker-compose.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,4 @@ services:
1414
- "5432:5432"
1515

1616
volumes:
17-
db-data:
17+
db-data:

gradle.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
version=1.0.0
22
group=ru.romanow.protocols
3-
org.gradle.daemon=true
3+
org.gradle.daemon=true

0 commit comments

Comments
 (0)