java promise claim,如何使用Java Rest API在Jira中创建问题

I have checked almost every link but could not find the proper solution for it.

I need to create an issue in JIRA using java rest api.

Code :-

import java.io.IOException;

import java.net.URI;

import java.net.URISyntaxException;

import org.codehaus.jettison.json.JSONException;

import com.atlassian.jira.rest.client.api.JiraRestClient;

import com.atlassian.jira.rest.client.api.domain.BasicProject;

import com.atlassian.jira.rest.client.api.domain.Issue;

import com.atlassian.jira.rest.client.internal.ServerVersionConstants;

import com.atlassian.jira.rest.client.internal.async.AsynchronousJiraRestClientFactor;

public class TestingRestAPI {

private static URI jiraServerUri =

URI.create("https://vgsvdgteam.jira.com/rest/api/2/project");

public static void main(String[] args) throws URISyntaxException,

JSONException, IOException {

final AsynchronousJiraRestClientFactory factory = new

AsynchronousJiraRestClientFactory();

final JiraRestClient restClient = factory.createWithBasicHttpAuthentication(jiraServerUri, "liasia","cooki123!!");

try {

final int buildNumber = restClient.getMetadataClient().getServerInfo().claim().getBuildNumber();

System.out.println("---------------------------------"+buildNumber);

// first let's get and print all visible projects (only jira4.3+)

System.out.println("Print all print all visible projects:");

if (buildNumber >= ServerVersionConstants.BN_JIRA_6) {

final Iterable allProjects = restClient.getProjectClient().getAllProjects().claim();

for (BasicProject project : allProjects) {

System.out.println(project);

}

}

// then print one issue details

System.out.println("Print issue TST-63239");

final Issue issue = restClient.getIssueClient().getIssue("TST-63239").claim();

System.out.println(issue);

}

finally {

restClient.close();

}

}

}

Dependency added in pom.xml :-

com.atlassian.jira

jira-rest-java-client-api

2.0.0-m25

provided

com.atlassian.jira

jira-rest-java-client-core

2.0.0-m25

provided

Exception getting :-

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".

SLF4J: Defaulting to no-operation (NOP) logger implementation

SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

Exception in thread "main" RestClientException{statusCode=Optional.of(404), errorCollections=[ErrorCollection{status=404, errors={}, errorMessages=[]}]}

at com.atlassian.jira.rest.client.internal.async.DelegatingPromise.claim(DelegatingPromise.java:47)

at com.citrix.restjira.jiratest.TestingRestAPI.main(TestingRestAPI.java:25)

Caused by: RestClientException{statusCode=Optional.of(404), errorCollections=[ErrorCollection{status=404, errors={}, errorMessages=[]}]}

at com.atlassian.jira.rest.client.internal.async.AbstractAsynchronousRestClient$2.apply(AbstractAsynchronousRestClient.java:166)

at com.atlassian.jira.rest.client.internal.async.AbstractAsynchronousRestClient$2.apply(AbstractAsynchronousRestClient.java:160)

at com.atlassian.httpclient.api.ResponsePromiseMapFunction.apply(ResponsePromiseMapFunction.java:48)

at com.atlassian.httpclient.api.ResponsePromiseMapFunction.apply(ResponsePromiseMapFunction.java:12)

at com.atlassian.util.concurrent.Promises$Of$3.apply(Promises.java:285)

at com.atlassian.util.concurrent.Promises$2.onSuccess(Promises.java:162)

at com.google.common.util.concurrent.Futures$7.run(Futures.java:1072)

After checking the exception it seems the claim() function of Serverinfo class has the problem.

Or the URL has any issue ?

Can some help me to overcome this issue or any useful link?

解决方案

I'll share with you a code i use to create issues in Jira using IssueInputBuilder class:

JiraRestClient restClient;

public boolean createIssue(IssueJiraDTO issueDTO) throws IOException{

final IssueInputBuilder builder = new IssueInputBuilder(PROJECT_KEY, issueDTO.getIssueType(), issueDTO.getSummary());

final ComponentRestClient componentClient = restClient.getComponentClient();

try {

openClient();

//completamos los datos

Component component = componentClient.getComponent(new URI(issueDTO.getComponent())).claim();

builder.setComponents(component);

builder.setFieldValue(CODCESCEFIELDID, issueDTO.getCodcesce());

builder.setFieldValue(LINKCAFIELD, issueDTO.getLinkCA().trim());

builder.setFieldValue(SECURITYFIELD, ComplexIssueInputFieldValue.with("id", issueDTO.getSecurityLevel()));

builder.setPriorityId(issueDTO.getPriority());

builder.setDescription(issueDTO.getDescription());

final IssueInput input = builder.build();

// create issue

final IssueRestClient client = restClient.getIssueClient();

final BasicIssue issue = client.createIssue(input).claim();

logger.info("Incidencia creada correctamente: "+ issue.getId());

}catch(Exception e){

logger.error("Error al crear la Issue en Jira: " + issueDTO.getCodcesce(), e);

} finally {

closeClient();

}

return true;

}

openClient basically do:

restClient = new AsynchronousJiraRestClientFactory().createWithBasicHttpAuthentication(new URI(JIRA_URL), JIRA_ADMIN_USERNAME, JIRA_ADMIN_PASSWORD);

Hope it helps you.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Java使用Camunda并使用Java API完成用户审核流程,需要进行以下配置: 1. 引入Camunda依赖:在项目的pom.xml文件添加以下依赖: ``` <dependency> <groupId>org.camunda.bpm</groupId> <artifactId>camunda-engine</artifactId> <version>7.14.0</version> </dependency> ``` 2. 配置Camunda引擎:在Spring Boot应用程序的启动类添加以下代码: ``` @Configuration public class CamundaConfig { @Bean public ProcessEngine processEngine() { return ProcessEngines.getDefaultProcessEngine(); } @Bean public RepositoryService repositoryService() { return processEngine().getRepositoryService(); } @Bean public RuntimeService runtimeService() { return processEngine().getRuntimeService(); } @Bean public TaskService taskService() { return processEngine().getTaskService(); } @Bean public HistoryService historyService() { return processEngine().getHistoryService(); } @Bean public ManagementService managementService() { return processEngine().getManagementService(); } } ``` 3. 创建流程定义:创建一个BPMN 2.0文件来定义流程。可以使用Camunda Modeler或任何BPMN 2.0兼容的工具(例如Eclipse BPMN 2.0模型编辑器)。 4. 部署流程定义:在应用程序启动时,将BPMN 2.0文件部署到Camunda引擎。可以使用以下代码将BPMN 2.0文件部署到Camunda引擎: ``` Deployment deployment = repositoryService.createDeployment() .addClasspathResource("processes/user-approval.bpmn") .deploy(); ``` 5. 启动流程实例:使用Camunda的RuntimeService API,启动一个新的流程实例: ``` ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("userApprovalProcess", variables); ``` 6. 处理任务:当流程到达任务时,使用Camunda的TaskService API,处理该任务: ``` Task task = taskService.createTaskQuery() .processInstanceId(processInstance.getId()) .taskCandidateGroup("approver") .singleResult(); taskService.claim(task.getId(), "demo"); taskService.complete(task.getId()); ``` 以上为基本的配置和操作步骤,具体实现细节需要根据具体业务需求进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值