public static Schema resolveTypeSchemas()

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;
  }