Skip to content

Commit 8923a54

Browse files
committed
Merge pull request #1821 from swagger-api/issue-1819
adds a parentSchema name, escapes reserved words in java client
2 parents b074bfb + ed4a729 commit 8923a54

File tree

4 files changed

+13
-7
lines changed

4 files changed

+13
-7
lines changed

modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenModel.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import java.util.*;
66

77
public class CodegenModel {
8-
public String parent;
8+
public String parent, parentSchema;
99
public String name, classname, description, classVarName, modelJson, dataType;
1010
public String unescapedDescription;
1111
public String defaultValue;

modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -789,10 +789,11 @@ public CodegenModel fromModel(String name, Model model, Map<String, Model> allDe
789789
final RefModel parent = (RefModel) composed.getParent();
790790
if (parent != null) {
791791
final String parentRef = parent.getSimpleRef();
792-
m.parent = parentRef;
793-
addImport(m, toModelName(parent.getSimpleRef()));
792+
m.parentSchema = parentRef;
793+
m.parent = toModelName(parent.getSimpleRef());
794+
addImport(m, m.parent);
794795
if (!supportsInheritance && allDefinitions != null) {
795-
final Model parentModel = allDefinitions.get(parentRef);
796+
final Model parentModel = allDefinitions.get(m.parentSchema);
796797
if (parentModel instanceof ModelImpl) {
797798
final ModelImpl _parent = (ModelImpl) parentModel;
798799
if (_parent.getProperties() != null) {

modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaClientCodegen.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,11 @@ public JavaClientCodegen() {
4444

4545
reservedWords = new HashSet<String>(
4646
Arrays.asList(
47+
// used as internal variables, can collide with parameter names
48+
"path", "queryParams", "headerParams", "formParams", "postBody", "accepts", "accept", "contentTypes",
49+
"contentType", "authNames",
50+
51+
// language reserved words
4752
"abstract", "continue", "for", "new", "switch", "assert",
4853
"default", "if", "package", "synchronized", "boolean", "do", "goto", "private",
4954
"this", "break", "double", "implements", "protected", "throw", "byte", "else",
@@ -455,8 +460,8 @@ public String toOperationId(String operationId) {
455460
public CodegenModel fromModel(String name, Model model, Map<String, Model> allDefinitions) {
456461
CodegenModel codegenModel = super.fromModel(name, model, allDefinitions);
457462

458-
if (allDefinitions != null && codegenModel != null && codegenModel.parent != null && codegenModel.hasEnums) {
459-
final Model parentModel = allDefinitions.get(codegenModel.parent);
463+
if (allDefinitions != null && codegenModel != null && codegenModel.parentSchema != null && codegenModel.hasEnums) {
464+
final Model parentModel = allDefinitions.get(codegenModel.parentSchema);
460465
final CodegenModel parentCodegenModel = super.fromModel(codegenModel.parent, parentModel);
461466
codegenModel = this.reconcileInlineEnums(codegenModel, parentCodegenModel);
462467
}

modules/swagger-codegen/src/test/java/io/swagger/codegen/java/JavaModelEnumTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public void overrideEnumTest() {
8080

8181
Assert.assertEquals(cm.name, "sample");
8282
Assert.assertEquals(cm.classname, "Sample");
83-
Assert.assertEquals(cm.parent, "parentModel");
83+
Assert.assertEquals(cm.parent, "ParentModel");
8484
Assert.assertTrue(cm.imports.contains("ParentModel"));
8585

8686
// Assert that only the unshared/uninherited enum remains

0 commit comments

Comments
 (0)