in swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/SwaggerUtils.java [218:249]
public static Schema resolveTypeSchemas(OpenAPI swagger, Type type) {
ResolvedSchema resolvedSchema = ModelConverters.getInstance().resolveAsResolvedSchema(
new AnnotatedType(type).resolveAsRef(true));
if (resolvedSchema == null || resolvedSchema.schema == null) {
throw new IllegalArgumentException("cannot resolve type : " + type);
}
if (swagger.getComponents() == null) {
swagger.setComponents(new Components());
}
Map<String, Schema> schemaMap = resolvedSchema.referencedSchemas;
if (schemaMap != null) {
Map<String, Schema> componentSchemas = swagger.getComponents().getSchemas();
if (componentSchemas == null) {
componentSchemas = new LinkedHashMap<>(schemaMap);
} else {
for (Map.Entry<String, Schema> entry : schemaMap.entrySet()) {
if (!componentSchemas.containsKey(entry.getKey())) {
componentSchemas.put(entry.getKey(), entry.getValue());
} else {
if (!entry.getValue().equals(componentSchemas.get(entry.getKey()))) {
throw new IllegalArgumentException("duplicate param model: " + entry.getKey());
}
}
}
}
swagger.getComponents().setSchemas(componentSchemas);
}
return resolvedSchema.schema;
}