Можно ли ввести результат метода-производителя в запрос JAX-RS? - PullRequest
0 голосов
/ 11 октября 2018

У меня есть служебный класс:

@RequestScoped
public class StatsServicesDataImpl {
    @Qualifier
    @Retention(RUNTIME)
    @Target({ METHOD, PARAMETER })
    public @interface Lines {
    }

    @Qualifier
    @Retention(RUNTIME)
    @Target({ METHOD, PARAMETER })
    public @interface Versions {
    }

    public StatsServicesDataImpl() {
    }


    @Produces
    @Versions
    @Transactional(TxType.REQUIRES_NEW)
    public String getVersionsAsJsonString() {
        log.debug("CDI calls getVersionsAsJsonString");
    ...
        return json.toString();
    }

    @Produces
    @Lines
    @Transactional(TxType.REQUIRES_NEW)
    public String getLinesAsJsonString() {
        log.debug("CDI calls getLinesAsJsonString");
    ...
        return json.toString();
    }
}

А затем класс JAX-RS с:

@GET
@Path("/versions")
@Produces(MediaType.APPLICATION_JSON)
@Inject
public Response getVersions(@Versions String versions) {
    log.debug("Endpoint versions :" + versions);
    return Response.ok(versions).build();
}

@GET
@Path("/lines")
@Produces(MediaType.APPLICATION_JSON)
@Inject
public Response getLines(@Lines String lines) {
    log.debug("Endpoint lines :" + lines);
    return Response.ok(lines).build();
}

Он не работает должным образом :( Я хотел, чтобы, когда явызывать строки URL, CDI получает строки (@Inject и @Lines), и у меня есть JSON. Но когда я вызываю строки ( http: //...../lines), я получаю:

CDI calls getLinesAsJsonString
Endpoint lines :{"lignes":[{"id":97,"idu":1,"nom":"01"},{"id":98,"idu":2,"nom":"02"},{"id":99,"idu":3,"nom":"03"},{"id":100,"idu":4,"nom":"04"},{"id":101,"idu":5,"nom":"05"}]}
CDI calls getVersionsAsJsonString
Endpoint versions :{"versions":[{"id":71,"vdhId":19,"vdrId":18,"vdpId":18,"vdhNom":"Importé le 2017-08-10 Septembre 2017 V1","vdhDateExp":"Sep 1, 2017 12:00:00 AM","jexDateDeb":"Sep 1, 2017 12:00:00 AM","jexDateFin":"Aug 10, 2018 12:00:00 AM","downloadedDate":"mai 1, 2018"}]}
Endpoint lines :

И когда я вызываю версии:

CDI calls getLinesAsJsonString
Endpoint lines :{"lignes":[{"id":97,"idu":1,"nom":"01"},{"id":98,"idu":2,"nom":"02"},{"id":99,"idu":3,"nom":"03"},{"id":100,"idu":4,"nom":"04"},{"id":101,"idu":5,"nom":"05"}]}
CDI calls getVersionsAsJsonString
Endpoint versions :{"versions":[{"id":71,"vdhId":19,"vdrId":18,"vdpId":18,"vdhNom":"Importé le 2017-08-10 Septembre 2017 V1","vdhDateExp":"Sep 1, 2017 12:00:00 AM","jexDateDeb":"Sep 1, 2017 12:00:00 AM","jexDateFin":"Aug 10, 2018 12:00:00 AM","downloadedDate":"mai 1, 2018"}]}
Endpoint versions :

Тот же результат :( Как будто были вызваны оба метода производителя ...

Любая идея, как объединить JAX-RS и CDI, чтобы я мог вставить результат запроса (созданного CDI) в ответ Rest-запроса?

...