package hudson.plugins.trackingsvn;
import hudson.Extension;
import hudson.Util;
import hudson.model.AbstractBuild;
import hudson.model.Run;
import hudson.model.TaskListener;
import hudson.model.listeners.RunListener;
import hudson.scm.RevisionParameterAction;
import hudson.scm.SubversionTagAction;
import hudson.scm.SubversionSCM.SvnInfo;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Extension
public class TrackingSVNRunListener extends RunListener<AbstractBuild> {
public TrackingSVNRunListener() {
super(AbstractBuild.class);
}
@Override
public void onStarted(AbstractBuild r, TaskListener listener) {
TrackingSVNProperty property = ((AbstractBuild<?, ?>) r).getProject()
.getProperty(TrackingSVNProperty.class);
if (property == null) {
return;
}
Run run = property.getTrackedBuild();
listener.getLogger().println("Tracking SVN of " + run.getFullDisplayName());
SubversionTagAction tagAction = run
.getAction(SubversionTagAction.class);
if (tagAction == null) {
throw new TrackingSVNException("Project " + property.getSourceProject()
+ " is not an SVN project");
}
ArrayList<SvnInfo> revisions = new ArrayList<SvnInfo>();
for (SvnInfo info: tagAction.getTags().keySet()) {
if (!property.isURLIgnored(info.url)) {
revisions.add(info);
}
}
RevisionParameterAction action = new RevisionParameterAction(revisions);
r.addAction(action);
r.addAction(new TrackingSVNAction(run));
}
}