The source OpenAPI specification contains subtypes and enums.
I have possible unresolved cyclic dependency in generated models:
Both parent and child classes has the property (getter) which refers enum declared in the _same_ class.
The generated code cannot be compiled properly.
public class UnknownTOV extends TOVCreation {
/**
* Gets or Sets unknown
*/
public enum UnknownEnum {
UNKNOWNTOV("UnknownTOV");
private String value;
UnknownEnum(String value) {
this.value = value;
}
@JsonValue
public String getValue() {
return value;
}
@Override
public String toString() {
return String.valueOf(value);
}
@JsonCreator
public static UnknownEnum fromValue(String text) {
for (UnknownEnum b : UnknownEnum.values()) {
if (String.valueOf(b.value).equals(text)) {
return b;
}
}
throw new IllegalArgumentException("Unexpected value '" + text + "'");
}
}
@JsonProperty("unknown")
private UnknownEnum unknown;
public UnknownTOV unknown(UnknownEnum unknown) {
this.unknown = unknown;
return this;
}
/**
* Get unknown
* @return unknown
**/
@ApiModelProperty(required = true, value = "")
public UnknownEnum getUnknown() {
return unknown;
}
public void setUnknown(UnknownEnum unknown) {
this.unknown = unknown;
}
....
}
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type", visible = true)
@JsonSubTypes({
....
@JsonSubTypes.Type(value = UnknownTOV.class, name = "UnknownTOV"),
....
})
public class TOVCreation {
/**
* Gets or Sets unknown
*/
public enum UnknownEnum {
UNKNOWNTOV("UnknownTOV");
private String value;
UnknownEnum(String value) {
this.value = value;
}
@JsonValue
public String getValue() {
return value;
}
@Override
public String toString() {
return String.valueOf(value);
}
@JsonCreator
public static UnknownEnum fromValue(String text) {
for (UnknownEnum b : UnknownEnum.values()) {
if (String.valueOf(b.value).equals(text)) {
return b;
}
}
throw new IllegalArgumentException("Unexpected value '" + text + "'");
}
}
@JsonProperty("unknown")
private UnknownEnum unknown;
public TOVCreation unknown(UnknownEnum unknown) {
this.unknown = unknown;
return this;
}
/**
* Get unknown
* @return unknown
**/
@ApiModelProperty(value = "")
// Incompatible types.
// Required:
// com.xxx.mmmm.persistent.UnknownTOV.UnknownEnum
// Found:
// com.xxx.mmmm.persistent.TOVCreation.UnknownEnum
public UnknownTOV.UnknownEnum getUnknown() {
return unknown;
}
public void setUnknown(UnknownEnum unknown) {
this.unknown = unknown;
}
I am unable to fix this issue to make code compilable.
As I mentioned @Override cannot help in this case.
The IntelliJ IDEA red bulb 馃挕 fix helper causes infinite loop.
The only way I found is comment out problem code.
How can I resolve issue in right way
4.0.0-SNAPSHOT
TOVCreation:
type: object
discriminator: type
properties:
unknown:
type: string
enum:
- UnknownTOV
UnknownTOV:
allOf:
- $ref: '#/definitions/TOVCreation'
- type: object
properties:
unknown:
type: string
enum:
- UnknownTOV
required:
- unknown
The bug is still blocker for me
java
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type", visible = true)
@JsonSubTypes({
@JsonSubTypes.Type(value = EnumerationUDF.class, name = "EnumerationUDF"),
@JsonSubTypes.Type(value = StringUDF.class, name = "StringUDF"),
@JsonSubTypes.Type(value = BooleanUDF.class, name = "BooleanUDF"),
})
without @JsonTypeInfo and @JsonSubTypes it can generate
```java
// In projectProjectKeyUdfsGet List
// all list items in this case are not null, has proper class type and all subtype specific properties are filled
List
````
```java
// In projectProjectKeyUdfsGet originally generated List
// Original buggy version with the generated @ JsonTypeInfo and @ JsonSubTypes annotations:
// all list items in this case are null
List
````