spring-projects / spring-projects/spring-data-rest

Invalid json schema generated by spring-data-rest [DATAREST-984]

Open
#1,301 1 comment 0 reactions 1 assignee View on GitHub

@odrotbohm is already working on this.

Since Dec 31, 2020.

in: content-negotiation type: bug
Dominant language
Java
Stars
958
Forks
568
PR merge metrics
No merged PRs in 30d

Description

Dimitri KOPRIWA opened DATAREST-984 and commented

It appear the json schema generated when calling /api/profile/managers

This is the response json :

{
  "title": "Manager",
  "properties": {
    "new": {
      "title": "New",
      "readOnly": true,
      "type": "boolean"
    },
    "lastModifiedDate": {
      "title": "Last modified date",
      "readOnly": false,
      "type": "string",
      "format": "date-time",
      "$ref": "#/definitions/instant"
    },
    "credentialsNonExpired": {
      "title": "Credentials non expired",
      "readOnly": true,
      "type": "boolean"
    },
    "active": {
      "title": "Active",
      "readOnly": false,
      "type": "boolean"
    },
    "login": {
      "title": "Login",
      "readOnly": false,
      "type": "string"
    },
    "roleList": {
      "title": "Role list",
      "readOnly": false,
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "enabled": {
      "title": "Enabled",
      "readOnly": true,
      "type": "boolean"
    },
    "authorities": {
      "title": "Authorities",
      "readOnly": true,
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "createdDate": {
      "title": "Created date",
      "readOnly": false,
      "type": "string",
      "format": "date-time",
      "$ref": "#/definitions/instant"
    },
    "lastModifiedById": {
      "title": "Last modified by id",
      "readOnly": false,
      "type": "integer"
    },
    "accountNonExpired": {
      "title": "Account non expired",
      "readOnly": true,
      "type": "boolean"
    },
    "createdById": {
      "title": "Created by id",
      "readOnly": false,
      "type": "integer"
    },
    "username": {
      "title": "Username",
      "readOnly": true,
      "type": "string"
    },
    "accountNonLocked": {
      "title": "Account non locked",
      "readOnly": true,
      "type": "boolean"
    }
  },
  "definitions": {
    "instant": {
      "type": "string",
      "properties": {
        "nano": {
          "title": "Nano",
          "readOnly": true,
          "type": "integer"
        },
        "epochSecond": {
          "title": "Epoch second",
          "readOnly": true,
          "type": "integer"
        }
      }
    }
  },
  "type": "object",
  "$schema": "http://json-schema.org/draft-04/schema#"
}

I can't get it validated in http://www.jsonschemavalidator.net/

Found 4 error(s)
  Message:Invalid type. Expected String but got Object.
  Schema path: #/definitions/instant/type

  Message: Invalid type. Expected String but got Null.
  Schema path: #/definitions/instant/type

  Message: Invalid type. Expected Integer but got Null.
  Schema path: #/properties/createdById/type

  Message: Invalid type. Expected Integer but got Null.
  Schema path: #/properties/lastModifiedById/type

I use a default spring installation with spring-data-rest.

For some reason, my Instant get serialized under a content sub key.

I asked the question here.

Anyone know what's happening ?


Affects: 2.5.6 (Hopper SR6)

Reference URL: https://github.com/mozilla-services/react-jsonschema-form/issues/447#issuecomment-274263459

Issue Links:

  • DATAREST-985 Invalid json schema generated by spring-data-rest
    ("is duplicated by")

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.