Skip to content

Commit 9f55673

Browse files
committed
refactor
1 parent eb2f203 commit 9f55673

4 files changed

Lines changed: 30 additions & 19 deletions

File tree

ocpp-jaxb/src/main/java/de/rwth/idsg/ocpp/jaxb/validation/BeanDeserializerModifierWithValidation.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,29 @@
11
package de.rwth.idsg.ocpp.jaxb.validation;
22

3+
import lombok.RequiredArgsConstructor;
34
import tools.jackson.databind.BeanDescription.Supplier;
45
import tools.jackson.databind.DeserializationConfig;
56
import tools.jackson.databind.ValueDeserializer;
67
import tools.jackson.databind.deser.ValueDeserializerModifier;
78
import tools.jackson.databind.deser.bean.BeanDeserializer;
89

10+
import jakarta.validation.Validation;
11+
import jakarta.validation.Validator;
12+
913
/**
1014
* https://www.baeldung.com/java-object-validation-deserialization
1115
*/
16+
@RequiredArgsConstructor
1217
public class BeanDeserializerModifierWithValidation extends ValueDeserializerModifier {
1318

19+
private final Validator validator;
20+
1421
@Override
1522
public ValueDeserializer<?> modifyDeserializer(DeserializationConfig config,
1623
Supplier beanDescRef,
1724
ValueDeserializer<?> deserializer) {
1825
if (deserializer instanceof BeanDeserializer) {
19-
return new BeanDeserializerWithValidation((BeanDeserializer) deserializer);
26+
return new BeanDeserializerWithValidation((BeanDeserializer) deserializer, validator);
2027
}
2128

2229
return deserializer;

ocpp-jaxb/src/main/java/de/rwth/idsg/ocpp/jaxb/validation/BeanDeserializerWithValidation.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import tools.jackson.databind.deser.bean.BeanDeserializer;
77

88
import jakarta.validation.ConstraintViolationException;
9-
import jakarta.validation.Validation;
109
import jakarta.validation.Validator;
1110

1211
/**
@@ -16,22 +15,20 @@ public class BeanDeserializerWithValidation extends BeanDeserializer {
1615

1716
private final Validator validator;
1817

19-
public BeanDeserializerWithValidation(BeanDeserializer src) {
18+
public BeanDeserializerWithValidation(BeanDeserializer src, Validator validator) {
2019
super(src);
21-
validator = Validation.buildDefaultValidatorFactory().getValidator();
20+
this.validator = validator;
2221
}
2322

2423
@Override
2524
public Object deserialize(JsonParser p, DeserializationContext ctxt) throws JacksonException {
2625
var instance = super.deserialize(p, ctxt);
27-
validate(instance);
28-
return instance;
29-
}
3026

31-
private void validate(Object instance) {
3227
var violations = validator.validate(instance);
3328
if (!violations.isEmpty()) {
3429
throw new ConstraintViolationException(violations);
3530
}
31+
32+
return instance;
3633
}
3734
}

ocpp-jaxb/src/main/java/de/rwth/idsg/ocpp/jaxb/validation/BeanValidationModule.java

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

33
import tools.jackson.databind.module.SimpleModule;
44

5+
import jakarta.validation.Validation;
6+
import jakarta.validation.Validator;
7+
58
/**
69
* https://www.baeldung.com/java-object-validation-deserialization
710
*/
811
public class BeanValidationModule extends SimpleModule {
912

1013
public BeanValidationModule() {
11-
super();
12-
setDeserializerModifier(new BeanDeserializerModifierWithValidation());
14+
this(Validation.buildDefaultValidatorFactory().getValidator());
15+
}
16+
17+
public BeanValidationModule(Validator validator) {
18+
setDeserializerModifier(new BeanDeserializerModifierWithValidation(validator));
1319
}
1420
}

ocpp-jaxb/src/test/java/de/rwth/idsg/ocpp/jaxb/BeanValidationTest.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import ocpp.cs._2015._10.StartTransactionRequest;
55
import org.joda.time.DateTime;
66
import org.junit.jupiter.api.Assertions;
7+
import org.junit.jupiter.api.BeforeAll;
78
import org.junit.jupiter.api.Test;
89
import tools.jackson.databind.ObjectMapper;
910
import tools.jackson.databind.json.JsonMapper;
@@ -18,15 +19,19 @@
1819

1920
public class BeanValidationTest {
2021

21-
private final ObjectMapper mapper = JsonMapper.builder()
22-
.addModule(new JodaModule())
23-
.addModule(new BeanValidationModule())
24-
.build();
22+
private static ObjectMapper mapper;
23+
24+
@BeforeAll
25+
public static void setup() {
26+
mapper = JsonMapper.builder()
27+
.addModule(new JodaModule())
28+
.addModule(new BeanValidationModule())
29+
.build();
30+
}
2531

2632
@Test
2733
public void nullFieldsOcpp12() {
2834
String input = mapper.writeValueAsString(new ocpp.cs._2010._08.StartTransactionRequest());
29-
System.out.println(input);
3035

3136
var exception = assertThrows(ConstraintViolationException.class, () -> mapper.readValue(input, ocpp.cs._2010._08.StartTransactionRequest.class));
3237

@@ -37,7 +42,6 @@ public void nullFieldsOcpp12() {
3742
@Test
3843
public void nullFieldsOcpp15() {
3944
String input = mapper.writeValueAsString(new ocpp.cs._2012._06.StartTransactionRequest());
40-
System.out.println(input);
4145

4246
var exception = assertThrows(ConstraintViolationException.class, () -> mapper.readValue(input, ocpp.cs._2012._06.StartTransactionRequest.class));
4347

@@ -48,7 +52,6 @@ public void nullFieldsOcpp15() {
4852
@Test
4953
public void nullFieldsOcpp16() {
5054
String input = mapper.writeValueAsString(new ocpp.cs._2015._10.StartTransactionRequest());
51-
System.out.println(input);
5255

5356
var exception = assertThrows(ConstraintViolationException.class, () -> mapper.readValue(input, ocpp.cs._2015._10.StartTransactionRequest.class));
5457

@@ -59,7 +62,6 @@ public void nullFieldsOcpp16() {
5962
@Test
6063
public void nullFieldsOcpp16Security() {
6164
String input = mapper.writeValueAsString(new ocpp._2022._02.security.SecurityEventNotification());
62-
System.out.println(input);
6365

6466
var exception = assertThrows(ConstraintViolationException.class, () -> mapper.readValue(input, ocpp._2022._02.security.SecurityEventNotification.class));
6567

@@ -70,7 +72,6 @@ public void nullFieldsOcpp16Security() {
7072
@Test
7173
public void nullFieldsOcpp2() {
7274
String input = mapper.writeValueAsString(new ocpp._2020._03.SecurityEventNotificationRequest());
73-
System.out.println(input);
7475

7576
var exception = assertThrows(ConstraintViolationException.class, () -> mapper.readValue(input, ocpp._2020._03.SecurityEventNotificationRequest.class));
7677

0 commit comments

Comments
 (0)