Skip to content

Commit a6e30d4

Browse files
committed
Cubic suggestions
1 parent 5d2fab6 commit a6e30d4

3 files changed

Lines changed: 37 additions & 15 deletions

File tree

modules/openapi-generator/src/main/java/org/openapitools/codegen/OpenAPINormalizer.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1773,7 +1773,10 @@ protected void ensureInheritanceForDiscriminatorMappings(Schema parent, Schema c
17731773
Map<String, Schema> childProperties = child.getProperties();
17741774
if (childProperties != null) {
17751775
// move the properties inside the new allOf.
1776-
Schema newChildProperties = new Schema<>().properties(childProperties);
1776+
Schema newChildProperties = new Schema<>()
1777+
.properties(childProperties)
1778+
.additionalProperties(child.getAdditionalProperties());
1779+
ModelUtils.copyMetadata(child, newChildProperties);
17771780
allOf.add(newChildProperties);
17781781
child.setProperties(null);
17791782
child.setType(null);

modules/openapi-generator/src/test/java/org/openapitools/codegen/java/assertions/JavaFileAssert.java

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import com.github.javaparser.StaticJavaParser;
44
import com.github.javaparser.ast.CompilationUnit;
5+
import com.github.javaparser.ast.Node;
6+
import com.github.javaparser.ast.NodeList;
57
import com.github.javaparser.ast.body.*;
68
import com.github.javaparser.ast.nodeTypes.NodeWithName;
79
import com.github.javaparser.ast.nodeTypes.modifiers.NodeWithAbstractModifier;
@@ -59,33 +61,40 @@ public JavaFileAssert isNormalClass() {
5961
return this;
6062
}
6163

62-
public JavaFileAssert extendsClass(String... parentClass) {
63-
Set<String> expectedClasses = Stream.of(parentClass)
64-
.collect(Collectors.toSet());
65-
66-
Set<String> actualParents = actual.getType(0)
64+
public JavaFileAssert extendsClass(String parentClass) {
65+
String actualParent = actual.getType(0)
6766
.asClassOrInterfaceDeclaration().getExtendedTypes()
6867
.stream()
68+
.filter(JavaFileAssert::isClass)
6969
.map(ClassOrInterfaceType::getNameWithScope)
70-
.collect(Collectors.toSet());
70+
.findFirst()
71+
.orElse(null);
7172

72-
Assertions.assertThat(actualParents)
73+
Assertions.assertThat(actualParent)
7374
.withFailMessage("Expected type %s to extends %s, but found %s",
74-
actual.getType(0).getName().asString(), expectedClasses, actualParents)
75-
.isEqualTo(expectedClasses);
75+
actual.getType(0).getName().asString(), parentClass, actualParent)
76+
.isEqualTo(parentClass);
7677
return this;
7778
}
7879

80+
private static boolean isClass(ClassOrInterfaceType cit) {
81+
return cit.asClassOrInterfaceType().getParentNode()
82+
.map(node -> node instanceof ClassOrInterfaceDeclaration && !((ClassOrInterfaceDeclaration)node).isInterface())
83+
.orElse(false);
84+
}
85+
7986
public JavaFileAssert doesNotExtendsClasses() {
80-
Set<String> actualParents = actual.getType(0)
87+
String actualParent = actual.getType(0)
8188
.asClassOrInterfaceDeclaration().getExtendedTypes()
8289
.stream()
90+
.filter(JavaFileAssert::isClass)
8391
.map(ClassOrInterfaceType::getNameWithScope)
84-
.collect(Collectors.toSet());
85-
Assertions.assertThat(actualParents)
92+
.findFirst()
93+
.orElse(null);
94+
Assertions.assertThat(actualParent)
8695
.withFailMessage("Expected type %s to extends a class, but found %s",
87-
actual.getType(0).getName().asString(), actualParents)
88-
.isEmpty();
96+
actual.getType(0).getName().asString(), actualParent)
97+
.isNull();
8998
return this;
9099
}
91100

modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6770,5 +6770,15 @@ void oneOf_issue_14769() throws IOException {
67706770
Map.of(MODEL_NAME_SUFFIX, "Dto",
67716771
GENERATE_MODEL_DOCS, false, GENERATE_APIS, false, INTERFACE_ONLY, true),
67726772
codegen -> codegen.addOpenapiNormalizer("REPLACE_ONE_OF_BY_DISCRIMINATOR_MAPPING", "true"));
6773+
6774+
JavaFileAssert.assertThat(files.get("VehicleDto.java"))
6775+
.isNormalClass()
6776+
.assertTypeAnnotations().containsWithName("JsonSubTypes")
6777+
.recursivelyContainsWithNameAndAttributes("JsonSubTypes.Type", Map.of("value", "CarDto.class", "name", "\"car\""))
6778+
.recursivelyContainsWithNameAndAttributes("JsonSubTypes.Type", Map.of("value", "PlaneDto.class", "name", "\"plane\""));
6779+
6780+
JavaFileAssert.assertThat(files.get("CarDto.java"))
6781+
.isNormalClass()
6782+
.extendsClass("VehicleDto");
67736783
}
67746784
}

0 commit comments

Comments
 (0)