2015-03-01 5 views
0

Я попытался это сделать Google, но, похоже, не получил четкого ответа на этот вопрос.Редактировать Проблемы JIRA Java Rest

Я пытаюсь редактировать проблемы JIRA с помощью Java через JIRA REST API.

Может ли кто-нибудь предоставить полный пример редактирования пользовательского или стандартного поля, включая декларации библиотек? Полностью новый для REST и JIRA.

Я не могу использовать плагины, поскольку я буду работать с несколькими экземплярами JIRA, и я не контролирую сервер JIRA, к которому я подключаюсь.

Я нашел это:

https://answers.atlassian.com/questions/127302/update-issue-with-jira-rest-java-client-2-0-0-m5

Но я не понимаю.

Спасибо за вашу помощь :)

+0

Пожалуйста, см [этот ответ] (http://stackoverflow.com/a/28676736/357403) в очень похожий вопрос. – Koshinae

ответ

1

сведущего найти способ с помощью Jira REST и библиотеку Джерси. В настоящее время Java API Jira поддерживает чтение и создание билетов, но не редактирование.

package jiraAlerting; 

import javax.net.ssl.TrustManager; 

import com.sun.jersey.api.client.Client; 
import com.sun.jersey.api.client.ClientResponse; 
import com.sun.jersey.api.client.WebResource; 
import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter; 


public class restLab { 

    WebResource webResource; 
    static { 
     //for localhost testing only 
     javax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier(
     new javax.net.ssl.HostnameVerifier(){ 

      public boolean verify(String hostname, 
        javax.net.ssl.SSLSession sslSession) { 
       if (hostname.equals("your host here")) { 
        return true; 
       } 
       return false; 
      } 
     }); 
    } 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     restLab rl = new restLab(); 

     //rl.connectToJiraViaRest(); 

     rl.editJiraTicket(); 
    } 

    public void connectToJiraViaRest(){ 
     //System.setProperty("javax.net.ssl.trustStore", "C:/SSL/clientkeystore.jks"); 

     Client client = Client.create(); 
     client.addFilter(new HTTPBasicAuthFilter("username","password")); 

     webResource = client.resource("https://host/jira/rest/api/2/issue/issueID"); 

    } 

    public void editJiraTicket(){ 
     connectToJiraViaRest(); 

     ClientResponse response = webResource.type("application/json").put(ClientResponse.class,"{\"fields\":{\"customfield_11420\":{\"value\" :\"No\"}}}"); 
     //"{\"fields\":{\"customfield_11420\":\"Yes\"}}" 
     response.close(); 
    } 
} 
0

Вы можете отредактировать вопрос Jira, написав Json to OutputStream и проверить код ответа. Если это 401, то ваша проблема с jira будет успешно отредактирована.

public String getAuthantication(String username, String password) { 
    String auth = new String(Base64.encode(username + ":" + password)); 
    return auth; 
} 

public static HttpURLConnection urlConnection(URL url, String encoding) throws IOException { 
    HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
    connection.setRequestProperty("Authorization", "Basic " + encoding); 
    connection.addRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"); 
    connection.setRequestProperty("Content-Type", "application/json"); 
    return connection; 
} 

public void updateJiraIssue(JiraCQCredential jiraCq) throws IOException { 

    String summary = "Edit Jira Issue"; 
    String description = "Testing of Jira Edit"; 
    String assigne = "Any name who has jira account"; 
    String issueType = "Bug"; 

    String encodedAuthorizedUser = getAuthantication("pass your username", "pass your password"); 
    URL url = new URL("http://bmh1060149:8181/rest/api/2/issue/WFM-90"); 
    HttpURLConnection httpConnection = urlConnection(url, encodedAuthorizedUser); 
    httpConnection.setRequestMethod("PUT"); 

    String jsonData = "{\"fields\" : {\"summary\":" + "\"" + summary + "\"" + ",\"description\": " + "\"" 
      + description + "\"" + " ," + "\"issuetype\": {\"name\": " + "\"" + issueType + "\"" 
      + " },\"assignee\": {\"name\":" + "\"" + assigne + "\"" + ",\"emailAddress\": \"[email protected]\"}}}"; 

    byte[] outputBytes = jsonData.getBytes("UTF-8"); 

    httpConnection.setDoOutput(true); 
    OutputStream out = httpConnection.getOutputStream(); 
    out.write(outputBytes); 
    int responseCode = httpConnection.getResponseCode(); 
    if(responseCode == 401){ 
     System.out.println("Issue updated successfully with the mentioned fields"); 
    } 
} 

Вы не можете передать свой Json прямо в httpConnection. Поэтому преобразуйте его в массив байтов, а затем напишите в OutputStream.

1

Обновление меток и резюме с JJRC 4.0.0:

JiraRestClientFactory factory = new AsynchronousJiraRestClientFactory(); 
URI uri = new URI(JIRA_URL); 
client = factory.createWithBasicHttpAuthentication(uri, JIRA_ADMIN_USERNAME, JIRA_ADMIN_PASSWORD); 
Map<String, FieldInput> map = new HashMap<>(); 
String[] labels = {"label1", "label2"}; 
map.put("labels", new FieldInput("labels", Arrays.asList(labels))); 
map.put("summary", new FieldInput("summary", "issue summary")); 
IssueInput newValues = new IssueInput(map); 
client.getIssueClient().updateIssue("XX-1000", newValues).claim(); 
Смежные вопросы