[Java-Spring] Enable bean validation for spring-http-interface when configured#23609
[Java-Spring] Enable bean validation for spring-http-interface when configured#23609thiswasdumb wants to merge 5 commits intoOpenAPITools:masterfrom
spring-http-interface when configured#23609Conversation
…ted for objects containing required fields
useBeanValidation Is Set to True When Expectedspring-http-interface when configured
|
I'd feel bad pinging because it is such a small change... I just saw the issue and wanted to give a go at addressing it honestly. |
|
thanks for the PR please follow step 3 to update the samples to address https://github.com/OpenAPITools/openapi-generator/actions/runs/24862461150/job/72791337954?pr=23609 |
Yep sorry I had like 176 files edited when I compiled so I thought I was definitely not doing it right. Was gonna take a look at the errors in the pipeline to know wha to upload, will do this when I get home. Thank you so much for the link!! |
|
Added the samples now 👍 |
|
please review the build failure when you've time. |
Co-authored-by: Copilot <copilot@github.com>
There was a problem hiding this comment.
1 issue found across 1 file (changes from recent commits).
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java">
<violation number="1" location="modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java:433">
P2: Post-super `containsKey` check can misclassify defaulted `useBeanValidation` as user-specified, preventing intended spring-http-interface defaults.</violation>
</file>
Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.
Co-authored-by: Copilot <copilot@github.com>
|
I am having issues with |
There was a problem hiding this comment.
1 issue found across 1 file (changes from recent commits).
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java">
<violation number="1" location="modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java:436">
P1: Null-unsafe parsing of bean-validation options can throw NPE when properties are not present in additionalProperties.</violation>
</file>
Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.
|
|
||
| if (configOptions.stream().noneMatch(opt -> USE_BEANVALIDATION.equals(opt.getLeft()))) { | ||
| Object val = additionalProperties.get(USE_BEANVALIDATION); | ||
| useBeanValidation = val instanceof Boolean ? (Boolean) val : Boolean.parseBoolean(val.toString()); |
There was a problem hiding this comment.
P1: Null-unsafe parsing of bean-validation options can throw NPE when properties are not present in additionalProperties.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java, line 436:
<comment>Null-unsafe parsing of bean-validation options can throw NPE when properties are not present in additionalProperties.</comment>
<file context>
@@ -430,25 +430,14 @@ public void processOpts() {
+
+ if (configOptions.stream().noneMatch(opt -> USE_BEANVALIDATION.equals(opt.getLeft()))) {
+ Object val = additionalProperties.get(USE_BEANVALIDATION);
+ useBeanValidation = val instanceof Boolean ? (Boolean) val : Boolean.parseBoolean(val.toString());
}
- if (!additionalProperties.containsKey(PERFORM_BEANVALIDATION)) {
</file context>
Description
The current logic for spring-http-interface always sets
useBeanValidationandperformBeanValidationto false, which serves problematic when fields are expected to not be nullable. This ensures that if they are set to true, the generated classes contain the@NotNullgeneration alongside those variables.This MR will fix #23585
Changes
modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.javaI removed the logic which always sets them to false and follows through with setting them based on their expected value.modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.javatests to ensure the file is generated as expectedPR checklist
Commit all changed files.
This is important, as CI jobs will verify all generator outputs of your HEAD commit as it would merge with master.
These must match the expectations made by your contribution.
You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example
./bin/generate-samples.sh bin/configs/java*.IMPORTANT: Do NOT purge/delete any folders/files (e.g. tests) when regenerating the samples as manually written tests may be removed.
master(upcoming7.x.0minor release - breaking changes with fallbacks),8.0.x(breaking changes without fallbacks)"fixes #123"present in the PR description)Summary by cubic
Enable bean validation in
spring-http-interfacewhenuseBeanValidationandperformBeanValidationare enabled. Generates@NotNullfor required fields and applies@Validto collection elements and request body lists. Fixes #23585.useBeanValidation/performBeanValidationinstead of forcingfalse; parse boolean or string values and default tofalsewhen unset; removed forcedwritePropertyBack(USE_BEANVALIDATION, false).documentationProviderandannotationLibrary; keepuseJakartaEedefaulted totrue.@NotNullgeneration when both flags are true; regenerate samples to addList<@Valid ...>and nested collection@Validacross variants.Written for commit 4888232. Summary will update on new commits. Review in cubic