2016-09-13 4 views
1

Это мой первый вопрос о stackoverflow; Мне нужно сделать запрос на отправку (используя класс inputBean/pojo для необходимых параметров) и получить ответ (используя класс outputBean/pojo для сопоставления ответа json) с помощью jira rest api, в настоящее время я использую трикотаж для выполнения unmarshallowing вещи с JSON и аннотации, вот код:JIRA REST API, java request/response

public Resource create(CreateIssueRequest createIssueRequest) { 

    //creating the issue builder with project key and issuetype 
       IssueInputBuilder issueBuilder = new IssueInputBuilder(
         createIssueRequest.getFields().getProject().getKey() 
        ,createIssueRequest.getFields().getIssueType().getCodeName()); 

    //setting issue fields using the inputBean 
       issueBuilder.setSummary(createIssueRequest.getFields().getSummary()); 
       issueBuilder.setDescription(createIssueRequest.getFields().getDescription()); 

    //requesting the issue creation method , BasicIssue contains the same fields as my outputbean , this whole thing is the request 
       BasicIssue issue = jiraClient.getClient().getIssueClient().createIssue(issueBuilder.build()).claim(); 

    //creating the output bean 
       CreateIssueResponse createIssueResponse = new CreateIssueResponse(
         issue.getId(), 
         issue.getKey(), 
         issue.getSelf()); 

       try { 
       jiraClient.getClient().getMetadataClient().getStatus(new URI("localhost:8080/rest/api/2/issue")); 
      } catch (URISyntaxException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      } 
       Resource resource = new Resource(); 

      try { 
       jiraClient.getClient().close(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

      resource.setData(createIssueResponse); 
      return resource; 
} 

, что мне удалось достичь с помощью этого кода создает проблему и получить соответствующий outputbean, что я хотел бы вместо этого получает экземпляр ответа, как джерси один, у которого есть дополнительная информация, связанная с ним, как статус ответа + ответ объекта (с использованием этого кода единственное, что я получаю, это сущность); я искал что-то подобное в jira rest api, но ничего не нашел.

я мог бы неясно, если enyone готов помочь мне, я буду рад прояснить любые сомнения

апи: https://developer.atlassian.com/jiradev/jira-apis/jira-rest-apis/jira-rest-api-tutorials/jira-rest-api-example-create-issue

я решил, окружающие «пост запроса» с попыткой поймать (когда запрос оленьей кожи вернется 201 он бросает это исключение ведьма имеет некоторые полезные данные, такие как

try{ 

       issue = jiraClient.getClient().getIssueClient().createIssue(issueBuilder.build()).claim(); 

       }catch(RestClientException e){ 

        ErrorResource error = new ErrorResource(); 
        error.setStatus(e.getStatusCode().get()); 
        error.setDetail(e.getLocalizedMessage()); 
        error.setTitle("An error occurred while creating the issue"); 
        resource.setErrors(new ArrayList<ErrorResource>()); 
        resource.getErrors().add(error); 
        return resource; 

       } 

ответ

1

Как вы можете видеть, официальный клиент JIRA REST абстрагирует ответ и дает вам только объект (ы) возвращается из него
Если вы хотите продолжать пользоваться клиентом, вам нужно создать фильтр или перехватчик или что-то, что улавливает ответ до того, как оно попадет к клиенту.

+0

Решено поймать RestClientException, спасибо – 3Daygg

+0

Да, если вы хотите просто получить атрибуты в ситуациях с ошибками, то поймать исключение - хорошее место. – rorschach

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