From 8bd985c57383a040106a54a07b639e928743e064 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?He=CC=81lder=20Diniz?= Date: Mon, 16 Nov 2020 17:03:45 +0000 Subject: [PATCH] #804 Java generated code does not implement discriminator mappings correctly --- .../Java/typeInfoAnnotation.mustache | 19 +++++++++++++------ .../JavaInflector/typeInfoAnnotation.mustache | 19 +++++++++++++------ .../JavaJaxRS/typeInfoAnnotation.mustache | 19 +++++++++++++------ .../JavaMicronaut/typeInfoAnnotation.mustache | 19 +++++++++++++------ 4 files changed, 52 insertions(+), 24 deletions(-) diff --git a/src/main/resources/handlebars/Java/typeInfoAnnotation.mustache b/src/main/resources/handlebars/Java/typeInfoAnnotation.mustache index f2a2e1c88f..52695c64fe 100644 --- a/src/main/resources/handlebars/Java/typeInfoAnnotation.mustache +++ b/src/main/resources/handlebars/Java/typeInfoAnnotation.mustache @@ -1,7 +1,14 @@ {{#jackson}} -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{discriminator.propertyName}}", visible = true ) -@JsonSubTypes({ - {{#children}} - @JsonSubTypes.Type(value = {{classname}}.class, name = "{{^vendorExtensions.x-discriminator-value}}{{name}}{{/vendorExtensions.x-discriminator-value}}{{#vendorExtensions.x-discriminator-value}}{{{vendorExtensions.x-discriminator-value}}}{{/vendorExtensions.x-discriminator-value}}"), - {{/children}} -}){{/jackson}} + @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{discriminator.propertyName}}", visible = true ) + @JsonSubTypes({ + {{#if discriminator.mapping}} + {{#each discriminator.mapping}} + @JsonSubTypes.Type(value = {{this}}.class, name = "{{@key}}"), + {{/each}} + {{else}} + {{#children}} + @JsonSubTypes.Type(value = {{classname}}.class, name = "{{name}}"), + {{/children}} + {{/if}} + }) +{{/jackson}} diff --git a/src/main/resources/handlebars/JavaInflector/typeInfoAnnotation.mustache b/src/main/resources/handlebars/JavaInflector/typeInfoAnnotation.mustache index f2a2e1c88f..52695c64fe 100644 --- a/src/main/resources/handlebars/JavaInflector/typeInfoAnnotation.mustache +++ b/src/main/resources/handlebars/JavaInflector/typeInfoAnnotation.mustache @@ -1,7 +1,14 @@ {{#jackson}} -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{discriminator.propertyName}}", visible = true ) -@JsonSubTypes({ - {{#children}} - @JsonSubTypes.Type(value = {{classname}}.class, name = "{{^vendorExtensions.x-discriminator-value}}{{name}}{{/vendorExtensions.x-discriminator-value}}{{#vendorExtensions.x-discriminator-value}}{{{vendorExtensions.x-discriminator-value}}}{{/vendorExtensions.x-discriminator-value}}"), - {{/children}} -}){{/jackson}} + @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{discriminator.propertyName}}", visible = true ) + @JsonSubTypes({ + {{#if discriminator.mapping}} + {{#each discriminator.mapping}} + @JsonSubTypes.Type(value = {{this}}.class, name = "{{@key}}"), + {{/each}} + {{else}} + {{#children}} + @JsonSubTypes.Type(value = {{classname}}.class, name = "{{name}}"), + {{/children}} + {{/if}} + }) +{{/jackson}} diff --git a/src/main/resources/handlebars/JavaJaxRS/typeInfoAnnotation.mustache b/src/main/resources/handlebars/JavaJaxRS/typeInfoAnnotation.mustache index f2a2e1c88f..52695c64fe 100644 --- a/src/main/resources/handlebars/JavaJaxRS/typeInfoAnnotation.mustache +++ b/src/main/resources/handlebars/JavaJaxRS/typeInfoAnnotation.mustache @@ -1,7 +1,14 @@ {{#jackson}} -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{discriminator.propertyName}}", visible = true ) -@JsonSubTypes({ - {{#children}} - @JsonSubTypes.Type(value = {{classname}}.class, name = "{{^vendorExtensions.x-discriminator-value}}{{name}}{{/vendorExtensions.x-discriminator-value}}{{#vendorExtensions.x-discriminator-value}}{{{vendorExtensions.x-discriminator-value}}}{{/vendorExtensions.x-discriminator-value}}"), - {{/children}} -}){{/jackson}} + @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{discriminator.propertyName}}", visible = true ) + @JsonSubTypes({ + {{#if discriminator.mapping}} + {{#each discriminator.mapping}} + @JsonSubTypes.Type(value = {{this}}.class, name = "{{@key}}"), + {{/each}} + {{else}} + {{#children}} + @JsonSubTypes.Type(value = {{classname}}.class, name = "{{name}}"), + {{/children}} + {{/if}} + }) +{{/jackson}} diff --git a/src/main/resources/handlebars/JavaMicronaut/typeInfoAnnotation.mustache b/src/main/resources/handlebars/JavaMicronaut/typeInfoAnnotation.mustache index 9fbced41d8..52695c64fe 100644 --- a/src/main/resources/handlebars/JavaMicronaut/typeInfoAnnotation.mustache +++ b/src/main/resources/handlebars/JavaMicronaut/typeInfoAnnotation.mustache @@ -1,7 +1,14 @@ {{#jackson}} -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{discriminator.propertyName}}", visible = true ) -@JsonSubTypes({ - {{#children}} - @JsonSubTypes.Type(value = {{classname}}.class, name = "{{^vendorExtensions.x-discriminator-value}}{{name}}{{/vendorExtensions.x-discriminator-value}}{{#vendorExtensions.x-discriminator-value}}{{{vendorExtensions.x-discriminator-value}}}{{/vendorExtensions.x-discriminator-value}}"), - {{/children}} -}){{/jackson}} \ No newline at end of file + @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{discriminator.propertyName}}", visible = true ) + @JsonSubTypes({ + {{#if discriminator.mapping}} + {{#each discriminator.mapping}} + @JsonSubTypes.Type(value = {{this}}.class, name = "{{@key}}"), + {{/each}} + {{else}} + {{#children}} + @JsonSubTypes.Type(value = {{classname}}.class, name = "{{name}}"), + {{/children}} + {{/if}} + }) +{{/jackson}}