public void doExecute()

in src/main/java/org/apache/maven/plugins/jira/RestJiraDownloader.java [111:171]


    public void doExecute()
        throws Exception
    {

        Map<String, String> urlMap = JiraHelper.getJiraUrlAndProjectName( project.getIssueManagement().getUrl() );
        String jiraUrl = urlMap.get( "url" );
        String jiraProject = urlMap.get( "project" );

        WebClient client = setupWebClient( jiraUrl );

        // We use version 2 of the REST API, that first appeared in JIRA 5
        // Check if version 2 of the REST API is supported
        // http://docs.atlassian.com/jira/REST/5.0/
        // Note that serverInfo can always be accessed without authentication
        client.replacePath( "/rest/api/2/serverInfo" );
        client.accept( MediaType.APPLICATION_JSON );
        Response siResponse = client.get();
        if ( siResponse.getStatus() != Response.Status.OK.getStatusCode() )
        {
            throw new NoRest( "This JIRA server does not support version 2 of the REST API, "
                + "which maven-changes-plugin requires." );
        }

        doSessionAuth( client );

        resolveIds( client, jiraProject );

        String jqlQuery = new JqlQueryBuilder( log ).urlEncode( false ).project( jiraProject )
            .fixVersion( getFixFor() ).fixVersionIds( resolvedFixVersionIds ).statusIds( resolvedStatusIds )
            .priorityIds( resolvedPriorityIds ).resolutionIds( resolvedResolutionIds )
            .components( resolvedComponentIds ).typeIds( resolvedTypeIds ).sortColumnNames( sortColumnNames )
            .filter( filter )
            .build();

        StringWriter searchParamStringWriter = new StringWriter();
        try ( JsonGenerator gen = jsonFactory.createGenerator( searchParamStringWriter ) ) 
        {
            gen.writeStartObject();
            gen.writeStringField( "jql", jqlQuery );
            gen.writeNumberField( "maxResults", nbEntriesMax );
            gen.writeArrayFieldStart( "fields" );
            // Retrieve all fields. If that seems slow, we can reconsider.
            gen.writeString( "*all" );
            gen.writeEndArray();
            gen.writeEndObject();
        }
        client.replacePath( "/rest/api/2/search" );
        client.type( MediaType.APPLICATION_JSON_TYPE );
        client.accept( MediaType.APPLICATION_JSON_TYPE );
        Response searchResponse = client.post( searchParamStringWriter.toString() );
        if ( searchResponse.getStatus() != Response.Status.OK.getStatusCode() )
        {
            reportErrors( searchResponse );
        }

        JsonNode issueTree = getResponseTree( searchResponse );
        assert issueTree.isObject();
        JsonNode issuesNode = issueTree.get( "issues" );
        assert issuesNode.isArray();
        buildIssues( issuesNode, jiraUrl, jiraProject );
    }