Я переписываю код, потому что мне пришлось обновиться до последней версии Джерси (2.18), и я не понимаю, почему свободный API работает так, как он делает.Проблемы с белым API-интерфейсом Джерси
Почему это компиляции:
Response.Status.Family responseFamily = webTarget
.request(MediaType.APPLICATION_JSON)
.post(Entity.entity(entity, MediaType.APPLICATION_JSON_TYPE))
.getStatusInfo()
.getFamily();
Но это не делает:
Response response = webTarget
.request(MediaType.APPLICATION_JSON)
.post(Entity.entity(entity, MediaType.APPLICATION_JSON_TYPE));
response.getStatusInfo().getFamily(); // the method getStatusInfo() isn't available here; why not?
Для справки, вот весь мой метод, который используется для работы штрафа в Джерси 2.5.1, но не будет даже скомпилировать в 2.18 из-за метода getStatusInfo():
public void postGenericJson(Object entity, String... pathSegments) {
Response response;
WebTarget webTarget = httpsClient.target(apiBaseUrl);
try {
for (String pathSegment : pathSegments) {
webTarget = webTarget.path(pathSegment);
}
response = webTarget.request(MediaType.APPLICATION_JSON)
.post(Entity.entity(entity, MediaType.APPLICATION_JSON_TYPE));
log.trace("Issued POST to '" + webTarget.getUri().toString() + "'.");
} catch (Exception e) {
log.error("Error posting DTO: POST " + webTarget.getUri().toString(), e);
throw new RuntimeException("Error posting DTO.");
}
if (response.getStatusInfo().getFamily() != Response.Status.Family.SUCCESSFUL) {
throw new ResponseProcessingException(response, "Error POSTing DTO");
}
}