Skip to content

Commit d7f984a

Browse files
committed
Validate config before start
1 parent d994995 commit d7f984a

File tree

3 files changed

+23
-34
lines changed

3 files changed

+23
-34
lines changed

api/pom.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@
2929
<groupId>org.springframework.boot</groupId>
3030
<artifactId>spring-boot-starter-security</artifactId>
3131
</dependency>
32+
<dependency>
33+
<groupId>org.springframework.boot</groupId>
34+
<artifactId>spring-boot-starter-validation</artifactId>
35+
</dependency>
3236
<dependency>
3337
<groupId>org.springframework.boot</groupId>
3438
<artifactId>spring-boot-actuator</artifactId>

api/src/main/java/io/kafbat/ui/config/ClustersProperties.java

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import io.kafbat.ui.model.MetricsConfig;
44
import jakarta.annotation.PostConstruct;
5+
import jakarta.validation.Valid;
6+
import jakarta.validation.constraints.NotBlank;
57
import jakarta.validation.constraints.NotEmpty;
68
import jakarta.validation.constraints.NotNull;
79
import java.util.ArrayList;
@@ -19,13 +21,15 @@
1921
import org.springframework.boot.context.properties.ConfigurationProperties;
2022
import org.springframework.context.annotation.Configuration;
2123
import org.springframework.util.StringUtils;
24+
import org.springframework.validation.annotation.Validated;
2225

2326
@Configuration
2427
@ConfigurationProperties("kafka")
2528
@Data
29+
@Validated
2630
public class ClustersProperties {
2731

28-
List<Cluster> clusters = new ArrayList<>();
32+
List<@Valid Cluster> clusters = new ArrayList<>();
2933

3034
String internalTopicPrefix;
3135

@@ -35,9 +39,9 @@ public class ClustersProperties {
3539

3640
@Data
3741
public static class Cluster {
38-
@NotEmpty
42+
@NotBlank(message = "field name for for cluster could not be blank")
3943
String name;
40-
@NotEmpty
44+
@NotBlank(message = "field bootstrapServers for for cluster could not be blank")
4145
String bootstrapServers;
4246

4347
TruststoreConfig ssl;
@@ -50,9 +54,9 @@ public static class Cluster {
5054
KsqldbServerAuth ksqldbServerAuth;
5155
KeystoreConfig ksqldbServerSsl;
5256

53-
List<ConnectCluster> kafkaConnect;
57+
List<@Valid ConnectCluster> kafkaConnect;
5458

55-
List<SerdeConfig> serde;
59+
List<@Valid SerdeConfig> serde;
5660
String defaultKeySerde;
5761
String defaultValueSerde;
5862

@@ -62,9 +66,9 @@ public static class Cluster {
6266

6367
Long pollingThrottleRate;
6468

65-
List<Masking> masking;
69+
List<@Valid Masking> masking;
6670

67-
AuditProperties audit;
71+
@Valid AuditProperties audit;
6872
}
6973

7074
@Data
@@ -92,7 +96,9 @@ public static class MetricsConfigData {
9296
@Builder(toBuilder = true)
9397
@ToString(exclude = {"password", "keystorePassword"})
9498
public static class ConnectCluster {
99+
@NotBlank
95100
String name;
101+
@NotBlank
96102
String address;
97103
String username;
98104
String password;
@@ -126,8 +132,11 @@ public static class KeystoreConfig {
126132

127133
@Data
128134
public static class SerdeConfig {
135+
@NotBlank
129136
String name;
137+
@NotBlank
130138
String className;
139+
@NotBlank
131140
String filePath;
132141
Map<String, Object> properties;
133142
String topicKeysPattern;
@@ -143,6 +152,7 @@ public static class KsqldbServerAuth {
143152

144153
@Data
145154
public static class Masking {
155+
@NotNull
146156
Type type;
147157
List<String> fields;
148158
String fieldsNamePattern;
@@ -160,10 +170,12 @@ public enum Type {
160170
@NoArgsConstructor
161171
@AllArgsConstructor
162172
public static class AuditProperties {
173+
@NotBlank
163174
String topic;
164175
Integer auditTopicsPartitions;
165176
Boolean topicAuditEnabled;
166177
Boolean consoleAuditEnabled;
178+
@NotNull
167179
LogLevel level;
168180
Map<String, String> auditTopicProperties;
169181

api/src/test/java/io/kafbat/ui/ConfigurationTests.java

Lines changed: 0 additions & 27 deletions
This file was deleted.

0 commit comments

Comments
 (0)