@@ -38,10 +38,12 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens
3838 { {#isEnum} }
3939 { {^isContainer} }
4040{ {> modelInnerEnum} }
41+
4142 { {/isContainer} }
4243 { {#isContainer} }
4344 { {#mostInnerItems} }
4445{ {> modelInnerEnum} }
46+
4547 { {/mostInnerItems} }
4648 { {/isContainer} }
4749 { {/isEnum} }
@@ -52,49 +54,42 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens
5254 public static final String JSON_PROPERTY_{ {nameInSnakeCase} } = "{ {baseName} }";
5355 { {/jackson} }
5456 { {#withXml} }
55- { {#isXmlAttribute} }
56- @XmlAttribute(name = "{ {xmlName} }{ {^xmlName} }{ {baseName} }{ {/xmlName} }")
57- { {/isXmlAttribute} }
58- { {^isXmlAttribute} }
59- { {^isContainer} }
60- @XmlElement({ {#xmlNamespace} }namespace="{ {.} }", { {/xmlNamespace} }name = "{ {xmlName} }{ {^xmlName} }{ {baseName} }{ {/xmlName} }")
61- { {/isContainer} }
62- { {#isContainer} }
63- // Is a container wrapped={ {isXmlWrapped} }
64- { {#items} }
65- // items.name={ {name} } items.baseName={ {baseName} } items.xmlName={ {xmlName} } items.xmlNamespace={ {xmlNamespace} }
66- // items.example={ {example} } items.type={ {dataType} }
67- @XmlElement({ {#xmlNamespace} }namespace="{ {.} }", { {/xmlNamespace} }name = "{ {xmlName} }{ {^xmlName} }{ {baseName} }{ {/xmlName} }")
68- { {/items} }
69- { {#isXmlWrapped} }
70- @XmlElementWrapper({ {#xmlNamespace} }namespace="{ {.} }", { {/xmlNamespace} }name = "{ {xmlName} }{ {^xmlName} }{ {baseName} }{ {/xmlName} }")
71- { {/isXmlWrapped} }
72- { {/isContainer} }
73- { {#isDateTime} }
57+ @Xml{ {#isXmlAttribute} }Attribute{ {/isXmlAttribute} }{ {^isXmlAttribute} }Element{ {/isXmlAttribute} }(name = "{ {items.xmlName} }{ {^items.xmlName} }{ {xmlName} }{ {^xmlName} }{ {baseName} }{ {/xmlName} }{ {/items.xmlName} }"{ {#xmlNamespace} }, namespace = "{ {.} }"{ {/xmlNamespace} })
58+ { {#isXmlWrapped} }
59+ @XmlElementWrapper(name = "{ {xmlName} }{ {^xmlName} }{ {baseName} }{ {/xmlName} }"{ {#xmlNamespace} }, namespace = "{ {.} }"{ {/xmlNamespace} })
60+ { {/isXmlWrapped} }
61+ { {^isXmlAttribute} }
62+ { {#isDateTime} }
7463 @XmlJavaTypeAdapter(OffsetDateTimeXmlAdapter.class)
75- { {/isDateTime} }
76- { {/isXmlAttribute} }
64+ { {/isDateTime} }
65+ { {/isXmlAttribute} }
7766 { {/withXml} }
7867 { {#gson} }
7968 @SerializedName(SERIALIZED_NAME_{ {nameInSnakeCase} })
8069 { {/gson} }
70+ { {^isDiscriminator} }
71+ { {> nullable_var_annotations} }{ {! prevent indent} }
72+ { {/isDiscriminator} }
73+ { {#isDiscriminator} }
74+ // The discriminator does not have Nullability-annotation since it is added during serialization by the @JsonTypeName annotation
75+ { {/isDiscriminator} }
8176 { {#vendorExtensions.x-field-extra-annotation} }
8277 { {{vendorExtensions.x-field-extra-annotation} }}
8378 { {/vendorExtensions.x-field-extra-annotation} }
8479 { {#vendorExtensions.x-is-jackson-optional-nullable} }
8580 { {#isContainer} }
86- private JsonNullable<{ {{datatypeWithEnum} }}> { {name} } = JsonNullable.<{ {{datatypeWithEnum} }}>undefined();
81+ { {#hasChildren } }protected { {/hasChildren } } { {^hasChildren } } private{ {/hasChildren } } JsonNullable<{ {{datatypeWithEnum} }}> { {name} } = JsonNullable.<{ {{datatypeWithEnum} }}>undefined();
8782 { {/isContainer} }
8883 { {^isContainer} }
89- private JsonNullable<{ {{datatypeWithEnum} }}> { {name} } = JsonNullable.<{ {{datatypeWithEnum} }}>{ {#defaultValue} }of({ {{.} }}){ {/defaultValue} }{ {^defaultValue} }undefined(){ {/defaultValue} };
84+ { {#hasChildren } }protected { {/hasChildren } } { {^hasChildren } } private{ {/hasChildren } } JsonNullable<{ {{datatypeWithEnum} }}> { {name} } = JsonNullable.<{ {{datatypeWithEnum} }}>{ {#defaultValue} }of({ {{.} }}){ {/defaultValue} }{ {^defaultValue} }undefined(){ {/defaultValue} };
9085 { {/isContainer} }
9186 { {/vendorExtensions.x-is-jackson-optional-nullable} }
9287 { {^vendorExtensions.x-is-jackson-optional-nullable} }
9388 { {#isContainer} }
94- private { {{datatypeWithEnum} }} { {name} }{ {#defaultValue} } = { {{.} }}{ {/defaultValue} };
89+ { {#hasChildren } }protected { {/hasChildren } } { {^hasChildren } } private{ {/hasChildren } } { {{datatypeWithEnum} }} { {name} }{ {#defaultValue} } = { {{.} }}{ {/defaultValue} };
9590 { {/isContainer} }
9691 { {^isContainer} }
97- { {#isDiscriminator } }protected{ {/isDiscriminator } }{ {^isDiscriminator } }private{ {/isDiscriminator } } { {{datatypeWithEnum} }} { {name} }{ {#defaultValue} } = { {{.} }}{ {/defaultValue} };
92+ { {#hasChildren } }protected{ {/hasChildren } }{ {^hasChildren } }private{ {/hasChildren } } { {{datatypeWithEnum} }} { {name} }{ {#defaultValue} } = { {{.} }}{ {/defaultValue} };
9893 { {/isContainer} }
9994 { {/vendorExtensions.x-is-jackson-optional-nullable} }
10095
@@ -114,7 +109,9 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens
114109 }
115110 { {#vendorExtensions.x-has-readonly-properties} }
116111 { {^withXml} }
117-
112+ /**
113+ * Constructor with only readonly parameters{ {#generateConstructorWithAllArgs} }{ {^vendorExtensions.x-java-all-args-constructor} } and all parameters{ {/vendorExtensions.x-java-all-args-constructor} }{ {/generateConstructorWithAllArgs} }
114+ */
118115 { {#jsonb} }@JsonbCreator{ {/jsonb} }{ {#jackson} }@JsonCreator{ {/jackson} }
119116 public { {classname} }(
120117 { {#readOnlyVars} }
@@ -128,17 +125,31 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens
128125 }
129126 { {/withXml} }
130127 { {/vendorExtensions.x-has-readonly-properties} }
128+ { {#vendorExtensions.x-java-all-args-constructor} }
129+
130+ /**
131+ * Constructor with all args parameters
132+ */
133+ public { {classname} }({ {#vendorExtensions.x-java-all-args-constructor-vars} }{ {#jsonb} }@JsonbProperty(value = "{ {baseName} }"{ {^required} }, nullable = true{ {/required} }){ {/jsonb} }{ {#jackson} }@JsonProperty(JSON_PROPERTY_{ {nameInSnakeCase} }){ {/jackson} } { {{datatypeWithEnum} }} { {name} }{ {^-last} }, { {/-last} }{ {/vendorExtensions.x-java-all-args-constructor-vars} }) {
134+ {{#parent} }
135+ super({ {#parentVars} }{ {name} }{ {^-last} }, { {/-last} }{ {/parentVars} });
136+ { {/parent} }
131137 { {#vars} }
138+ this.{ {name} } = { {#vendorExtensions.x-is-jackson-optional-nullable} }{ {name} } == null ? JsonNullable.<{ {{datatypeWithEnum} }}>undefined() : JsonNullable.of({ {name} }){ {/vendorExtensions.x-is-jackson-optional-nullable} }{ {^vendorExtensions.x-is-jackson-optional-nullable} }{ {name} }{ {/vendorExtensions.x-is-jackson-optional-nullable} };
139+ { {/vars} }
140+ }
141+ { {/vendorExtensions.x-java-all-args-constructor} }
132142
143+ { {#vars} }
133144 { {^isReadOnly} }
134- public { {classname} } { {name} }({ {{datatypeWithEnum} }} { {name} }) {
145+ public { {classname} } { {name} }({ {> nullable_var_annotations } } { { {datatypeWithEnum} }} { {name} }) {
135146 {{#vendorExtensions.x-is-jackson-optional-nullable} }this.{ {name} } = JsonNullable.<{ {{datatypeWithEnum} }}>of({ {name} });{ {/vendorExtensions.x-is-jackson-optional-nullable} }
136147 { {^vendorExtensions.x-is-jackson-optional-nullable} }this.{ {name} } = { {name} };{ {/vendorExtensions.x-is-jackson-optional-nullable} }
137148 return this;
138149 }
139150 { {#isArray} }
140151
141- public { {classname} } add{ {nameInCamelCase } }Item({ {{items.datatypeWithEnum} }} { {name} }Item) {
152+ public { {classname} } add{ {nameInPascalCase } }Item({ {{items.datatypeWithEnum} }} { {name} }Item) {
142153 {{#vendorExtensions.x-is-jackson-optional-nullable} }
143154 if (this.{ {name} } == null || !this.{ {name} }.isPresent()) {
144155 this.{{name} } = JsonNullable.<{ {{datatypeWithEnum} }}>of({ {{defaultValue} }}{ {^defaultValue} }new { {#uniqueItems} }LinkedHashSet{ {/uniqueItems} }{ {^uniqueItems} }ArrayList{ {/uniqueItems} }<> (){ {/defaultValue} });
@@ -161,7 +172,7 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens
161172 { {/isArray} }
162173 { {#isMap} }
163174
164- public { {classname} } put{ {nameInCamelCase } }Item(String key, { {{items.datatypeWithEnum} }} { {name} }Item) {
175+ public { {classname} } put{ {nameInPascalCase } }Item(String key, { {{items.datatypeWithEnum} }} { {name} }Item) {
165176 {{#vendorExtensions.x-is-jackson-optional-nullable} }
166177 if (this.{ {name} } == null || !this.{ {name} }.isPresent()) {
167178 this.{{name} } = JsonNullable.<{ {{datatypeWithEnum} }}>of({ {{defaultValue} }}{ {^defaultValue} }new HashMap<> (){ {/defaultValue} });
@@ -186,7 +197,7 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens
186197 { {/isMap} }
187198
188199 { {/isReadOnly} }
189- /**
200+ /**
190201 { {#description} }
191202 * { {.} }
192203 { {/description} }
@@ -203,26 +214,17 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens
203214 { {#deprecated} }
204215 * @deprecated
205216 { {/deprecated} }
206- * */
217+ */
207218{ {#deprecated} }
208219 @Deprecated
209220{ {/deprecated} }
210- { {#required} }
211- { {#isNullable} }
212- @{ {javaxPackage} }.annotation.Nullable
213- { {/isNullable} }
214- { {^isNullable} }
215- @{ {javaxPackage} }.annotation.Nonnull
216- { {/isNullable} }
217- { {/required} }
218- { {^required} }
219- @{ {javaxPackage} }.annotation.Nullable
220- { {/required} }
221+ { {> nullable_var_annotations} }{ {! prevent indent} }
221222{ {#jsonb} }
222223 @JsonbProperty("{ {baseName} }")
223224{ {/jsonb} }
224225{ {#useBeanValidation} }
225226{ {> beanValidation} }
227+
226228{ {/useBeanValidation} }
227229{ {#swagger1AnnotationLibrary} }
228230 @ApiModelProperty({ {#example} }example = "{ {{.} }}", { {/example} }{ {#required} }required = { {required} }, { {/required} }value = "{ {{description} }}")
@@ -254,6 +256,7 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens
254256
255257 {{#vendorExtensions.x-is-jackson-optional-nullable}}
256258{{> jackson_annotations}}
259+
257260 public JsonNullable<{{{datatypeWithEnum}}}> {{getter}}_JsonNullable() {
258261 return {{name}};
259262 }
@@ -267,7 +270,7 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens
267270
268271 {{^isReadOnly}}
269272{{#vendorExtensions.x-setter-extra-annotation}} {{{vendorExtensions.x-setter-extra-annotation}}}
270- {{/vendorExtensions.x-setter-extra-annotation}}{{#jackson}}{{^vendorExtensions.x-is-jackson-optional-nullable}}{{> jackson_annotations}}{{/vendorExtensions.x-is-jackson-optional-nullable}}{{/jackson}} public void {{setter}}({{{datatypeWithEnum}}} {{name}}) {
273+ {{/vendorExtensions.x-setter-extra-annotation}}{{#jackson}}{{^vendorExtensions.x-is-jackson-optional-nullable}}{{> jackson_annotations}}{{/vendorExtensions.x-is-jackson-optional-nullable}}{{/jackson}} public void {{setter}}({{>nullable_var_annotations}} {{ {datatypeWithEnum}}} {{name}}) {
271274 {{#vendorExtensions.x-is-jackson-optional-nullable}}
272275 this.{{name}} = JsonNullable.<{{{datatypeWithEnum}}}>of({{name}});
273276 {{/vendorExtensions.x-is-jackson-optional-nullable}}
@@ -279,10 +282,10 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens
279282
280283 {{/vars}}
281284 {{#parent}}
282- {{#allVars }}
285+ {{#readWriteVars }}
283286 {{#isOverridden}}
284287 @Override
285- public {{classname}} {{name}}({{{datatypeWithEnum}}} {{name}}) {
288+ public {{classname}} {{name}}({{>nullable_var_annotations}} {{ {datatypeWithEnum}}} {{name}}) {
286289 {{#vendorExtensions.x-is-jackson-optional-nullable}}
287290 this.{{setter}}(JsonNullable.<{{{datatypeWithEnum}}}>of({{name}}));
288291 {{/vendorExtensions.x-is-jackson-optional-nullable}}
@@ -293,7 +296,7 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens
293296 }
294297
295298 {{/isOverridden}}
296- {{/allVars }}
299+ {{/readWriteVars }}
297300 {{/parent}}
298301 @Override
299302 public boolean equals(Object o) {
@@ -401,7 +404,7 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens
401404 {{#uniqueItems}}
402405 if ({{getter}}() != null) {
403406 int i = 0;
404- for ({{{items.dataType }}} _item : {{getter}}()) {
407+ for ({{{items.datatypeWithEnum }}} _item : {{getter}}()) {
405408 try {
406409 joiner.add(String.format("%s{{baseName}}%s%s=%s", prefix, suffix,
407410 "".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix),
@@ -613,5 +616,9 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens
613616 }
614617 };
615618{{/parcelableModel}}
619+ {{#generateBuilders}}
620+
621+ {{>javaBuilder}}{{! prevent indent}}
622+ {{/generateBuilders}}
616623
617624}
0 commit comments