// Path: src/main/java/org/jenkinsci/plugins/ghprb/extensions/comments/GhprbBuildResultMessage.java
// public class GhprbBuildResultMessage extends AbstractDescribableImpl<GhprbBuildResultMessage> implements GhprbCommentAppender {
// 
//     @Extension
//     public static final DescriptorImpl DESCRIPTOR = new DescriptorImpl();
// 
//     private final String message;
// 
//     private final GHCommitState result;
// 
//     @DataBoundConstructor
//     public GhprbBuildResultMessage(GHCommitState result, String message) {
//         this.result = result;
//         this.message = message;
//     }
// 
//     public String getMessage() {
//         return message;
//     }
// 
//     public GHCommitState getResult() {
//         return result;
//     }
// 
//     public String postBuildComment(Run<?, ?> build, TaskListener listener) {
//         StringBuilder msg = new StringBuilder();
// 
//         GHCommitState state = Ghprb.getState(build);
//         String buildMessage = null;
//         if (state == result) {
//             buildMessage = message;
//             if (StringUtils.isEmpty(buildMessage)) {
//                 return ""; // will use default
//             } else if (buildMessage.equals("--none--")) {
//                 return buildMessage; // will skip update
//             }
//             String message = Ghprb.replaceMacros(build, listener, buildMessage);
//             // Only Append the build's custom message if it has been set.
//             if (!StringUtils.isEmpty(message)) {
//                 // When the msg is not empty, append a newline first, to seperate it from the rest of the String
//                 if (msg.length() > 0) {
//                     msg.append("\n");
//                 }
//                 msg.append(message);
//                 msg.append("\n");
//             }
//         }
//         return msg.toString();
//     }
// 
//     @Override
//     public DescriptorImpl getDescriptor() {
//         return DESCRIPTOR;
//     }
// 
//     public static class DescriptorImpl extends Descriptor<GhprbBuildResultMessage> {
//         public boolean isApplicable(Class<?> type) {
//             return true;
//         }
// 
//         @Override
//         public String getDisplayName() {
//             return "Add message on Build Status";
//         }
// 
//         public ListBoxModel doFillResultItems(@QueryParameter String result) {
//             ListBoxModel items = new ListBoxModel();
//             GHCommitState[] results = new GHCommitState[] {GHCommitState.SUCCESS, GHCommitState.ERROR, GHCommitState.FAILURE};
//             for (GHCommitState nextResult : results) {
// 
//                 items.add(nextResult.toString(), nextResult.toString());
//                 if (result.equals(nextResult.toString())) {
//                     items.get(items.size() - 1).selected = true;
//                 }
//             }
// 
//             return items;
//         }
//     }
// }


import hudson.Extension;
import hudson.Launcher;
import hudson.model.AbstractBuild;
import hudson.model.BuildListener;
import hudson.model.Descriptor;
import hudson.tasks.BuildWrapper;
import org.jenkinsci.plugins.ghprb.extensions.comments.GhprbBuildResultMessage;
import org.kohsuke.github.GHCommitState;
import org.kohsuke.stapler.DataBoundConstructor;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
        this.completedStatus = completedStatus;
    }


    public String getStatusUrl() {
        return statusUrl == null ? "" : statusUrl;
    }

    public String getCommitStatusContext() {
        return commitStatusContext == null ? "" : commitStatusContext;
    }

    public String getStartedStatus() {
        return startedStatus == null ? "" : startedStatus;
    }

    public String getTriggeredStatus() {
        return triggeredStatus == null ? "" : triggeredStatus;
    }

    public Boolean getAddTestResults() {
        return addTestResults == null ? Boolean.valueOf(false) : addTestResults;
    }

    public Boolean getShowMatrixStatus() {
        return showMatrixStatus == null ? Boolean.valueOf(false) : showMatrixStatus;
    }


    public List<GhprbBuildResultMessage> getCompletedStatus() {
// Path: src/main/java/org/jenkinsci/plugins/ghprb/extensions/comments/GhprbBuildResultMessage.java
// public class GhprbBuildResultMessage extends AbstractDescribableImpl<GhprbBuildResultMessage> implements GhprbCommentAppender {
// 
//     @Extension
//     public static final DescriptorImpl DESCRIPTOR = new DescriptorImpl();
// 
//     private final String message;
// 
//     private final GHCommitState result;
// 
//     @DataBoundConstructor
//     public GhprbBuildResultMessage(GHCommitState result, String message) {
//         this.result = result;
//         this.message = message;
//     }
// 
//     public String getMessage() {
//         return message;
//     }
// 
//     public GHCommitState getResult() {
//         return result;
//     }
// 
//     public String postBuildComment(Run<?, ?> build, TaskListener listener) {
//         StringBuilder msg = new StringBuilder();
// 
//         GHCommitState state = Ghprb.getState(build);
//         String buildMessage = null;
//         if (state == result) {
//             buildMessage = message;
//             if (StringUtils.isEmpty(buildMessage)) {
//                 return ""; // will use default
//             } else if (buildMessage.equals("--none--")) {
//                 return buildMessage; // will skip update
//             }
//             String message = Ghprb.replaceMacros(build, listener, buildMessage);
//             // Only Append the build's custom message if it has been set.
//             if (!StringUtils.isEmpty(message)) {
//                 // When the msg is not empty, append a newline first, to seperate it from the rest of the String
//                 if (msg.length() > 0) {
//                     msg.append("\n");
//                 }
//                 msg.append(message);
//                 msg.append("\n");
//             }
//         }
//         return msg.toString();
//     }
// 
//     @Override
//     public DescriptorImpl getDescriptor() {
//         return DESCRIPTOR;
//     }
// 
//     public static class DescriptorImpl extends Descriptor<GhprbBuildResultMessage> {
//         public boolean isApplicable(Class<?> type) {
//             return true;
//         }
// 
//         @Override
//         public String getDisplayName() {
//             return "Add message on Build Status";
//         }
// 
//         public ListBoxModel doFillResultItems(@QueryParameter String result) {
//             ListBoxModel items = new ListBoxModel();
//             GHCommitState[] results = new GHCommitState[] {GHCommitState.SUCCESS, GHCommitState.ERROR, GHCommitState.FAILURE};
//             for (GHCommitState nextResult : results) {
// 
//                 items.add(nextResult.toString(), nextResult.toString());
//                 if (result.equals(nextResult.toString())) {
//                     items.get(items.size() - 1).selected = true;
//                 }
//             }
// 
//             return items;
//         }
//     }
// }


// Path: src/main/java/org/jenkinsci/plugins/ghprb/upstream/GhprbUpstreamStatus.java
import hudson.Extension;
import hudson.Launcher;
import hudson.model.AbstractBuild;
import hudson.model.BuildListener;
import hudson.model.Descriptor;
import hudson.tasks.BuildWrapper;
import org.jenkinsci.plugins.ghprb.extensions.comments.GhprbBuildResultMessage;
import org.kohsuke.github.GHCommitState;
import org.kohsuke.stapler.DataBoundConstructor;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

        this.completedStatus = completedStatus;
    }


    public String getStatusUrl() {
        return statusUrl == null ? "" : statusUrl;
    }

    public String getCommitStatusContext() {
        return commitStatusContext == null ? "" : commitStatusContext;
    }

    public String getStartedStatus() {
        return startedStatus == null ? "" : startedStatus;
    }

    public String getTriggeredStatus() {
        return triggeredStatus == null ? "" : triggeredStatus;
    }

    public Boolean getAddTestResults() {
        return addTestResults == null ? Boolean.valueOf(false) : addTestResults;
    }

    public Boolean getShowMatrixStatus() {
        return showMatrixStatus == null ? Boolean.valueOf(false) : showMatrixStatus;
    }


    public List<GhprbBuildResultMessage> getCompletedStatus() {
        return completedStatus == null ? new ArrayList<GhprbBuildResultMessage>(0) : completedStatus;