package org.jenkinsci.plugins.ghprb.extensions.comments;
import hudson.Extension;
import hudson.model.Run;
import hudson.model.TaskListener;
import org.jenkinsci.plugins.ghprb.Ghprb;
import org.jenkinsci.plugins.ghprb.extensions.*;
import org.kohsuke.stapler.DataBoundConstructor;
import java.util.ArrayList;
import java.util.List;
public class GhprbBuildStatus extends GhprbExtension implements GhprbCommentAppender, GhprbGlobalExtension, GhprbProjectExtension {
@Extension
public static final DescriptorImpl DESCRIPTOR = new DescriptorImpl();
private final List<GhprbBuildResultMessage> messages;
@DataBoundConstructor
public GhprbBuildStatus(List<GhprbBuildResultMessage> messages) {
this.messages = messages;
}
public List<GhprbBuildResultMessage> getMessages() {
return messages == null ? new ArrayList<GhprbBuildResultMessage>(0) : messages;
}
public String postBuildComment(Run<?, ?> build, TaskListener listener) {
StringBuilder msg = new StringBuilder();
List<GhprbBuildResultMessage> messages = getDescriptor().getMessagesDefault(this);
for (GhprbBuildResultMessage messager: messages) {
msg.append(messager.postBuildComment(build, listener));
}
return msg.toString();
}
@Override
public DescriptorImpl getDescriptor() {
return DESCRIPTOR;
}
public static class DescriptorImpl extends GhprbExtensionDescriptor implements GhprbGlobalExtension, GhprbProjectExtension {
@Override
public String getDisplayName() {
return "Build Status Messages";
}
public List<GhprbBuildResultMessage> getMessagesDefault(GhprbBuildStatus local) {
return Ghprb.getDefaultValue(local, GhprbBuildStatus.class, "getMessages");
}
}
}