swagger-api / swagger-api/swagger-codegen
[Spring] Codegen 2.2.2 does not render objects comprised by allOf and containing additionalProperties:
Nobody has claimed this yet.
- Dominant language
- Mustache
- Stars
- 17.8k
- Forks
- 6k
- PR merge metrics
- No merged PRs in 30d
Description
Description
When running Codegen 2.2.2 to render Spring objects, when the object has a definition using the allOf schema attribute and also the additionalProperties attribute, the rendered Java object contains no members at all.
Swagger-codegen version
swagger-codegen-cli-2.2.2.jar
Swagger declaration file content or url
DynamicAccountModel:
allOf:
- properties:
accountId:
type: string
description: Account ID
- additionalProperties:
type: string
Command line used for generation
java -jar ../tools/swagger-codegen-cli-2.2.2.jar generate -i allof-no-render.yaml -l spring -o target
Steps to Reproduce
Execute above command.
Note that the class contains neither derives from HashMap (due to having the additionalParameters attribute) nor contains an accountId member.
package com.foo.bar;
import java.util.Objects;
import java.io.Serializable;
import javax.validation.constraints.*;
/**
* DynamicAccountModel
*/
@javax.annotation.Generated(value = "io.swagger.codegen.languages.SpringCodegen", date = "2017-03-30T07:57:06.421-04:00")
public class DynamicAccountModel implements Serializable {
@Override
public boolean equals(java.lang.Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
return true;
}
@Override
public int hashCode() {
return Objects.hash();
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("class DynamicAccountModel {\n");
sb.append("}");
return sb.toString();
}
/**
* Convert the given object to string with each line indented by 4 spaces
* (except the first line).
*/
private String toIndentedString(java.lang.Object o) {
if (o == null) {
return "null";
}
return o.toString().replace("\n", "\n ");
}
}
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by running the documented swagger-codegen-cli-2.2.2 command with the provided allOf/additionalProperties YAML and inspect the generated Spring Java class. Trace the Spring generator path responsible for this model; done means the class includes accountId and handles the additional properties as described, rather than generating an empty object.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java, spring
- Domain
- tooling
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100