public PrintOutput generate()

in src/main/java/org/apache/openejb/tools/release/cmd/ReleaseNotes.java [79:178]


    public PrintOutput generate(final String version,
                                @Option("include-versions") final String includeVersions,
                                @Option("account") @Default("default") final Account account) throws ExecutionException, InterruptedException {

        final Set<String> versions = new HashSet<>();
        versions.add(version);
        if (includeVersions != null) {
            versions.addAll(Arrays.asList(includeVersions.split(" *, *| ")));
        }

        final Client client = account.getClient();
        final SearchRestClient searchClient = client.getSearchClient();

        final Map<String, Issue> issuesByKey = new HashMap<>();
        for (final String ver : versions) {
            final String s = "project = TOMEE AND status = Resolved AND fixVersion = " + ver;
            final SearchResult result = searchClient.searchJql(s).get();

            for (final Issue issue : result.getIssues()) {
                issuesByKey.put(issue.getKey(), issue);
            }
        }

        final List<IssueType> sections = Arrays.asList(
                client.getIssueType("Dependency upgrade"),
                client.getIssueType("New Feature"),
                client.getIssueType("Bug"),
                client.getIssueType("Improvement"),
                client.getIssueType("Task"),
                client.getIssueType("Documentation"),
                client.getIssueType("Sub-task"),
                client.getIssueType("Wish")
        );

        return out -> {
            out.println("= Apache TomEE " + version + " Release Notes\n" +
                    ":index-group: Release Notes\n" +
                    ":jbake-type: page\n" +
                    ":jbake-status: published");

            final List<Issue> cveIssues = new ArrayList<>();

            for (final IssueType section : sections) {

                final Map<Boolean, List<Issue>> issuesPartitionedByCve = issuesByKey.values()
                        .stream().filter(issue -> issue.getIssueType().getName().equals(section.getName()))
                        .collect(Collectors.partitioningBy(issue ->
                                issue.getLabels().stream().anyMatch(label -> "cve".equals(label.toLowerCase(Locale.ROOT)))));

                final List<Issue> issues = Stream.of(issuesPartitionedByCve.values())
                        .flatMap(Collection::stream).flatMap(Collection::stream)
                        .collect(Collectors.toList());

                if (issues.size() <= 0) continue;

                cveIssues.addAll(issuesPartitionedByCve.get(true));

                out.println();
                out.printf("== %s%n", section.getName());
                out.println();
                out.println("[.compact]");

                if (section.getName().equals("Dependency upgrade")) {
                    removeSuperseded(issues).stream()
                            .map(Upgrade::new)
                            .sorted(Comparator.comparing(Upgrade::getSummary))
                            .forEach(upgrade -> {
                                out.printf(" - link:https://issues.apache.org/jira/browse/%s[%s] %s%n",
                                        upgrade.getKey(),
                                        upgrade.getKey(),
                                        upgrade.getSummary());

                            });
                } else {
                    for (final Issue issue : issues) {
                        out.printf(" - link:https://issues.apache.org/jira/browse/%s[%s] %s%n",
                                issue.getKey(),
                                issue.getKey(),
                                issue.getSummary());
                    }
                }

            }

            if(cveIssues.size() > 0) {
                //CVE section
                out.println();
                out.printf("== %s%n", "Fixed Common Vulnerabilities and Exposures (CVEs)");
                out.println();
                out.println("[.compact]");

                for (final Issue issue : cveIssues) {
                    out.printf(" - link:https://issues.apache.org/jira/browse/%s[%s] %s%n",
                            issue.getKey(),
                            issue.getKey(),
                            issue.getSummary());
                }
            }
        };
    }