При чтении файловой схемы Swagger 2.0 json allOf рассматривается как UntypedProperty - PullRequest
0 голосов
/ 04 февраля 2020

Я хочу проанализировать файл swagger v2.0

Я могу выполнить синтаксический анализ, отличный от типа allOf.

publi c SwaggerResponseImpl (Ответный ответ, SwaggerMimeType mimeType, int httpStatus , Swagger mSwagger) {

    if (response == null || mimeType == null || mSwagger == null) {
        String msg = "Arguments must be available. response:[" + response + "] and/or mimeType:[" + mimeType + "] and/or httpStatus:[" + httpStatus + "] and/or mSwagger:[" + mSwagger + "] aren't available.";
        log.error(msg);
        throw new SwaggerException(msg);
    }

    this.mimeType = mimeType;
    this.response = response;
    this.mSwagger = mSwagger;
    this.httpStatus = httpStatus;

    /**
     * Create instance of 'Model Parser Factory'
     */
    modelParserFactory = new ModelParserFactoryImpl();

    /**
     * If the 'Response' has an 'example body' or 'body schema'
     * get it.
     */
    if (response.getExamples() != null && response.getExamples().containsKey(this.mimeType.getMimeType())) {
        /**
         * This response has an example for the 'given MimeType'.
         * Parse it.
         */
        Object example = response.getExamples().get(this.mimeType.getMimeType());
        this.bodyExample = parseExample(example, this.mimeType);
    }

    /**
     * Get the 'schema' for the 'response'
     */
    this.schema = response.getSchema();

    DEFAULT_RESPONSE_HEADERS.put(ACCESS_CONTROL_HEADER, "*");
    DEFAULT_RESPONSE_HEADERS.put(CACHE_CONTROL_HEADER, "public, max-age=36000");
    DEFAULT_RESPONSE_HEADERS.put(CONNECTION_HEADER, "keep-alive");
    DEFAULT_RESPONSE_HEADERS.put(CONTENT_TYPE_HEADER, mimeType.getMimeType());

}

Здесь, в this.schema Я получаю UntypedProperty

enter image description here

Таким образом, я не вижу, что этот ответ анализируется, и он показывает неполный.

Просто я прикрепляю раздел неполных ответов

    "responses": {
      "200": {
        "description": "Successful",
        "schema": {
          "allOf": [
            {
              "type": "object",
              "properties": {
                "payments": {
                  "type": "object",
                  "properties": {
                    "cardProcessing": {
                      "type": "object",
                      "properties": {
                        "subscriptionInformation": {
                          "type": "object",
                          "properties": {
                            "subscribed": {
                              "type": "boolean"
                            },
                            "enabled": {
                              "type": "boolean"
                            },
                            "features": {
                              "type": "object",
                              "additionalProperties": {
                                "type": "object",
                                "properties": {
                                  "enabled": {
                                    "type": "boolean"
                                  }
                                }
                              }
                            }
                          }
                        },
                        "configurationInformation": {
                          "type": "object",
                          "properties": {
                            "configurations": {
                              "type": "object",
                              "properties": {
                                "common": {
                                  "type": "object",
                                  "properties": {
                                    "processors": {
                                      "type": "object",
                                      "additionalProperties": {
                                        "type": "object",
                                        "properties": {
                                          "batchGroup": {
                                            "type": "string"
                                          },

Но в случае типа объекта этот ответ

 "400": {
            "description": "Invalid Request",
            "schema": {
              "type": "object",
              "properties": {
                "status": {
                  "type": "string",
                  "description": "The status of the submitted transaction.",
                  "enum": [
                    "INVALID_REQUEST"
                  ]
                },
                "message": {
                  "type": "string",
                  "description": "The detail message related to the status and reason listed above."
                },
                "details": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "field": {
                        "type": "string",
                        "description": "This is the flattened JSON object field name/path that is either missing or invalid."
                      },
                      "reason": {
                        "type": "string",
                        "description": "Possible reasons for the error.",
                        "enum": [

для вышеуказанного ответа 400

тип схемы ObjectProperty

enter image description here

И он содержит правильный ответ в свойствах как вы можете видеть статус, сообщение, подробности

Что нужно сделать для разрешения типа allOf , чтобы он также рассматривался как ObjectProperty и я мог получить правильный ответ при разборе файла swagger 2.0.

Я использую io.swagger: swagger-models: 1.5 .20

Если я использую онлайн-редактор swagger, то он прекрасно работает, но с кодом java нет.

...