Skip to content

Commit d4c97ab

Browse files
committed
refs swagger-api/swagger-parser#1143 - fix support for properties in ComposedModel
1 parent 369fdbe commit d4c97ab

File tree

3 files changed

+30
-26
lines changed

3 files changed

+30
-26
lines changed

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

+5-1
Original file line numberDiff line numberDiff line change
@@ -1413,7 +1413,6 @@ public CodegenModel fromModel(String name, Model model, Map<String, Model> allDe
14131413
}
14141414
// parent model
14151415
Model parent = (Model) composed.getParent();
1416-
addProperties(properties, required, model, allDefinitions);
14171416

14181417
// interfaces (intermediate models)
14191418
if (composed.getInterfaces() != null) {
@@ -1475,6 +1474,10 @@ public CodegenModel fromModel(String name, Model model, Map<String, Model> allDe
14751474
}
14761475
}
14771476

1477+
if (model.getProperties() != null) {
1478+
properties.putAll(model.getProperties());
1479+
}
1480+
14781481
// child model (properties owned by the model itself)
14791482
Model child = composed.getChild();
14801483
if (child != null && child instanceof RefModel && allDefinitions != null) {
@@ -1487,6 +1490,7 @@ public CodegenModel fromModel(String name, Model model, Map<String, Model> allDe
14871490
addProperties(allProperties, allRequired, child, allDefinitions);
14881491
}
14891492
}
1493+
14901494
addVars(m, properties, required, allDefinitions, allProperties, allRequired);
14911495
} else {
14921496
ModelImpl impl = (ModelImpl) model;

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

+21-21
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ public void propertiesInComposedModelTest() {
2323
CodegenModel composed = codegen.fromModel("RedisResource", model, swagger.getDefinitions());
2424

2525
Assert.assertEquals(composed.vars.size(), 3);
26-
Assert.assertEquals(composed.vars.get(0).baseName, "properties");
27-
Assert.assertEquals(composed.vars.get(1).baseName, "zones");
28-
Assert.assertEquals(composed.vars.get(2).baseName, "modelOneProp");
26+
Assert.assertEquals(composed.vars.get(0).baseName, "modelOneProp");
27+
Assert.assertEquals(composed.vars.get(1).baseName, "properties");
28+
Assert.assertEquals(composed.vars.get(2).baseName, "zones");
2929
Assert.assertNull(composed.parent);
3030
}
3131

@@ -62,7 +62,7 @@ public void camelizeNamesTest() {
6262
Assert.assertEquals(codegen.camelize(".foo.bar"), "FooBar");
6363
Assert.assertEquals(codegen.camelize("foo$bar"), "Foo$bar");
6464
Assert.assertEquals(codegen.camelize("foo_$bar"), "Foo$bar");
65-
65+
6666
Assert.assertEquals(codegen.camelize("foo_bar"), "FooBar");
6767
Assert.assertEquals(codegen.camelize("foo_bar_baz"), "FooBarBaz");
6868
Assert.assertEquals(codegen.camelize("foo/bar.baz"), "FooBarBaz");
@@ -247,7 +247,7 @@ public void fileResponeseTest() {
247247
Assert.assertTrue(op.responses.get(0).isFile);
248248
Assert.assertTrue(op.isResponseFile);
249249
}
250-
250+
251251
@Test(description = "discriminator is present")
252252
public void discriminatorTest() {
253253
final Swagger model = parseAndPrepareSwagger("src/test/resources/2_0/discriminatorTest.json");
@@ -299,9 +299,9 @@ public void simpleInheritanceTest() {
299299
final Model model = swagger.getDefinitions().get("ChildOfSimpleParent");
300300
CodegenModel child = codegen.fromModel("ChildOfSimpleParent", model, swagger.getDefinitions());
301301

302-
Assert.assertEquals(child.vars.size(), 4);
302+
Assert.assertEquals(child.vars.size(), 2);
303303
Assert.assertEquals(child.vars.get(0).baseName, "modelOneProp");
304-
Assert.assertEquals(child.vars.get(3).baseName, "childOfSimpleParentProp");
304+
Assert.assertEquals(child.vars.get(1).baseName, "childOfSimpleParentProp");
305305
Assert.assertEquals(child.parent, "SimpleParent");
306306
}
307307

@@ -313,8 +313,8 @@ public void multiInheritanceTest() {
313313
final Model model = swagger.getDefinitions().get("ChildOfChildOfSimpleParent");
314314
CodegenModel child = codegen.fromModel("ChildOfChildOfSimpleParent", model, swagger.getDefinitions());
315315

316-
Assert.assertEquals(child.vars.size(), 5);
317-
Assert.assertEquals(child.vars.get(4).baseName, "childOfChildOfSimpleParentProp");
316+
Assert.assertEquals(child.vars.size(), 1);
317+
Assert.assertEquals(child.vars.get(0).baseName, "childOfChildOfSimpleParentProp");
318318
Assert.assertEquals(child.parent, "ChildOfSimpleParent");
319319
}
320320

@@ -343,8 +343,8 @@ public void supportsMixinsTest() {
343343
final Model model = swagger.getDefinitions().get("ChildOfChildOfSimpleParent");
344344
CodegenModel child = codegen.fromModel("ChildOfChildOfSimpleParent", model, swagger.getDefinitions());
345345

346-
Assert.assertEquals(child.vars.size(), 5);
347-
Assert.assertEquals(child.vars.get(4).baseName, "childOfChildOfSimpleParentProp");
346+
Assert.assertEquals(child.vars.size(), 1);
347+
Assert.assertEquals(child.vars.get(0).baseName, "childOfChildOfSimpleParentProp");
348348
Assert.assertEquals(child.allVars.size(), 5);
349349
Assert.assertEquals(child.allVars.get(0).baseName, "modelOneProp");
350350
Assert.assertEquals(child.allVars.get(1).baseName, "disc");
@@ -363,8 +363,8 @@ public void inheritanceOfComposedModelTest() {
363363
final Model model = swagger.getDefinitions().get("ChildOfComposedParent");
364364
CodegenModel child = codegen.fromModel("ChildOfComposedParent", model, swagger.getDefinitions());
365365

366-
Assert.assertEquals(child.vars.size(), 5);
367-
Assert.assertEquals(child.vars.get(4).baseName, "childOfComposedParentProp");
366+
Assert.assertEquals(child.vars.size(), 1);
367+
Assert.assertEquals(child.vars.get(0).baseName, "childOfComposedParentProp");
368368
Assert.assertEquals(child.parent, "ComposedParent");
369369
}
370370

@@ -376,8 +376,8 @@ public void multiInheritanceOfComposedModelTest() {
376376
final Model model = swagger.getDefinitions().get("ChildOfChildOfComposedParent");
377377
CodegenModel child = codegen.fromModel("ChildOfChildOfComposedParent", model, swagger.getDefinitions());
378378

379-
Assert.assertEquals(child.vars.size(), 6);
380-
Assert.assertEquals(child.vars.get(5).baseName, "childOfChildOfComposedParentProp");
379+
Assert.assertEquals(child.vars.size(), 1);
380+
Assert.assertEquals(child.vars.get(0).baseName, "childOfChildOfComposedParentProp");
381381
Assert.assertEquals(child.parent, "ChildOfComposedParent");
382382
}
383383

@@ -425,47 +425,47 @@ public void relativeDefinitionsMapInResponseTest() {
425425
Assert.assertTrue(op.imports.contains("PhotoThumbnailsRequest"));
426426

427427
}
428-
428+
429429
@Test(description = "use operation consumes and produces")
430430
public void localConsumesAndProducesTest() {
431431
final Swagger model = parseAndPrepareSwagger("src/test/resources/2_0/globalConsumesAndProduces.json");
432432
final DefaultCodegen codegen = new DefaultCodegen();
433433
final String path = "/tests/localConsumesAndProduces";
434434
final Operation p = model.getPaths().get(path).getGet();
435435
CodegenOperation op = codegen.fromOperation(path, "get", p, model.getDefinitions(), model);
436-
436+
437437
Assert.assertTrue(op.hasConsumes);
438438
Assert.assertEquals(op.consumes.size(), 1);
439439
Assert.assertEquals(op.consumes.get(0).get("mediaType"), "application/json");
440440
Assert.assertTrue(op.hasProduces);
441441
Assert.assertEquals(op.produces.size(), 1);
442442
Assert.assertEquals(op.produces.get(0).get("mediaType"), "application/json");
443443
}
444-
444+
445445
@Test(description = "use spec consumes and produces")
446446
public void globalConsumesAndProducesTest() {
447447
final Swagger model = parseAndPrepareSwagger("src/test/resources/2_0/globalConsumesAndProduces.json");
448448
final DefaultCodegen codegen = new DefaultCodegen();
449449
final String path = "/tests/globalConsumesAndProduces";
450450
final Operation p = model.getPaths().get(path).getGet();
451451
CodegenOperation op = codegen.fromOperation(path, "get", p, model.getDefinitions(), model);
452-
452+
453453
Assert.assertTrue(op.hasConsumes);
454454
Assert.assertEquals(op.consumes.size(), 1);
455455
Assert.assertEquals(op.consumes.get(0).get("mediaType"), "application/global_consumes");
456456
Assert.assertTrue(op.hasProduces);
457457
Assert.assertEquals(op.produces.size(), 1);
458458
Assert.assertEquals(op.produces.get(0).get("mediaType"), "application/global_produces");
459459
}
460-
460+
461461
@Test(description = "use operation consumes and produces (reset in operation with empty array)")
462462
public void localResetConsumesAndProducesTest() {
463463
final Swagger model = parseAndPrepareSwagger("src/test/resources/2_0/globalConsumesAndProduces.json");
464464
final DefaultCodegen codegen = new DefaultCodegen();
465465
final String path = "/tests/localResetConsumesAndProduces";
466466
final Operation p = model.getPaths().get(path).getGet();
467467
CodegenOperation op = codegen.fromOperation(path, "get", p, model.getDefinitions(), model);
468-
468+
469469
Assert.assertNotNull(op);
470470
Assert.assertFalse(op.hasConsumes);
471471
Assert.assertNull(op.consumes);

modules/swagger-codegen/src/test/java/io/swagger/codegen/javascript/JavaScriptInheritanceTest.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -48,14 +48,14 @@ public void javascriptInheritanceTest() {
4848
Assert.assertEquals(cm.parent, "Base");
4949
Assert.assertEquals(cm.interfaces, Arrays.asList("Interface1", "Interface2"));
5050
Assert.assertEquals(cm.imports, Sets.newHashSet("Base", "Interface1", "Interface2"));
51-
Assert.assertEquals(cm.vars.size(), 4);
52-
Assert.assertEquals(cm.vars.get(3).name, "childProp");
51+
Assert.assertEquals(cm.vars.size(), 1);
52+
Assert.assertEquals(cm.vars.get(0).name, "childProp");
5353
Assert.assertEquals(cm.allVars.size(), 4);
5454
String[] allVars = {"intf1Prop", "intf2Prop", "baseProp", "childProp"};
5555
for (int i = 0; i < allVars.length; i++) {
5656
Assert.assertEquals(cm.allVars.get(i).name, allVars[i]);
5757
}
58-
Assert.assertEquals(cm.mandatory, Sets.newHashSet("baseProp", "intf2Prop", "childProp"));
58+
Assert.assertEquals(cm.mandatory, Sets.newHashSet("childProp"));
5959
Assert.assertEquals(cm.allMandatory, Sets.newHashSet("baseProp", "intf2Prop", "childProp"));
6060
}
6161

@@ -91,7 +91,7 @@ public void javascriptNoInheritanceTest() {
9191
Assert.assertEquals(cm.imports, Sets.newHashSet("Base", "Interface1", "Interface2"));
9292
Assert.assertEquals(cm.vars.size(), 4);
9393
Assert.assertEquals(cm.allVars.size(), 4);
94-
String[] allVars = {"baseProp", "intf1Prop", "intf2Prop", "childProp"};
94+
String[] allVars = {"intf1Prop", "intf2Prop", "baseProp", "childProp"};
9595
for (int i = 0; i < allVars.length; i++) {
9696
Assert.assertEquals(cm.vars.get(i).name, allVars[i]);
9797
Assert.assertEquals(cm.allVars.get(i).name, allVars[i]);

0 commit comments

Comments
 (0)