package hudson.plugins.ccm;
import hudson.CopyOnWrite;
import hudson.model.Descriptor;
import hudson.tasks.Builder;
import net.sf.json.JSONObject;
import org.kohsuke.stapler.StaplerRequest;
/**
* Descriptor for {@link CCMBuilder}. Used as a singleton.
* The class is marked as public so that it can be accessed from views.
*
* @author Bruno P. Kinoshita - http://www.kinoshita.eti.br
* @since 7 april, 2010
*/
public class CCMDescriptor
extends Descriptor<Builder> {
private static final String DISPLAY_NAME = "Invoke CCM";
@CopyOnWrite
private volatile CCMInstallation[] installations = new CCMInstallation[0];
public CCMDescriptor()
{
super(CCMBuilder.class);
load();
}
/**
* This human readable name is used in the configuration screen.
*/
@Override
public String getDisplayName() {
return DISPLAY_NAME;
}
@Override
public boolean configure(StaplerRequest req, JSONObject json)
throws hudson.model.Descriptor.FormException {
this.installations = req.bindParametersToList(CCMInstallation.class, "CCM.").
toArray(new CCMInstallation[0]);
save();
return true;
}
public CCMInstallation[] getInstallations() {
return installations;
}
}