Closed
Description
Description
Improper type casting when values are hardcoded inside enum.
Swagger-codegen version
2.2.3
Swagger declaration file content or url
"swagger": "2.0",
"X509Certificate": {
"type": "object",
"properties": {
"public_key_length": {
"readOnly": true,
"enum": [
2048,
3072
],
"type": "integer",
"description": "size measured in bits of the public/private keys used in a cryptographic algorithm",
"format": "int64"
}
}
}
Command line used for generation
on MAC OS:
swagger-codegen generate -i test.json -l java
Also with different swagger versions with maven
Result (Generated code)
/**
* size measured in bits of the public/private keys used in a cryptographic algorithm
*/
@JsonAdapter(PublicKeyLengthEnum.Adapter.class)
public enum PublicKeyLengthEnum {
NUMBER_2048(2048),
NUMBER_3072(3072); // these are the problematic lines
private Long value;
PublicKeyLengthEnum(Long value) {
this.value = value;
}
public Long getValue() {
return value;
}
@Override
public String toString() {
return String.valueOf(value);
}
public static PublicKeyLengthEnum fromValue(String text) {
for (PublicKeyLengthEnum b : PublicKeyLengthEnum.values()) {
if (String.valueOf(b.value).equals(text)) {
return b;
}
}
return null;
}
public static class Adapter extends TypeAdapter<PublicKeyLengthEnum> {
@Override
public void write(final JsonWriter jsonWriter, final PublicKeyLengthEnum enumeration) throws IOException {
jsonWriter.value(enumeration.getValue());
}
@Override
public PublicKeyLengthEnum read(final JsonReader jsonReader) throws IOException {
Long value = jsonReader.nextLong();
return PublicKeyLengthEnum.fromValue(String.valueOf(value));
}
}
}
@SerializedName("public_key_length")
private PublicKeyLengthEnum publicKeyLength = null;
@SerializedName("not_before")
private Long notBefore = null;
@SerializedName("subject")
private String subject = null;
Compilation failure
[ERROR] /Users/ysimeonov/Documents/workspace/test/target/generated-sources/src/xxx/xxx/xxx/client/model/X509Certificate.java:[134,17] incompatible types: int cannot be converted to java.lang.Long
[ERROR] /Users/ysimeonov/Documents/workspace/test/target/generated-sources/src/xxx/xxx/xxx/client/model/X509Certificate.java:[136,17] incompatible types: int cannot be converted to java.lang.Long
[ERROR] -> [Help 1]
Workaround
I manually modified the following:
NUMBER_2048(new Long(2048)),
NUMBER_3072(new Long(3072));
Metadata
Metadata
Assignees
Labels
No labels