Отображение объектов-значений в скалярные типы в Springfox / Swagger - PullRequest
0 голосов
/ 05 июня 2019

Я кое-что не могу понять, можно ли это сделать, и если да, то как.У меня есть куча объектов-значений (неизменяемые классы, которые обертывают скалярное значение, например строку, которая содержит логику проверки).Так, например, если у меня есть следующий базовый класс:

public class ScalarValueObject<T> {

    private final T value;

    protected ScalarValueObject(final T value) {
        this.value = value;
    }

     public final T getValue() {
         return value;
     }
}

и объект значения на основе строки:

public class StringValueObject extends ScalarValueObject<String> {

    protected StringValueObject(final String value) {
        super(value);
    }

    public final String asString() {
        return getValue();
    }
}

и конкретный пример объекта значения на основе строки:

public final class IBAN extends StringValueObject {

    public IBAN(final String iban) {
        super(iban);
        // check if the IBAN is valid
    }
}

Теперь я использую Springfox и Swagger для документирования службы REST, которая использует эти объекты-значения.Если я ничего не сделаю, класс IBAN будет задокументирован следующим образом:

Account {
  iban: IBAN {...}
}

В то время как я хотел бы, чтобы документ был следующим:

Account: {
  iban: string
}

Thisможет быть достигнуто с помощью .directModelSubstitute(IBAN.class, String.class) для создания экземпляра Docket.Но очевидно, что всякий раз, когда я придумываю новый объект на основе строки, мне нужно будет добавлять его в конструкцию Docket.

Возможно ли захватить базовый класс и превратить его во все, что он представляет?В идеале на ScalarValueObject, но даже на StringValueObject было бы хорошо.

...