Skip to content

Commit 89d0519

Browse files
authored
chore(deps): upgrade Micronaut to 4.2 version (tchiotludo#1615)
1 parent 0377877 commit 89d0519

Some content is hidden

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

41 files changed

+214
-182
lines changed

.github/workflows/codeql-analysis.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ jobs:
5252
- name: Set up JDK
5353
uses: actions/setup-java@v1
5454
with:
55-
java-version: 11
55+
java-version: 17
5656

5757
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
5858
# If this step fails, then you should remove it and run the build manually (see below)

.github/workflows/main.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222

2323
strategy:
2424
matrix:
25-
java: ['11']
25+
java: ['17']
2626

2727
steps:
2828
- uses: actions/checkout@v2
@@ -71,7 +71,7 @@ jobs:
7171
7272
# Shadow Jar, Tar and Zip
7373
- name: Build jars and distribution archives
74-
if: success() && matrix.java == '11'
74+
if: success() && matrix.java == '17'
7575
run: ./gradlew shadowJar distTar distZip --no-daemon
7676

7777
# Upload artifacts
@@ -83,7 +83,7 @@ jobs:
8383
8484
- name: Upload jar
8585
uses: actions/upload-artifact@v1
86-
if: success() && matrix.java == '11'
86+
if: success() && matrix.java == '17'
8787
with:
8888
name: jar
8989
path: build/libs/

Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM eclipse-temurin:11-jre
1+
FROM eclipse-temurin:17-jre
22

33
# install curl
44
RUN apt-get update && \

build.gradle

+66-54
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,27 @@
11
plugins {
22
// micronaut
33
id "com.github.johnrengelman.shadow" version "8.1.1"
4-
id "io.micronaut.application" version "3.7.10"
4+
id "io.micronaut.application" version "4.2.0"
55

66
// akhq
77
id "com.gorylenko.gradle-git-properties" version "2.4.1"
8-
id 'com.adarshr.test-logger' version '3.2.0'
9-
id 'org.gradle.test-retry' version '1.5.3'
8+
id 'com.adarshr.test-logger' version '4.0.0'
9+
id 'org.gradle.test-retry' version '1.5.6'
1010
id 'com.github.psxpaul.execfork' version '0.2.2'
11-
id "com.github.ben-manes.versions" version "0.47.0"
12-
id "com.github.davidmc24.gradle.plugin.avro" version "1.7.1"
13-
11+
id "com.github.ben-manes.versions" version "0.49.0"
12+
id "com.github.davidmc24.gradle.plugin.avro" version "1.9.1"
1413
// idea
1514
id "org.jetbrains.gradle.plugin.idea-ext" version "1.1.7"
1615
}
17-
16+
java {
17+
sourceCompatibility = JavaVersion.toVersion("17")
18+
targetCompatibility = JavaVersion.toVersion("17")
19+
}
20+
application {
21+
mainClass.set("org.akhq.App")
22+
}
1823
group "org.akhq"
1924
version "0.24.0"
20-
mainClassName = "org.akhq.App"
21-
sourceCompatibility = 11
2225

2326
repositories {
2427
mavenLocal()
@@ -41,9 +44,6 @@ configurations.all {
4144
force("org.apache.kafka:kafka-server-common:" + kafkaVersion)
4245
force("org.apache.kafka:kafka_" + kafkaScalaVersion + ":" + kafkaVersion)
4346

44-
force("org.slf4j:slf4j-api:1.7.32")
45-
force("org.slf4j:jul-to-slf4j:1.7.32")
46-
force("org.slf4j:log4j-over-slf4j:1.7.32")
4747
force("com.google.protobuf:protobuf-java:3.22.2")
4848
}
4949
}
@@ -75,29 +75,33 @@ micronaut {
7575
**********************************************************************************************************************/
7676
dependencies {
7777
// lombok
78-
annotationProcessor "org.projectlombok:lombok:" + lombokVersion
79-
compileOnly 'org.projectlombok:lombok:' + lombokVersion
78+
annotationProcessor("org.projectlombok:lombok:" + lombokVersion)
79+
compileOnly("org.projectlombok:lombok:" + lombokVersion)
8080

8181
// micronaut
82-
annotationProcessor "io.micronaut:micronaut-inject-java"
83-
annotationProcessor "io.micronaut:micronaut-validation"
84-
annotationProcessor 'io.micronaut.openapi:micronaut-openapi'
85-
implementation "io.micronaut:micronaut-inject"
86-
implementation "io.micronaut:micronaut-validation"
87-
implementation "io.micronaut:micronaut-runtime"
88-
implementation "io.micronaut:micronaut-http-server-netty"
89-
implementation "io.swagger.core.v3:swagger-annotations"
90-
runtimeOnly 'ch.qos.logback:logback-classic'
91-
implementation "io.micronaut.security:micronaut-security-annotations"
92-
implementation "io.micronaut.security:micronaut-security-jwt"
93-
implementation "io.micronaut.security:micronaut-security-ldap"
94-
implementation "io.micronaut.security:micronaut-security-oauth2"
95-
implementation "io.micronaut:micronaut-management"
96-
implementation 'io.micronaut.micrometer:micronaut-micrometer-registry-prometheus'
97-
implementation "io.micronaut.cache:micronaut-cache-core"
98-
99-
implementation "io.micronaut.rxjava2:micronaut-rxjava2"
100-
implementation "io.micronaut.rxjava2:micronaut-rxjava2-http-server-netty"
82+
annotationProcessor("io.micronaut:micronaut-inject-java")
83+
annotationProcessor("io.micronaut.validation:micronaut-validation-processor")
84+
annotationProcessor("io.micronaut.openapi:micronaut-openapi")
85+
implementation("io.micronaut:micronaut-inject")
86+
implementation("io.micronaut:micronaut-runtime")
87+
implementation("io.micronaut.validation:micronaut-validation")
88+
implementation("io.micronaut:micronaut-http-client")
89+
implementation("io.micronaut:micronaut-http-server-netty")
90+
implementation("io.micronaut:micronaut-jackson-databind")
91+
implementation("io.swagger.core.v3:swagger-annotations")
92+
runtimeOnly("ch.qos.logback:logback-classic")
93+
runtimeOnly("org.yaml:snakeyaml")
94+
implementation("io.micronaut.security:micronaut-security-annotations")
95+
implementation("io.micronaut.security:micronaut-security-jwt")
96+
implementation("io.micronaut.security:micronaut-security-ldap")
97+
implementation("io.micronaut.security:micronaut-security-oauth2")
98+
implementation("io.micronaut:micronaut-management")
99+
implementation("io.micronaut:micronaut-retry")
100+
implementation("io.micronaut.micrometer:micronaut-micrometer-registry-prometheus")
101+
implementation("io.micronaut.cache:micronaut-cache-core")
102+
103+
implementation("io.micronaut.rxjava2:micronaut-rxjava2")
104+
implementation("io.micronaut.rxjava2:micronaut-rxjava2-http-server-netty")
101105

102106
// kafka
103107
implementation group: "org.apache.kafka", name: "kafka_" + kafkaScalaVersion, version: kafkaVersion
@@ -109,11 +113,11 @@ dependencies {
109113
implementation group: "io.confluent", name: "kafka-json-schema-serializer", version: confluentVersion
110114
implementation group: "io.confluent", name: "kafka-protobuf-serializer", version: confluentVersion
111115
implementation group: "io.confluent", name: "kafka-client-plugins", version: confluentVersion + "-ce"
112-
implementation 'org.sourcelab:kafka-connect-client:4.0.3'
116+
implementation ("org.sourcelab:kafka-connect-client:4.0.3")
113117

114118
// strimzi
115-
implementation group: 'io.strimzi', name: 'kafka-oauth-common', version: '0.13.0'
116-
implementation group: 'io.strimzi', name: 'kafka-oauth-client', version: '0.13.0'
119+
implementation group: 'io.strimzi', name: 'kafka-oauth-common', version: '0.14.0'
120+
implementation group: 'io.strimzi', name: 'kafka-oauth-client', version: '0.14.0'
117121

118122
// log
119123
implementation group: 'org.slf4j', name: 'slf4j-api', version: '2.0.0-alpha5'
@@ -122,33 +126,33 @@ dependencies {
122126

123127
// utils
124128
implementation group: 'org.codehaus.httpcache4j.uribuilder', name: 'uribuilder', version: '2.0.0'
125-
implementation 'com.google.guava:guava:32.0.1-jre'
129+
implementation 'com.google.guava:guava:32.1.3-jre'
126130
implementation 'com.google.code.gson:gson:2.10.1'
127131
implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jdk8'
128132

129133
// avro
130-
implementation 'org.apache.avro:avro:1.11.1'
134+
implementation 'org.apache.avro:avro:1.11.0'
131135

132136
// jackson-module-scala
133137
implementation group: 'com.fasterxml.jackson.module', name: 'jackson-module-scala_2.13', version: '2.13.4'
134138

135139
// protobuf
136-
implementation group: "com.google.protobuf", name: "protobuf-java", version: '3.22.2'
137-
implementation group: "com.google.protobuf", name: "protobuf-java-util", version: '3.22.2'
140+
implementation group: "com.google.protobuf", name: "protobuf-java", version: '3.25.0'
141+
implementation group: "com.google.protobuf", name: "protobuf-java-util", version: '3.25.0'
138142

139143
// Password hashing
140144
implementation group: "org.mindrot", name: "jbcrypt", version: "0.4"
141145

142-
implementation group: 'org.codehaus.groovy', name: 'groovy-all', version: '3.0.17'
146+
implementation group: 'org.apache.groovy', name: 'groovy-all', version: '4.0.15'
143147
// api
144148

145149
// client
146150
implementation project(":client")
147151

148152
//AWS MSK IAM Auth
149-
implementation group: 'software.amazon.msk', name: 'aws-msk-iam-auth', version: '1.1.7'
153+
implementation group: 'software.amazon.msk', name: 'aws-msk-iam-auth', version: '2.0.0'
150154

151-
implementation group: 'io.projectreactor', name: 'reactor-core', version: '3.5.3'
155+
implementation group: 'io.projectreactor', name: 'reactor-core', version: '3.5.11'
152156
}
153157

154158
/**********************************************************************************************************************\
@@ -165,22 +169,34 @@ test {
165169
maxRetries = 5
166170
maxFailures = 15
167171
}
172+
173+
retry {
174+
maxRetries = 5
175+
maxFailures = 15
176+
}
168177
}
169178

170179
dependencies {
171-
testImplementation 'ch.qos.logback:logback-classic:1.2.9'
180+
testImplementation 'ch.qos.logback:logback-classic'
172181

173182
// micronaut test
174183
testAnnotationProcessor "org.projectlombok:lombok:" + lombokVersion
175184
testCompileOnly 'org.projectlombok:lombok:' + lombokVersion
176185

177186
testAnnotationProcessor "io.micronaut:micronaut-inject-java"
178-
testImplementation "io.micronaut.test:micronaut-test-junit5"
179-
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine"
180-
testImplementation "org.junit.jupiter:junit-jupiter-api"
181-
testImplementation "org.junit.jupiter:junit-jupiter-params"
182-
testImplementation "io.micronaut:micronaut-http-client"
183-
testImplementation "io.micronaut.rxjava2:micronaut-rxjava2-http-client"
187+
188+
testImplementation("org.junit.jupiter:junit-jupiter-api")
189+
testImplementation("io.micronaut.test:micronaut-test-junit5")
190+
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
191+
testImplementation("org.junit.jupiter:junit-jupiter-engine")
192+
testImplementation ("org.junit.jupiter:junit-jupiter-params")
193+
194+
testImplementation ("io.micronaut:micronaut-http-client")
195+
testImplementation ("io.micronaut:micronaut-runtime")
196+
testImplementation ("io.micronaut:micronaut-management")
197+
testImplementation ("io.micronaut:micronaut-inject")
198+
testImplementation ("io.micronaut.rxjava2:micronaut-rxjava2-http-client")
199+
testImplementation("io.micronaut.test:micronaut-test-rest-assured")
184200

185201
// test
186202
testImplementation "org.apache.kafka:kafka-clients:" + kafkaVersion + ":test"
@@ -200,10 +216,6 @@ dependencies {
200216
testImplementation 'org.hamcrest:hamcrest-library:2.2'
201217
testImplementation 'org.mockito:mockito-junit-jupiter:5.4.0'
202218
testImplementation 'com.salesforce.kafka.test:kafka-junit5:3.2.5'
203-
testImplementation 'com.fasterxml.jackson.core:jackson-core:'
204-
testImplementation 'com.fasterxml.jackson.core:jackson-annotations'
205-
testImplementation 'com.fasterxml.jackson.core:jackson-databind'
206-
testImplementation 'org.codehaus.jackson:jackson-mapper-lgpl:1.9.11'
207219
}
208220

209221
testlogger {

docs/docs/dev.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ see [Kafka Getting started guide](https://kafka.apache.org/quickstart). In the n
5050
git clone https://github.com/tchiotludo/akhq.git
5151
```
5252

53-
Open the checked out directory in IntelliJ IDEA. The current version (0.16.0) of AKHQ is built with Java 11. If you
54-
don't have OpenJDK 11 installed already, do the following in IntelliJ IDEA:
53+
Open the checked out directory in IntelliJ IDEA. The current version (0.25.0) of AKHQ is built with Java 17. If you
54+
don't have OpenJDK 17 installed already, do the following in IntelliJ IDEA:
5555
* _File > Project Structure... > Platform Settings >
5656
SDKs > + > Download JDK... >_ select a vendor of your choice (but make sure it's version 11)
5757
* download + install. Make sure

docs/docs/installation.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ docker run -d \
1717

1818

1919
### Stand Alone
20-
* Install Java 11
20+
* Install Java 17
2121
* Download the latest jar on [release page](https://github.com/tchiotludo/akhq/releases)
2222
* Create a [configuration file](./configuration/README.md)
2323
* Launch the application with `java -Dmicronaut.config.files=/path/to/application.yml -jar akhq.jar`

gradle.properties

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
micronautVersion=3.9.4
2-
confluentVersion=7.4.1
3-
kafkaVersion=3.5.1
1+
micronautVersion=4.2.0
2+
confluentVersion=7.4.2
3+
kafkaVersion=3.6.0
44
kafkaScalaVersion=2.13
5-
lombokVersion=1.18.28
5+
lombokVersion=1.18.30

gradle/wrapper/gradle-wrapper.jar

468 Bytes
Binary file not shown.
+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.1.1-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
44
networkTimeout=10000
55
zipStoreBase=GRADLE_USER_HOME
66
zipStorePath=wrapper/dists

gradlew

+4-3
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,6 @@ done
8585
APP_BASE_NAME=${0##*/}
8686
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
8787

88-
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
89-
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
90-
9188
# Use the maximum available, or set MAX_FD != -1 to use that value.
9289
MAX_FD=maximum
9390

@@ -197,6 +194,10 @@ if "$cygwin" || "$msys" ; then
197194
done
198195
fi
199196

197+
198+
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
199+
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
200+
200201
# Collect all arguments for the java command;
201202
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
202203
# shell script including quotes and variable substitutions, so put them in

src/main/java/org/akhq/configs/security/BasicAuth.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@
1010

1111
@Data
1212
public class BasicAuth {
13-
String username;
14-
String password;
15-
PasswordHash passwordHash = PasswordHash.SHA256;
16-
List<String> groups = new ArrayList<>();
13+
private String username;
14+
private String password;
15+
private PasswordHash passwordHash = PasswordHash.SHA256;
16+
private List<String> groups = new ArrayList<>();
1717

1818
@SuppressWarnings("UnstableApiUsage")
1919
public boolean isValidPassword(String password) {

src/main/java/org/akhq/configs/security/JwtSecurityWarning.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import io.micronaut.context.annotation.Value;
55
import lombok.extern.slf4j.Slf4j;
66

7-
import javax.annotation.PostConstruct;
7+
import jakarta.annotation.PostConstruct;
88
import jakarta.inject.Inject;
99
import jakarta.inject.Singleton;
1010

@@ -14,7 +14,7 @@
1414
@Slf4j
1515
@Context
1616
public class JwtSecurityWarning {
17-
protected static String DEFAULT = "pleasechangeme!pleasechangeme!pleasechangeme!pleasechangeme!" +
17+
private static final String DEFAULT = "pleasechangeme!pleasechangeme!pleasechangeme!pleasechangeme!" +
1818
"pleasechangeme!pleasechangeme!pleasechangeme!pleasechangeme!pleasechangeme!pleasechangeme!" +
1919
"pleasechangeme!pleasechangeme!pleasechangeme!pleasechangeme!pleasechangeme!pleasechangeme!";
2020

@@ -29,13 +29,13 @@ public class JwtSecurityWarning {
2929

3030
@PostConstruct
3131
public void start() {
32-
if (enabled && secret.equals(DEFAULT)) {
32+
if (Boolean.TRUE.equals(enabled) && secret.equals(DEFAULT)) {
3333
logSecurityWarning(() -> {
3434
log.warn("You still use the default jwt secret.");
3535
log.warn("This known secret can be used to impersonate anyone.");
3636
log.warn("Please change 'micronaut.security.token.jwt.signatures.secret.generator.secret' configuration, or ask your administrator to do it !");
3737
});
38-
} else if (!enabled && securityProperties.getGroups() != null && !securityProperties.getGroups().isEmpty()){
38+
} else if (Boolean.FALSE.equals(enabled) && securityProperties.getGroups() != null && !securityProperties.getGroups().isEmpty()){
3939
logSecurityWarning(() -> {
4040
log.warn("You have set a security group config but did not set the jwt secret.");
4141
log.warn("This means that the API request will not be checked against the security group config.");

src/main/java/org/akhq/controllers/AkhqController.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ public AuthDefinition auths() {
109109
if (applicationContext.containsBean(SecurityService.class)) {
110110
authDefinition.loginEnabled = true;
111111
// Display login form if there are LocalUsers OR Ldap is enabled
112-
authDefinition.formEnabled = securityProperties.getBasicAuth().size() > 0 ||
112+
authDefinition.formEnabled = !securityProperties.getBasicAuth().isEmpty() ||
113113
applicationContext.containsBean(LdapConfiguration.class);
114114

115115
if (!authDefinition.formEnabled &&

src/main/java/org/akhq/controllers/NodeController.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.akhq.controllers;
22

33
import io.micronaut.core.annotation.Introspected;
4+
import io.micronaut.http.annotation.Body;
45
import io.micronaut.http.annotation.Controller;
56
import io.micronaut.http.annotation.Get;
67
import io.micronaut.http.annotation.Post;
@@ -129,7 +130,7 @@ public List<Config> nodeConfig(String cluster, Integer nodeId) throws ExecutionE
129130
@AKHQSecured(resource = Role.Resource.NODE, action = Role.Action.ALTER_CONFIG)
130131
@Post("api/{cluster}/node/{nodeId}/configs")
131132
@Operation(tags = {"node"}, summary = "Update configs for a node")
132-
public List<Config> nodeConfigUpdate(String cluster, Integer nodeId, Map<String, String> configs) throws ExecutionException, InterruptedException {
133+
public List<Config> nodeConfigUpdate(String cluster, Integer nodeId, @Body Map<String, String> configs) throws ExecutionException, InterruptedException {
133134
checkIfClusterAndResourceAllowed(cluster, nodeId.toString());
134135

135136
List<Config> updated = ConfigRepository.updatedConfigs(configs, this.configRepository.findByBroker(cluster, nodeId), false);

0 commit comments

Comments
 (0)