private void doSessionAuth()

in src/main/java/org/apache/maven/plugins/changes/jira/RestJiraDownloader.java [710:751]


    private void doSessionAuth(CloseableHttpClient client, String jiraUrl)
            throws IOException, MojoExecutionException, NoRest {

        Server server = settings.getServer(jiraServerId);
        if (server != null) {
            SettingsDecryptionResult result = settingsDecrypter.decrypt(new DefaultSettingsDecryptionRequest(server));
            if (!result.getProblems().isEmpty()) {
                for (SettingsProblem problem : result.getProblems()) {
                    log.error(problem.getMessage());
                }
            } else {
                jiraUser = result.getServer().getUsername();
                jiraPassword = result.getServer().getPassword();
            }
        }

        if (jiraUser != null) {
            StringWriter jsWriter = new StringWriter();
            try (JsonGenerator gen = jsonFactory.createGenerator(jsWriter)) {
                gen.writeStartObject();
                gen.writeStringField("username", jiraUser);
                gen.writeStringField("password", jiraPassword);
                gen.writeEndObject();
            }

            HttpPost post = new HttpPost(jiraUrl + "/rest/auth/1/session");
            post.addHeader(HttpHeaders.CONTENT_TYPE, ContentType.APPLICATION_JSON.getMimeType());
            post.setEntity(new StringEntity(jsWriter.toString()));

            try (CloseableHttpResponse response = client.execute(post)) {
                int statusCode = response.getStatusLine().getStatusCode();
                if (statusCode != HttpStatus.SC_OK) {
                    if (statusCode != HttpStatus.SC_UNAUTHORIZED && statusCode != HttpStatus.SC_FORBIDDEN) {
                        // if not one of the documented failures, assume that there's no rest in there in the first
                        // place.
                        throw new NoRest();
                    }
                    throw new MojoExecutionException(String.format("Authentication failure status %d.", statusCode));
                }
            }
        }
    }