Skip to content

Commit 4a7d0f4

Browse files
authored
Merge pull request #485 from swagger-api/pr_453_regresion_fix
validate ref schema as objects.
2 parents f2410e9 + 775149d commit 4a7d0f4

File tree

3 files changed

+30
-4
lines changed

3 files changed

+30
-4
lines changed

src/main/java/io/swagger/codegen/v3/generators/DefaultCodegenConfig.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4133,16 +4133,23 @@ else if (Parameter.StyleEnum.SPACEDELIMITED.equals(parameter.getStyle())) {
41334133
}
41344134
}
41354135

4136-
private boolean isObjectSchema (Schema schema) {
4136+
public boolean isObjectSchema (Schema schema) {
41374137
if (schema instanceof ObjectSchema ||schema instanceof ComposedSchema) {
41384138
return true;
41394139
}
4140-
if (SchemaTypeUtil.OBJECT_TYPE.equals(schema.getType()) && !(schema instanceof MapSchema)) {
4140+
if (SchemaTypeUtil.OBJECT_TYPE.equalsIgnoreCase(schema.getType()) && !(schema instanceof MapSchema)) {
41414141
return true;
41424142
}
41434143
if (schema.getType() == null && schema.getProperties() != null && !schema.getProperties().isEmpty()) {
41444144
return true;
41454145
}
4146+
if (StringUtils.isNotBlank(schema.get$ref())) {
4147+
Schema refSchema = OpenAPIUtil.getSchemaFromRefSchema(schema, openAPI);
4148+
if (refSchema != null) {
4149+
return isObjectSchema(refSchema);
4150+
}
4151+
}
4152+
41464153
return false;
41474154
}
41484155

src/main/java/io/swagger/codegen/v3/generators/SchemaHandler.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,8 +184,7 @@ private void configureModel(CodegenModel codegenModel, String name) {
184184

185185
private boolean hasNonObjectSchema(List<Schema> schemas) {
186186
for (Schema schema : schemas) {
187-
boolean hasNonObjectSchema = (!(schema instanceof ObjectSchema)) || (schema.getProperties() != null && !schema.getProperties().isEmpty());
188-
if (hasNonObjectSchema) {
187+
if (!codegenConfig.isObjectSchema(schema)) {
189188
return true;
190189
}
191190
}

src/main/java/io/swagger/codegen/v3/generators/util/OpenAPIUtil.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import io.swagger.codegen.v3.CodegenProperty;
55
import io.swagger.v3.oas.models.OpenAPI;
66
import io.swagger.v3.oas.models.media.Schema;
7+
import org.apache.commons.lang3.StringUtils;
78

89
import java.util.Map;
910

@@ -34,4 +35,23 @@ public static String getSimpleRef(String ref) {
3435
}
3536
return ref;
3637
}
38+
39+
public static Schema getSchemaFromName(String name, OpenAPI openAPI) {
40+
if (openAPI.getComponents() == null) {
41+
return null;
42+
}
43+
final Map<String, Schema> mapSchema = openAPI.getComponents().getSchemas();
44+
if (mapSchema == null || mapSchema.isEmpty()) {
45+
return null;
46+
}
47+
return mapSchema.get(name);
48+
}
49+
50+
public static Schema getSchemaFromRefSchema(Schema refSchema, OpenAPI openAPI) {
51+
if (StringUtils.isBlank(refSchema.get$ref())) {
52+
return null;
53+
}
54+
final String name = getSimpleRef(refSchema.get$ref());
55+
return getSchemaFromName(name, openAPI);
56+
}
3757
}

0 commit comments

Comments
 (0)