private static List<Issues.Component> formatComponents(SearchResponseData data) { Collection<ComponentDto> components = data.getComponents(); List<Issues.Component> result = new ArrayList<>(); for (ComponentDto dto : components) { String uuid = dto.uuid(); Component.Builder builder = Component.newBuilder() .setOrganization(data.getOrganizationKey(dto.getOrganizationUuid())) .setKey(dto.getKey()) .setUuid(uuid) .setQualifier(dto.qualifier()) .setName(nullToEmpty(dto.name())) .setLongName(nullToEmpty(dto.longName())) .setEnabled(dto.isEnabled()); ofNullable(dto.getBranch()).ifPresent(builder::setBranch); ofNullable(dto.getPullRequest()).ifPresent(builder::setPullRequest); ofNullable(emptyToNull(dto.path())).ifPresent(builder::setPath); result.add(builder.build()); } return result; }
private List<Issue> toIssues(Issues.SearchWsResponse issuesSearchWsResponse, String branch) { List<Issues.Issue> issues = issuesSearchWsResponse.getIssuesList(); if (issues == null) { return Collections.emptyList(); } List<Issues.Component> components = issuesSearchWsResponse.getComponentsList(); Predicate<String> supported = ((Predicate<String>) Qualifiers.FILE::equals).or(Qualifiers.UNIT_TEST_FILE::equals); List<Issue> res = new ArrayList<>(); for (Issues.Issue issue : issues) { Optional<Issues.Component> componentOptional = components.stream() .filter(c -> supported.test(c.getQualifier())) .filter(c -> c.getKey().equals(issue.getComponent())) .findFirst(); File file = null; if (componentOptional.isPresent()) { Issues.Component component = componentOptional.get(); try { file = componentCache.get(component.getKey(), () -> toFile(componentOptional.get(), branch)); } catch (Exception e) { throw new IllegalStateException("Failed to get component file for " + component.getKey(), e); } } res.add(toIssue(issue, file)); } return res; }
private static List<Issues.Component> formatComponents(SearchResponseData data) { Collection<ComponentDto> components = data.getComponents(); List<Issues.Component> result = new ArrayList<>(); for (ComponentDto dto : components) { String uuid = dto.uuid(); Component.Builder builder = Component.newBuilder() .setOrganization(data.getOrganizationKey(dto.getOrganizationUuid())) .setKey(dto.getKey()) .setUuid(uuid) .setQualifier(dto.qualifier()) .setName(nullToEmpty(dto.name())) .setLongName(nullToEmpty(dto.longName())) .setEnabled(dto.isEnabled()); setNullable(dto.getBranch(), builder::setBranch); setNullable(dto.getPullRequest(), builder::setPullRequest); setNullable(emptyToNull(dto.path()), builder::setPath); result.add(builder.build()); } return result; }
private File toFile(Issues.Component component, String branch) { ShowRequest showRequest = new ShowRequest().setComponent(component.getKey()); if (isNotBlankAndNotEmpty(branch)) { showRequest.setBranch(branch); } Components.ShowWsResponse showWsResponse = wsClient.components().show(showRequest); StringBuilder sb = new StringBuilder(component.getPath()); for (Components.Component a : showWsResponse.getAncestorsList()) { if (Qualifiers.MODULE.equals(a.getQualifier()) && a.getPath() != null) { sb.insert(0, a.getPath() + File.separator); } } return new File(sb.toString()); }