Skip to content

Commit e3fbdfd

Browse files
committed
added jackson annotations on oneof generated interface for deserialization
1 parent 137b149 commit e3fbdfd

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

src/main/java/io/swagger/codegen/v3/generators/SchemaHandler.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,17 @@ protected void addInterfaces(List<Schema> schemas, CodegenModel codegenModel, Ma
175175
continue;
176176
}
177177
final String schemaName = ref.substring(ref.lastIndexOf("/") + 1);
178-
this.addInterfaceModel(allModels.get(codegenConfig.toModelName(schemaName)), codegenModel);
178+
179+
final CodegenModel model = allModels.get(codegenConfig.toModelName(schemaName));
180+
this.addInterfaceModel(model, codegenModel);
181+
182+
boolean subTypeAdded = false;
183+
if (codegenModel.getSubTypes() != null) {
184+
subTypeAdded = codegenModel.getSubTypes().stream().anyMatch(existingSubType -> existingSubType.classname.equalsIgnoreCase(model.classname));
185+
}
186+
if (!subTypeAdded) {
187+
codegenModel.addSubType(model);
188+
}
179189
}
180190
}
181191

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,21 @@
1+
{{#jackson}}
2+
import com.fasterxml.jackson.annotation.JsonSubTypes;
3+
import com.fasterxml.jackson.annotation.JsonTypeInfo;
4+
{{/jackson}}
15
/**
26
* {{#description}}{{.}}{{/description}}{{^description}}{{classname}}{{/description}}
37
*/
8+
{{#jackson}}
9+
@JsonTypeInfo(
10+
use = JsonTypeInfo.Id.NAME,
11+
include = JsonTypeInfo.As.PROPERTY,
12+
property = "type")
13+
@JsonSubTypes({
14+
{{#subTypes}}
15+
@JsonSubTypes.Type(value = {{classname}}.class, name = "{{classname}}"){{^@last}},{{/@last}}
16+
{{/subTypes}}
17+
})
18+
{{/jackson}}
419
public interface {{{classname}}} {
520
621
}

0 commit comments

Comments
 (0)