0

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<BasicProject> 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 :-

<dependency>
            <groupId>com.atlassian.jira</groupId>
            <artifactId>jira-rest-java-client-api</artifactId>
            <version>2.0.0-m25</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.atlassian.jira</groupId>
            <artifactId>jira-rest-java-client-core</artifactId>
            <version>2.0.0-m25</version>
            <scope>provided</scope>
        </dependency>

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?

1 Answer 1

0

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.

Sign up to request clarification or add additional context in comments.

7 Comments

Thanks ...But what is restClient and openClient method defined here?
Thanks..Very helpful. can you share something about IssueJiraDTO issueDTO?
`IssueJiraDTO is just a custom bean with the data to be inserted in the issue. IF it was useful, you could accept my answer @Littlebird :D
I tried your code with some modification but still getting the same exception :(
404 means not foud, so maybe your url is wrong, or the service is down in https://vgsvdgteam.jira.com
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.