public static List<Change> getChanges(List<ChangeLogSet<? extends ChangeLogSet.Entry>> changes) { List<Change> result = new ArrayList<>(); for (ChangeLogSet<? extends ChangeLogSet.Entry> entries : changes) { for (ChangeLogSet.Entry entry : entries) { UserInfo user = UserInfo.getUser(entry.getAuthor()); result.add(new Change(user, entry.getMsgAnnotated(), entry.getCommitId(), null)); } } return result; } }
public static List<Change> getChanges(AbstractBuild<?, ?> build) { RepositoryBrowser repositoryBrowser = build.getProject().getScm().getBrowser(); List<Change> result = new ArrayList<>(); for (ChangeLogSet.Entry entry : build.getChangeSet()) { UserInfo user = UserInfo.getUser(entry.getAuthor()); String changeLink = null; if (repositoryBrowser != null) { try { @SuppressWarnings("unchecked") URL link = repositoryBrowser.getChangeSetLink(entry); if (link != null) { changeLink = link.toExternalForm(); } } catch (IOException e) { LOG.log(Level.WARNING, "Could not get changeset link for: " + build.getProject().getFullDisplayName() + " " + build.getDisplayName(), e); } } result.add(new Change(user, entry.getMsgAnnotated(), entry.getCommitId(), changeLink)); } return result; }
public ChangeEntryDTO convert(final ChangeLogSet.Entry source) { assert source != null; log.trace("Converting: {}", source); ChangeEntryDTO target = new ChangeEntryDTO(); // TODO: See if we need to pass both raw and annotated messages back? // target.setMessage(source.getMsg()); // FIXME: need to html-decode? target.setMessage(source.getMsgAnnotated()); target.setAuthor(userx.convert(source.getAuthor())); for (String path : source.getAffectedPaths()) { target.getPaths().add(path); } try { for (ChangeLogSet.AffectedFile file : source.getAffectedFiles()) { target.getFiles().add(convert(file)); } } catch (UnsupportedOperationException e) { // scm does not support getAffectedFiles() } return target; }