package hudson.plugins.codeplex.scm; import java.io.File; import java.io.IOException; import org.xml.sax.SAXException; import hudson.model.AbstractBuild; import hudson.plugins.codeplex.CodePlexUserProperty; import hudson.plugins.tfs.model.ChangeLogSet; import hudson.plugins.tfs.model.ChangeSet; import hudson.scm.ChangeLogParser; import hudson.scm.ChangeLogSet.Entry; /** * Strips away the domain and <tt>_cp</tt> from the codeplex user names. * It will also add a code plex user property to the user. * * @author Erik Ramfelt */ public class TfsChangeLogParserDecorator extends ChangeLogParser { private final ChangeLogParser decoratedChangeLogParser; public TfsChangeLogParserDecorator(ChangeLogParser other) { this.decoratedChangeLogParser = other; } @Override public hudson.scm.ChangeLogSet<? extends Entry> parse(AbstractBuild build, File changelogFile) throws IOException, SAXException { ChangeLogSet logSet = (ChangeLogSet) decoratedChangeLogParser.parse(build, changelogFile); for (ChangeSet changeset : logSet) { changeset.setUser(removeDomainAndSuffix(changeset.getUser())); if (changeset.getAuthor() != null) { if (changeset.getAuthor().getProperty(CodePlexUserProperty.class) == null) { changeset.getAuthor().addProperty(new CodePlexUserProperty()); } } } return logSet; } private String removeDomainAndSuffix(String user) { return user.replaceAll("_cp$", ""); } }