package com.sonyericsson.hudson.plugins.gerrit.trigger; import hudson.Extension; import hudson.MarkupText; import hudson.MarkupText.SubText; import hudson.model.Run; import hudson.scm.ChangeLogAnnotator; import hudson.scm.ChangeLogSet.Entry; import java.util.regex.Pattern; import com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.GerritCause; /** * Turns "Change-ID: XXXX" into a hyperlink to Gerrit. * * @author Kohsuke Kawaguchi */ @Extension public class ChangeIdAnnotator extends ChangeLogAnnotator { @Override public void annotate(Run<?, ?> build, Entry change, MarkupText text) { for (SubText token : text.findTokens(CHANGE_ID)) { GerritCause gerritCause = build.getCause(GerritCause.class); if (gerritCause != null && gerritCause.getEvent() != null && gerritCause.getEvent().getProvider() != null && gerritCause.getEvent().getProvider().getUrl() != null && !gerritCause.getEvent().getProvider().getUrl().trim().isEmpty()) { token.href(gerritCause.getEvent().getProvider().getUrl() + "r/" + token.getText()); } } } private static final Pattern CHANGE_ID = Pattern.compile("(?<=\\bChange-Id: )I[0-9a-fA-F]{40}\\b"); }