2015-06-24 3 views
0

Я переписываю код, потому что мне пришлось обновиться до последней версии Джерси (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"); 
    } 
} 

ответ

0

Это оказался вопрос Maven. У меня была собственная зависимость от jersey-server и jersey-client, как в версии 2.18, так и у другой зависимости, зависящей от jersey-1.9.1. Я думал, что я их исключил, но они все равно были в моем списке. Наконец, я понял, что использовал свое неправильное название пакета в моем исключении. Я изменил исключенную группуId на com.sun.jersey с org.glassfish.jersey.core, и теперь мой код компилируется.

0

Как я нашел в джерси API не RESPONS e, который возвращает информацию о состоянии, но это должно быть Response.StatusType, то же самое должно относиться к getFamily.

См джерси апи, сплетать сделать поиск Response.class https://jersey.java.net/apidocs/latest/jersey/index.html

Смежные вопросы