Обрабатывать подкласс arraylist как массив

У нас есть REST-API Джерси с аннотациями Swagger.
Пользовательский интерфейс Swagger работает, за исключением одного класса. Этот класс расширяет ArrayList<T>. И я ожидаю, что этот класс обрабатывается swagger как массив. Но это не так. Он обрабатывается как любой другой сложный объект, а его общедоступные члены отображаются в swagger-ui.

Вот сводка кода моего класса:

@JsonAutoDetect(getterVisibility = Visibility.NONE, fieldVisibility = Visibility.NONE, isGetterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE) 
public class ArraySubClass extends ArrayList<ElementClass> implements IAnInterface {

// constructors...

    public A getA() {
        // ...
    }
}

Swagger показывает этот класс как объект модели:

"ArraySubClass": {

    "id": "ArraySubClass",
    "description": "",
    "properties": {
        "a": {
            "$ref": "A"
        },
        "empty": {
            "type": "boolean"
        },
        "size": {
            "type": "integer",
            "format": "int32"
        }
    }
}

Что я могу сделать, чтобы swagger обрабатывал класс (расширяющийся от ArrayList<T>) как массив и чтобы swagger просто отображал его элементы, а не другие свойства?


person thersch    schedule 11.06.2014    source источник


Ответы (1)


вы можете скорее использовать класс ElementClass непосредственно в чванстве, поскольку это

@ApiOperation(value = "/yourEndPoint", notes = "comment for endpoint", response = ElementClass.class, responseContainer = "List")

Так что вы будете представлять содержимое своего класса в виде списка в возврате, а не вашего ArraySubClass, который может содержать другие данные/вещи, которые вы хотите скрыть! :)

Для получения дополнительной информации см. контейнер ответов

person jeorfevre    schedule 11.06.2014