implement "strictness modes" for bean validation#30
Conversation
Review Summary by Qodo
WalkthroughsDescription• Introduce StrictnessMode enum with LogWarning and ThrowError options • Replace boolean flags with strictness mode parameters in validation modules • Implement conditional validation behavior based on strictness mode setting • Add SLF4J dependency and logging for constraint violation warnings File Changes1. ocpp-jaxb/src/main/java/de/rwth/idsg/ocpp/jaxb/validation/StrictnessMode.java
|
Code Review by Qodo
1. Breaking ctor signatures
|
| private final StrictnessMode strictnessMode; | ||
|
|
||
| @Override | ||
| public ValueSerializer<?> modifySerializer(SerializationConfig config, | ||
| BeanDescription.Supplier beanDesc, | ||
| ValueSerializer<?> serializer) { | ||
| if (serializer instanceof BeanSerializerBase) { | ||
| return new BeanSerializerWithValidation((BeanSerializerBase) serializer, validator); | ||
| return new BeanSerializerWithValidation((BeanSerializerBase) serializer, validator, strictnessMode); |
There was a problem hiding this comment.
1. Breaking ctor signatures 🐞 Bug ⛯ Reliability
Public validation modifier classes now require a StrictnessMode parameter, which is a source/binary incompatible change for any consumers constructing them directly. This can break downstream builds without a clear migration path.
Agent Prompt
### Issue description
Public classes `BeanSerializerModifierWithValidation` / `BeanDeserializerModifierWithValidation` (and related wrappers) changed constructor signatures due to adding `strictnessMode` as a new final field under Lombok `@RequiredArgsConstructor`. This is a breaking change for downstream consumers who instantiate these classes directly.
### Issue Context
The library already provides `BeanValidationModule` factories for typical use, so you can either (a) keep public constructors stable via overloads/defaults, or (b) reduce surface area by making internal classes non-public and exposing stable factory APIs.
### Fix Focus Areas
- ocpp-jaxb/src/main/java/de/rwth/idsg/ocpp/jaxb/validation/BeanSerializerModifierWithValidation.java[12-27]
- ocpp-jaxb/src/main/java/de/rwth/idsg/ocpp/jaxb/validation/BeanDeserializerModifierWithValidation.java[15-30]
- ocpp-jaxb/src/main/java/de/rwth/idsg/ocpp/jaxb/validation/BeanSerializerWithValidation.java[14-39]
- ocpp-jaxb/src/main/java/de/rwth/idsg/ocpp/jaxb/validation/BeanDeserializerWithValidation.java[17-67]
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
motivation: throwing exception and interrupting operation may not always be desirable.