Java. Cast generi c Список к списку объектов с фабрики - PullRequest
1 голос
/ 24 апреля 2020

Можно ли привести объекты List к списку объектов из шаблона Factory?

У меня есть конечная точка REST в Джерси, и я переносу данные из одной среды в другую. Я sh опубликую некоторый список Объектов и приведу их к нужному объекту, взятому из фабричного образца

@Path("/migrateTableAtOnce")
@Consumes(MediaType.APPLICATION_JSON)
public <T> Response saveObjectIntoDb(List<T> listOfObj) {

    // if listOfObj.getTableName() == "MW_ID_GENERATOR" tableOject gets new MwIdGenerator()
    myEntity tableObject = myEntityFactory.getTable(listOfObj.getTableName());


    return Response.status(201).entity("ok").build();

}

Возможно ли, что у меня есть только один метод публикации, который генерирует c Список. У меня есть 20 объектов, которые мне нужно передать, и я не хочу писать 20 методов публикации :( Я не знаю, как это сделать точно.

Один из моих методов выглядит так:

@POST
@Path("/migrateTableAtOnceMwIdGenerator")
@Consumes(MediaType.APPLICATION_JSON)
public Response saveObjectIntoDb(List<MwIdGenerator> listOfObj) {

    Boolean result = false;

    String dbResponse ="";
    try {
        dbResponse = obtainFacade().saveToDb(listOfObj);
        result = true;
    } catch (Exception e) {
        e.printStackTrace();
    }

    return Response.status(201).entity(result+" "+dbResponse).build();

}

Нет лучшего решения для решения этой проблемы?

1 Ответ

1 голос
/ 24 апреля 2020

Я публикую тело как пользовательский объект, и у меня есть список внутри этого объекта, например:

@POST
@Path("/migrateTableAtOnceMwIdGenerator")
@Consumes(MediaType.APPLICATION_JSON)
public Response saveObjectIntoDb(CustomObject object) {

    List <Stuff>list = object.getList();

и объект

public class CustomObject extends Serializable {

public List <Stuff>sList = null;
public List <OtherStuff>osList = null;
public List <TheBestStuff>tbsList = null; //etcetc

public List getList ()
{
    return list;
}

public void setList(List <Stuff>list)
{
    this.list = list;
}

public List getOsList ()
{
    return osList ;
}

public void setList(List <OtherStuff>osList)
{
    this.osList  = osList;
}

public List getTbsList  ()
{
    return tbsList;
}

public void setTbsList(List <TheBestStuff>tbsList)
{
    this.tbsList = tbsList;
}

, и Джерси может анализировать json объект в ваш пользовательский объект, при условии, что вы можете передать поля этого класса как json. Поскольку вы передаете данные с помощью json, вы ограничены в имплиментации, поскольку json охватывает только String, int, boolean и простую дату, но большинство значений можно передать как String а потом разбирать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...