Skip to content

Commit c5cdabb

Browse files
Fix/collection of valid mapped schemas (#632)
* [version bump] new dev version * Put @Valid at the valid spot when using FQN; Add tests to prevent regression. * Override equals and hashCode * Fix pojo field validation annotations (Issue 633) * Address comment * Add NotNull annotation on required pojo fields. * Add @Valid to pojo fields to ensure validation of embedded objects * Do not initialise optional objects; Add @NotNull on required containers ;fixing the unit test to actually test. * Roll back 'setting default to null' and use 'containerDefaultToNull' option instead. * Fix initiation of required 'additionalProperties' map * List fixes in readme. --------- Co-authored-by: GitHub Actions <actions@github.com>
1 parent 898d9d0 commit c5cdabb

12 files changed

Lines changed: 582 additions & 30 deletions

File tree

README.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,12 @@ It currently consists of
1515

1616
# Release Notes
1717
BOAT is still under development and subject to change.
18-
18+
## 0.17.18
19+
* boat-spring
20+
* Fix [Regression on putting valid annotation on FQCN,https://github.com/Backbase/backbase-openapi-tools/issues/619]
21+
* Fix [Broken pojo field validations, https://github.com/Backbase/backbase-openapi-tools/issues/633]
22+
* Fix Add `@NotNull` for required properties.
23+
* Fix initiation of `required` property that has `additionalProperties` (generated as Map) when using `containerDefaultToNull=true`
1924
## 0.17.17
2025
* Fix [`createApiComponent` option in springtemplate generator is ignored](https://github.com/Backbase/backbase-openapi-tools/issues/630)
2126
## 0.17.16

boat-scaffold/src/main/java/com/backbase/oss/codegen/java/BoatSpringCodeGen.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -214,11 +214,11 @@ public BoatSpringCodeGen() {
214214
public CodegenParameter fromParameter(Parameter parameter, Set<String> imports) {
215215
CodegenParameter codegenParameter = super.fromParameter(parameter, imports);
216216
if (!isListOrSet(codegenParameter)) {
217-
return codegenParameter;
217+
return new BoatSpringCodegenParameter(codegenParameter);
218218
} else {
219219
codegenParameter.datatypeWithEnum = replaceBeanValidationCollectionType(codegenParameter.items, codegenParameter.datatypeWithEnum);
220220
codegenParameter.dataType = replaceBeanValidationCollectionType(codegenParameter.items, codegenParameter.dataType);
221-
return codegenParameter;
221+
return new BoatSpringCodegenParameter(codegenParameter);
222222
}
223223
}
224224

@@ -229,11 +229,11 @@ public CodegenParameter fromParameter(Parameter parameter, Set<String> imports)
229229
public CodegenProperty fromProperty(String name, Schema p, boolean required, boolean schemaIsFromAdditionalProperties) {
230230
CodegenProperty codegenProperty = super.fromProperty(name, p, required, schemaIsFromAdditionalProperties);
231231
if (!isListOrSet(codegenProperty)) {
232-
return codegenProperty;
232+
return new BoatSpringCodegenProperty(codegenProperty);
233233
} else {
234234
codegenProperty.datatypeWithEnum = replaceBeanValidationCollectionType(codegenProperty.items, codegenProperty.datatypeWithEnum);
235235
codegenProperty.dataType = replaceBeanValidationCollectionType(codegenProperty.items, codegenProperty.dataType);
236-
return codegenProperty;
236+
return new BoatSpringCodegenProperty(codegenProperty);
237237
}
238238
}
239239

Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
package com.backbase.oss.codegen.java;
2+
3+
import lombok.Getter;
4+
import org.apache.commons.lang3.StringUtils;
5+
import org.openapitools.codegen.CodegenParameter;
6+
7+
import java.util.Objects;
8+
9+
public class BoatSpringCodegenParameter extends CodegenParameter {
10+
11+
@Getter
12+
public String packageName;
13+
@Getter
14+
public String simpleName;
15+
16+
public BoatSpringCodegenParameter(CodegenParameter codegenParameter) {
17+
super();
18+
super.isFormParam = codegenParameter.isFormParam;
19+
super.isQueryParam = codegenParameter.isQueryParam;
20+
super.isPathParam = codegenParameter.isPathParam;
21+
super.isHeaderParam = codegenParameter.isHeaderParam;
22+
super.isCookieParam = codegenParameter.isCookieParam;
23+
super.isBodyParam = codegenParameter.isBodyParam;
24+
super.isContainer = codegenParameter.isContainer;
25+
super.isCollectionFormatMulti = codegenParameter.isCollectionFormatMulti;
26+
super.isPrimitiveType = codegenParameter.isPrimitiveType;
27+
super.isModel = codegenParameter.isModel;
28+
super.isExplode = codegenParameter.isExplode;
29+
super.isDeepObject = codegenParameter.isDeepObject;
30+
super.isAllowEmptyValue = codegenParameter.isAllowEmptyValue;
31+
super.baseName = codegenParameter.baseName;
32+
super.paramName = codegenParameter.paramName;
33+
super.dataType = codegenParameter.dataType;
34+
super.datatypeWithEnum = codegenParameter.datatypeWithEnum;
35+
super.dataFormat = codegenParameter.dataFormat;
36+
super.contentType = codegenParameter.contentType;
37+
super.collectionFormat = codegenParameter.collectionFormat;
38+
super.description = codegenParameter.description;
39+
super.unescapedDescription = codegenParameter.unescapedDescription;
40+
super.baseType = codegenParameter.baseType;
41+
super.defaultValue = codegenParameter.defaultValue;
42+
super.enumDefaultValue = codegenParameter.enumDefaultValue;
43+
super.enumName = codegenParameter.enumName;
44+
super.style = codegenParameter.style;
45+
super.nameInLowerCase = codegenParameter.nameInLowerCase;
46+
super.example = codegenParameter.example;
47+
super.jsonSchema = codegenParameter.jsonSchema;
48+
super.isString = codegenParameter.isString;
49+
super.isNumeric = codegenParameter.isNumeric;
50+
super.isInteger = codegenParameter.isInteger;
51+
super.isLong = codegenParameter.isLong;
52+
super.isNumber = codegenParameter.isNumber;
53+
super.isFloat = codegenParameter.isFloat;
54+
super.isDouble = codegenParameter.isDouble;
55+
super.isDecimal = codegenParameter.isDecimal;
56+
super.isByteArray = codegenParameter.isByteArray;
57+
super.isBinary = codegenParameter.isBinary;
58+
super.isBoolean = codegenParameter.isBoolean;
59+
super.isDate = codegenParameter.isDate;
60+
super.isDateTime = codegenParameter.isDateTime;
61+
super.isUuid = codegenParameter.isUuid;
62+
super.isUri = codegenParameter.isUri;
63+
super.isEmail = codegenParameter.isEmail;
64+
super.isPassword = codegenParameter.isPassword;
65+
super.isFreeFormObject = codegenParameter.isFreeFormObject;
66+
super.isAnyType = codegenParameter.isAnyType;
67+
super.isShort = codegenParameter.isShort;
68+
super.isUnboundedInteger = codegenParameter.isUnboundedInteger;
69+
super.isArray = codegenParameter.isArray;
70+
super.isMap = codegenParameter.isMap;
71+
super.isFile = codegenParameter.isFile;
72+
super.isEnum = codegenParameter.isEnum;
73+
super.isEnumRef = codegenParameter.isEnumRef;
74+
super._enum = codegenParameter._enum;
75+
super.allowableValues = codegenParameter.allowableValues;
76+
super.items = codegenParameter.items;
77+
super.additionalProperties = codegenParameter.additionalProperties;
78+
super.vars = codegenParameter.vars;
79+
super.requiredVars = codegenParameter.requiredVars;
80+
super.mostInnerItems = codegenParameter.mostInnerItems;
81+
super.vendorExtensions = codegenParameter.vendorExtensions;
82+
super.hasValidation = codegenParameter.hasValidation;
83+
super.isNullable = codegenParameter.isNullable;
84+
super.isDeprecated = codegenParameter.isDeprecated;
85+
super.required = codegenParameter.required;
86+
super.maximum = codegenParameter.maximum;
87+
super.exclusiveMaximum = codegenParameter.exclusiveMaximum;
88+
super.minimum = codegenParameter.minimum;
89+
super.exclusiveMinimum = codegenParameter.exclusiveMinimum;
90+
super.maxLength = codegenParameter.maxLength;
91+
super.minLength = codegenParameter.minLength;
92+
super.pattern = codegenParameter.pattern;
93+
super.maxItems = codegenParameter.maxItems;
94+
super.minItems = codegenParameter.minItems;
95+
super.uniqueItems = codegenParameter.uniqueItems;
96+
super.multipleOf = codegenParameter.multipleOf;
97+
super.isNull = codegenParameter.isNull;
98+
super.isVoid = codegenParameter.isVoid;
99+
super.setAdditionalPropertiesIsAnyType(codegenParameter.getAdditionalPropertiesIsAnyType());
100+
super.setHasVars(codegenParameter.getHasVars());
101+
super.setSchema(codegenParameter.getSchema());
102+
super.setUniqueItemsBoolean(codegenParameter.getUniqueItemsBoolean());
103+
super.setMaxProperties(codegenParameter.getMaxProperties());
104+
super.setMinProperties(codegenParameter.getMinProperties());
105+
super.setHasRequired(codegenParameter.getHasRequired());
106+
super.setHasDiscriminatorWithNonEmptyMapping(codegenParameter.getHasDiscriminatorWithNonEmptyMapping());
107+
super.setComposedSchemas(codegenParameter.getComposedSchemas());
108+
super.setHasMultipleTypes(codegenParameter.getHasMultipleTypes());
109+
super.setContent(codegenParameter.getContent());
110+
super.setRequiredVarsMap(codegenParameter.getRequiredVarsMap());
111+
super.setRef(codegenParameter.getRef());
112+
super.setAdditionalProperties(codegenParameter.getAdditionalProperties());
113+
if (StringUtils.contains(dataType, ".")) {
114+
packageName = StringUtils.substringBeforeLast(dataType, ".") + ".";
115+
simpleName = StringUtils.substringAfterLast(dataType, ".");
116+
} else {
117+
packageName = "";
118+
simpleName = dataType;
119+
}
120+
}
121+
122+
@Override
123+
public String toString() {
124+
return new StringBuilder(super.toString())
125+
.append("packageName:'").append(packageName)
126+
.append("',simpleName:'").append(simpleName)
127+
.append("'").toString();
128+
}
129+
130+
@Override
131+
public boolean equals(Object o) {
132+
return super.equals(o) &&
133+
o instanceof BoatSpringCodegenParameter &&
134+
Objects.equals(((BoatSpringCodegenParameter)o).packageName, this.packageName) &&
135+
Objects.equals(((BoatSpringCodegenParameter)o).simpleName, this.simpleName);
136+
}
137+
138+
@Override
139+
public int hashCode() {
140+
return Objects.hash(super.hashCode(), packageName, simpleName);
141+
}
142+
}

0 commit comments

Comments
 (0)