Swagger не отображает ObjectId как простую строку с Dropwizard-Swagger - PullRequest
0 голосов
/ 29 февраля 2020

У меня есть два класса POJO, которые используют ObjectId и возвращаются моей службой REST:

public final class ProjectInfo
{
    @JsonProperty(required = true)
    private String name;

    // other properties ...

    @JsonProperty(required = true)
    @JsonSerialize(using = ObjectIdSerializer.class)
    private ObjectId id;

    public ProjectInfo() {
    }

    public String getName() {
        return name;
    }

    // Other getters/setters

    public ObjectId getId() {
        return id;
    }

    public void setId(ObjectId id) {
        this.id = id;
    }
}

и

public class BaseWebsiteInfo
{
    @JsonProperty(required = true)
    private String firstParagraphOfAboutMe;

    // Other properties

    @JsonProperty(required = true)
    @JsonSerialize(using = ObjectIdSerializer.class)
    private ObjectId id;

    public BaseWebsiteInfo() {
        id = new ObjectId();
    }

    // Other getters/setters    

    public ObjectId getId() {
        return id;
    }

    public void setId(ObjectId id) {
        this.id = id;
    }
}

Я использую Dropwizard (v1.3.19) и dropwizard- чванство (v1.3.12-1). Моя конечная цель состоит в том, чтобы я хотел, чтобы мой сгенерированный swagger. json был моделью ObjectId, представляющей собой просто строку, например:

  "ObjectId" : {
      "type" : "string"
  }

Однако я получаю следующее:

"ObjectId" : {
  "type" : "object",
  "properties" : {
    "timestamp" : {
      "type" : "integer",
      "format" : "int32"
    },
    "machineIdentifier" : {
      "type" : "integer",
      "format" : "int32"
    },
    "processIdentifier" : {
      "type" : "integer",
      "format" : "int32"
    },
    "counter" : {
      "type" : "integer",
      "format" : "int32"
    },
    "time" : {
      "type" : "integer",
      "format" : "int64"
    },
    "date" : {
      "type" : "string",
      "format" : "date-time"
    },
    "timeSecond" : {
      "type" : "integer",
      "format" : "int32"
    }
  }
}

Я пытался использовать пользовательский JsonSerializer (мой класс ObjectIdSerializer) согласно этому посту Используя Jon go и Jackson 2, как десериализовать MongoDB ObjectId (представленный в String _id в POJO) в шестнадцатеричное Строковое представление?

Однако я не получаю никаких изменений в моей модели в swagger. json. У кого-нибудь есть идеи, как мне это сделать в Dropwizard?

...