package jenkins.python.expoint;
import com.google.common.base.Function;
import com.google.common.collect.Collections2;
import com.infradna.tool.bridge_method_injector.WithBridgeMethods;
import hudson.EnvVars;
import hudson.Extension;
import hudson.ExtensionPoint;
import hudson.PermalinkList;
import hudson.Util;
import hudson.cli.declarative.CLIResolver;
import hudson.model.Descriptor.FormException;
import hudson.model.Fingerprint.Range;
import hudson.model.Fingerprint.RangeSet;
import hudson.model.PermalinkProjectAction.Permalink;
import hudson.model.listeners.ItemListener;
import hudson.search.QuickSilver;
import hudson.search.SearchIndex;
import hudson.search.SearchIndexBuilder;
import hudson.search.SearchItem;
import hudson.search.SearchItems;
import hudson.security.ACL;
import hudson.tasks.LogRotator;
import hudson.util.AlternativeUiTextProvider;
import hudson.util.ChartUtil;
import hudson.util.ColorPalette;
import hudson.util.CopyOnWriteList;
import hudson.util.DataSetBuilder;
import hudson.util.DescribableList;
import hudson.util.FormApply;
import hudson.util.Graph;
import hudson.util.ProcessTree;
import hudson.util.RunList;
import hudson.util.ShiftedCategoryAxis;
import hudson.util.StackedAreaRenderer2;
import hudson.util.TextFile;
import hudson.widgets.HistoryWidget;
import hudson.widgets.HistoryWidget.Adapter;
import hudson.widgets.Widget;
import jenkins.model.BuildDiscarder;
import jenkins.model.Jenkins;
import jenkins.model.ProjectNamingStrategy;
import jenkins.security.HexStringConfidentialKey;
import jenkins.util.io.OnMaster;
import net.sf.json.JSONException;
import net.sf.json.JSONObject;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.StackedAreaRenderer;
import org.jfree.data.category.CategoryDataset;
import org.jfree.ui.RectangleInsets;
import org.jvnet.localizer.Localizable;
import org.kohsuke.args4j.Argument;
import org.kohsuke.args4j.CmdLineException;
import org.kohsuke.stapler.StaplerOverridable;
import org.kohsuke.stapler.StaplerRequest;
import org.kohsuke.stapler.StaplerResponse;
import org.kohsuke.stapler.export.Exported;
import org.kohsuke.stapler.interceptor.RequirePOST;
import javax.servlet.ServletException;
import java.awt.*;
import java.io.*;
import java.net.URLEncoder;
import java.util.*;
import java.util.List;
import javax.servlet.http.HttpServletResponse.*;
import hudson.model.*;
import hudson.model.Job.*;
import hudson.AbortException;
import hudson.XmlFile;
import hudson.Functions;
import hudson.BulkChange;
import hudson.cli.declarative.CLIMethod;
import hudson.model.listeners.SaveableListener;
import hudson.security.AccessControlled;
import hudson.security.Permission;
import hudson.util.AlternativeUiTextProvider.Message;
import hudson.util.AtomicFileWriter;
import hudson.util.IOException2;
import hudson.util.IOUtils;
import org.apache.tools.ant.taskdefs.Copy;
import org.apache.tools.ant.types.FileSet;
import org.kohsuke.stapler.WebMethod;
import org.kohsuke.stapler.export.ExportedBean;
import java.io.File;
import java.io.IOException;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import org.kohsuke.stapler.Stapler;
import org.kohsuke.stapler.HttpDeletable;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import static javax.servlet.http.HttpServletResponse.SC_BAD_REQUEST;
import hudson.model.AbstractItem.*;
import hudson.model.queue.Tasks;
import jenkins.model.ModelObjectWithContextMenu;
import org.apache.commons.jelly.JellyContext;
import org.apache.commons.jelly.JellyException;
import org.apache.commons.jelly.JellyTagException;
import org.apache.commons.jelly.Script;
import org.apache.commons.jelly.XMLOutput;
import org.kohsuke.stapler.WebApp;
import org.kohsuke.stapler.jelly.JellyClassTearOff;
import org.kohsuke.stapler.jelly.JellyFacet;
import org.xml.sax.helpers.DefaultHandler;
import java.util.ArrayList;
import java.util.Vector;
import java.util.concurrent.CopyOnWriteArrayList;
import hudson.model.Actionable.*;
import hudson.search.SearchFactory;
import hudson.search.SearchableModelObject;
import hudson.search.Search;
import hudson.model.AbstractModelObject.*;
import jenkins.python.DataConvertor;
import jenkins.python.PythonExecutor;
/**
* This class was automatically generated by the PWM tool on 2014/03/21.
* @see hudson.model.Job
*/
public abstract class JobPW<JobT extends Job<JobT, RunT>, RunT extends Run<JobT, RunT>> extends Job<JobT, RunT> {
private transient PythonExecutor pexec;
private void initPython() {
if (pexec == null) {
pexec = new PythonExecutor(this);
String[] jMethods = new String[3];
jMethods[0] = "isBuildable";
jMethods[1] = "_getRuns";
jMethods[2] = "removeRun";
String[] pFuncs = new String[3];
pFuncs[0] = "is_buildable";
pFuncs[1] = "_get_runs";
pFuncs[2] = "remove_run";
Class[][] argTypes = new Class[3][];
argTypes[0] = new Class[0];
argTypes[1] = new Class[0];
argTypes[2] = new Class[1];
argTypes[2][0] = null;
pexec.checkAbstrMethods(jMethods, pFuncs, argTypes);
String[] functions = new String[108];
functions[0] = "save";
functions[1] = "on_load";
functions[2] = "on_copied_from";
functions[3] = "perform_delete";
functions[4] = "is_hold_off_build_until_save";
functions[5] = "save_next_build_number";
functions[6] = "is_in_queue";
functions[7] = "get_queue_item";
functions[8] = "is_building";
functions[9] = "is_log_updated";
functions[10] = "get_pronoun";
functions[11] = "is_name_editable";
functions[12] = "is_keep_dependencies";
functions[13] = "assign_build_number";
functions[14] = "get_next_build_number";
functions[15] = "get_characteristic_env_vars";
functions[16] = "get_environment";
functions[17] = "update_next_build_number";
functions[18] = "get_build_discarder";
functions[19] = "set_build_discarder";
functions[20] = "get_log_rotator";
functions[21] = "set_log_rotator";
functions[22] = "log_rotate";
functions[23] = "supports_log_rotator";
functions[24] = "make_search_index";
functions[25] = "get_all_jobs";
functions[26] = "add_property";
functions[27] = "remove_property";
functions[28] = "remove_property";
functions[29] = "get_properties";
functions[30] = "get_all_properties";
functions[31] = "get_property";
functions[32] = "get_property";
functions[33] = "get_overrides";
functions[34] = "get_widgets";
functions[35] = "create_history_widget";
functions[36] = "rename_to";
functions[37] = "delete";
functions[38] = "get_builds";
functions[39] = "get_new_builds";
functions[40] = "get_builds";
functions[41] = "get_builds_as_map";
functions[42] = "get_build_by_number";
functions[43] = "get_builds_by_timestamp";
functions[44] = "get_build_for_cli";
functions[45] = "get_nearest_build";
functions[46] = "get_nearest_old_build";
functions[47] = "get_dynamic";
functions[48] = "get_build_dir";
functions[49] = "get_last_build";
functions[50] = "get_first_build";
functions[51] = "get_last_successful_build";
functions[52] = "get_last_unsuccessful_build";
functions[53] = "get_last_unstable_build";
functions[54] = "get_last_stable_build";
functions[55] = "get_last_failed_build";
functions[56] = "get_last_completed_build";
functions[57] = "get_last_builds_over_threshold";
functions[58] = "get_estimated_duration_candidates";
functions[59] = "get_estimated_duration";
functions[60] = "get_permalinks";
functions[61] = "get_icon_color";
functions[62] = "get_build_health";
functions[63] = "get_build_health_reports";
functions[64] = "do_config_submit";
functions[65] = "submit";
functions[66] = "do_description";
functions[67] = "do_build_status";
functions[68] = "get_build_status_url";
functions[69] = "get_build_time_graph";
functions[70] = "do_do_rename";
functions[71] = "do_rss_all";
functions[72] = "do_rss_failed";
functions[73] = "get_acl";
functions[74] = "get_timeline";
functions[75] = "on_created_from_scratch";
functions[76] = "get_name";
functions[77] = "get_display_name";
functions[78] = "get_display_name_or_null";
functions[79] = "set_display_name_or_null";
functions[80] = "set_display_name";
functions[81] = "get_root_dir";
functions[82] = "get_parent";
functions[83] = "get_description";
functions[84] = "set_description";
functions[85] = "do_set_name";
functions[86] = "get_relative_name_from";
functions[87] = "get_relative_name_from";
functions[88] = "get_short_url";
functions[89] = "get_search_url";
functions[90] = "check_permission";
functions[91] = "has_permission";
functions[92] = "get_descriptor_by_name";
functions[93] = "do_submit_description";
functions[94] = "do_do_delete";
functions[95] = "delete";
functions[96] = "do_config_dot_xml";
functions[97] = "update_by_xml";
functions[98] = "update_by_xml";
functions[99] = "get_search_name";
functions[100] = "to_string";
functions[101] = "get_actions";
functions[102] = "get_actions";
functions[103] = "add_action";
functions[104] = "get_action";
functions[105] = "get_action";
functions[106] = "do_context_menu";
functions[107] = "get_search";
int[] argsCount = new int[108];
argsCount[0] = 0;
argsCount[1] = 2;
argsCount[2] = 1;
argsCount[3] = 0;
argsCount[4] = 0;
argsCount[5] = 0;
argsCount[6] = 0;
argsCount[7] = 0;
argsCount[8] = 0;
argsCount[9] = 0;
argsCount[10] = 0;
argsCount[11] = 0;
argsCount[12] = 0;
argsCount[13] = 0;
argsCount[14] = 0;
argsCount[15] = 0;
argsCount[16] = 2;
argsCount[17] = 1;
argsCount[18] = 0;
argsCount[19] = 1;
argsCount[20] = 0;
argsCount[21] = 1;
argsCount[22] = 0;
argsCount[23] = 0;
argsCount[24] = 0;
argsCount[25] = 0;
argsCount[26] = 1;
argsCount[27] = 1;
argsCount[28] = 1;
argsCount[29] = 0;
argsCount[30] = 0;
argsCount[31] = 1;
argsCount[32] = 1;
argsCount[33] = 0;
argsCount[34] = 0;
argsCount[35] = 0;
argsCount[36] = 1;
argsCount[37] = 0;
argsCount[38] = 0;
argsCount[39] = 0;
argsCount[40] = 1;
argsCount[41] = 0;
argsCount[42] = 1;
argsCount[43] = 2;
argsCount[44] = 1;
argsCount[45] = 1;
argsCount[46] = 1;
argsCount[47] = 3;
argsCount[48] = 0;
argsCount[49] = 0;
argsCount[50] = 0;
argsCount[51] = 0;
argsCount[52] = 0;
argsCount[53] = 0;
argsCount[54] = 0;
argsCount[55] = 0;
argsCount[56] = 0;
argsCount[57] = 2;
argsCount[58] = 0;
argsCount[59] = 0;
argsCount[60] = 0;
argsCount[61] = 0;
argsCount[62] = 0;
argsCount[63] = 0;
argsCount[64] = 2;
argsCount[65] = 2;
argsCount[66] = 2;
argsCount[67] = 2;
argsCount[68] = 0;
argsCount[69] = 0;
argsCount[70] = 2;
argsCount[71] = 2;
argsCount[72] = 2;
argsCount[73] = 0;
argsCount[74] = 0;
argsCount[75] = 0;
argsCount[76] = 0;
argsCount[77] = 0;
argsCount[78] = 0;
argsCount[79] = 1;
argsCount[80] = 1;
argsCount[81] = 0;
argsCount[82] = 0;
argsCount[83] = 0;
argsCount[84] = 1;
argsCount[85] = 1;
argsCount[86] = 1;
argsCount[87] = 1;
argsCount[88] = 0;
argsCount[89] = 0;
argsCount[90] = 1;
argsCount[91] = 1;
argsCount[92] = 1;
argsCount[93] = 2;
argsCount[94] = 2;
argsCount[95] = 2;
argsCount[96] = 2;
argsCount[97] = 1;
argsCount[98] = 1;
argsCount[99] = 0;
argsCount[100] = 0;
argsCount[101] = 0;
argsCount[102] = 1;
argsCount[103] = 1;
argsCount[104] = 1;
argsCount[105] = 1;
argsCount[106] = 2;
argsCount[107] = 0;
pexec.registerFunctions(functions, argsCount);
}
}
public JobPW(ItemGroup parent, String name) {
super(parent, name);
}
@Override
@Exported
public boolean isBuildable() {
initPython();
return pexec.execPythonBool("is_buildable");
}
@Override
public SortedMap<Integer, ? extends RunT> _getRuns() {
initPython();
return (SortedMap) pexec.execPython("_get_runs");
}
@Override
public void removeRun(RunT run) {
initPython();
pexec.execPythonVoid("remove_run", run);
}
@Override
public synchronized void save() throws IOException {
initPython();
if (pexec.isImplemented(0)) {
pexec.execPythonVoid("save");
} else {
super.save();
}
}
@Override
public void onLoad(ItemGroup<? extends Item> parent, String name) throws IOException {
initPython();
if (pexec.isImplemented(1)) {
pexec.execPythonVoid("on_load", parent, name);
} else {
super.onLoad(parent, name);
}
}
@Override
public void onCopiedFrom(Item src) {
initPython();
if (pexec.isImplemented(2)) {
pexec.execPythonVoid("on_copied_from", src);
} else {
super.onCopiedFrom(src);
}
}
public @Override
void performDelete() throws IOException, InterruptedException {
initPython();
if (pexec.isImplemented(3)) {
pexec.execPythonVoid("perform_delete");
} else {
super.performDelete();
}
}
@Override
public boolean isHoldOffBuildUntilSave() {
initPython();
if (pexec.isImplemented(4)) {
return pexec.execPythonBool("is_hold_off_build_until_save");
} else {
return super.isHoldOffBuildUntilSave();
}
}
@Override
public synchronized void saveNextBuildNumber() throws IOException {
initPython();
if (pexec.isImplemented(5)) {
pexec.execPythonVoid("save_next_build_number");
} else {
super.saveNextBuildNumber();
}
}
@Override
@Exported
public boolean isInQueue() {
initPython();
if (pexec.isImplemented(6)) {
return pexec.execPythonBool("is_in_queue");
} else {
return super.isInQueue();
}
}
@Override
@Exported
public hudson.model.Queue.Item getQueueItem() {
initPython();
if (pexec.isImplemented(7)) {
return (hudson.model.Queue.Item) pexec.execPython("get_queue_item");
} else {
return super.getQueueItem();
}
}
@Override
public boolean isBuilding() {
initPython();
if (pexec.isImplemented(8)) {
return pexec.execPythonBool("is_building");
} else {
return super.isBuilding();
}
}
@Override
public boolean isLogUpdated() {
initPython();
if (pexec.isImplemented(9)) {
return pexec.execPythonBool("is_log_updated");
} else {
return super.isLogUpdated();
}
}
@Override
public String getPronoun() {
initPython();
if (pexec.isImplemented(10)) {
return (String) pexec.execPython("get_pronoun");
} else {
return super.getPronoun();
}
}
@Override
public boolean isNameEditable() {
initPython();
if (pexec.isImplemented(11)) {
return pexec.execPythonBool("is_name_editable");
} else {
return super.isNameEditable();
}
}
@Override
@Exported
public boolean isKeepDependencies() {
initPython();
if (pexec.isImplemented(12)) {
return pexec.execPythonBool("is_keep_dependencies");
} else {
return super.isKeepDependencies();
}
}
@Override
public synchronized int assignBuildNumber() throws IOException {
initPython();
if (pexec.isImplemented(13)) {
return pexec.execPythonInt("assign_build_number");
} else {
return super.assignBuildNumber();
}
}
@Override
@Exported
public int getNextBuildNumber() {
initPython();
if (pexec.isImplemented(14)) {
return pexec.execPythonInt("get_next_build_number");
} else {
return super.getNextBuildNumber();
}
}
@Override
public EnvVars getCharacteristicEnvVars() {
initPython();
if (pexec.isImplemented(15)) {
return (EnvVars) pexec.execPython("get_characteristic_env_vars");
} else {
return super.getCharacteristicEnvVars();
}
}
@Override
public EnvVars getEnvironment(Node node, TaskListener listener) throws IOException, InterruptedException {
initPython();
if (pexec.isImplemented(16)) {
return (EnvVars) pexec.execPython("get_environment", node, listener);
} else {
return super.getEnvironment(node, listener);
}
}
@Override
public synchronized void updateNextBuildNumber(int next) throws IOException {
initPython();
if (pexec.isImplemented(17)) {
pexec.execPythonVoid("update_next_build_number", DataConvertor.fromInt(next));
} else {
super.updateNextBuildNumber(next);
}
}
@Override
public BuildDiscarder getBuildDiscarder() {
initPython();
if (pexec.isImplemented(18)) {
return (BuildDiscarder) pexec.execPython("get_build_discarder");
} else {
return super.getBuildDiscarder();
}
}
@Override
public void setBuildDiscarder(BuildDiscarder bd) throws IOException {
initPython();
if (pexec.isImplemented(19)) {
pexec.execPythonVoid("set_build_discarder", bd);
} else {
super.setBuildDiscarder(bd);
}
}
@Override
public LogRotator getLogRotator() {
initPython();
if (pexec.isImplemented(20)) {
return (LogRotator) pexec.execPython("get_log_rotator");
} else {
return super.getLogRotator();
}
}
@Override
public void setLogRotator(LogRotator logRotator) throws IOException {
initPython();
if (pexec.isImplemented(21)) {
pexec.execPythonVoid("set_log_rotator", logRotator);
} else {
super.setLogRotator(logRotator);
}
}
@Override
public void logRotate() throws IOException, InterruptedException {
initPython();
if (pexec.isImplemented(22)) {
pexec.execPythonVoid("log_rotate");
} else {
super.logRotate();
}
}
@Override
public boolean supportsLogRotator() {
initPython();
if (pexec.isImplemented(23)) {
return pexec.execPythonBool("supports_log_rotator");
} else {
return super.supportsLogRotator();
}
}
public @Override
SearchIndexBuilder makeSearchIndex() {
initPython();
if (pexec.isImplemented(24)) {
return (SearchIndexBuilder) pexec.execPython("make_search_index");
} else {
return super.makeSearchIndex();
}
}
@Override
public Collection<? extends Job> getAllJobs() {
initPython();
if (pexec.isImplemented(25)) {
return (Collection) pexec.execPython("get_all_jobs");
} else {
return super.getAllJobs();
}
}
@Override
public void addProperty(JobProperty<? super JobT> jobProp) throws IOException {
initPython();
if (pexec.isImplemented(26)) {
pexec.execPythonVoid("add_property", jobProp);
} else {
super.addProperty(jobProp);
}
}
@Override
public void removeProperty(JobProperty<? super JobT> jobProp) throws IOException {
initPython();
if (pexec.isImplemented(27)) {
pexec.execPythonVoid("remove_property", jobProp);
} else {
super.removeProperty(jobProp);
}
}
@Override
public <T extends JobProperty> T removeProperty(Class<T> clazz) throws IOException {
initPython();
if (pexec.isImplemented(28)) {
return (T) pexec.execPython("remove_property", clazz);
} else {
return super.removeProperty(clazz);
}
}
@Override
@SuppressWarnings("unchecked")
public Map<JobPropertyDescriptor, JobProperty<? super JobT>> getProperties() {
initPython();
if (pexec.isImplemented(29)) {
return (Map) pexec.execPython("get_properties");
} else {
return super.getProperties();
}
}
@Override
@Exported(name = "property", inline = true)
public List<JobProperty<? super JobT>> getAllProperties() {
initPython();
if (pexec.isImplemented(30)) {
return (List) pexec.execPython("get_all_properties");
} else {
return super.getAllProperties();
}
}
@Override
public <T extends JobProperty> T getProperty(Class<T> clazz) {
initPython();
if (pexec.isImplemented(31)) {
return (T) pexec.execPython("get_property", clazz);
} else {
return super.getProperty(clazz);
}
}
@Override
public JobProperty getProperty(String className) {
initPython();
if (pexec.isImplemented(32)) {
return (JobProperty) pexec.execPython("get_property", className);
} else {
return super.getProperty(className);
}
}
@Override
public Collection<?> getOverrides() {
initPython();
if (pexec.isImplemented(33)) {
return (Collection) pexec.execPython("get_overrides");
} else {
return super.getOverrides();
}
}
@Override
public List<Widget> getWidgets() {
initPython();
if (pexec.isImplemented(34)) {
return (List) pexec.execPython("get_widgets");
} else {
return super.getWidgets();
}
}
@Override
public HistoryWidget createHistoryWidget() {
initPython();
if (pexec.isImplemented(35)) {
return (HistoryWidget) pexec.execPython("create_history_widget");
} else {
return super.createHistoryWidget();
}
}
@Override
public void renameTo(String newName) throws IOException {
initPython();
if (pexec.isImplemented(36)) {
pexec.execPythonVoid("rename_to", newName);
} else {
super.renameTo(newName);
}
}
@Override
public synchronized void delete() throws IOException, InterruptedException {
initPython();
if (pexec.isImplemented(37)) {
pexec.execPythonVoid("delete");
} else {
super.delete();
}
}
@Override
@Exported(name = "allBuilds", visibility = -2)
@WithBridgeMethods(List.class)
public RunList<RunT> getBuilds() {
initPython();
if (pexec.isImplemented(38)) {
return (RunList) pexec.execPython("get_builds");
} else {
return super.getBuilds();
}
}
@Override
@Exported(name = "builds")
public RunList<RunT> getNewBuilds() {
initPython();
if (pexec.isImplemented(39)) {
return (RunList) pexec.execPython("get_new_builds");
} else {
return super.getNewBuilds();
}
}
@Override
public synchronized List<RunT> getBuilds(RangeSet rs) {
initPython();
if (pexec.isImplemented(40)) {
return (List) pexec.execPython("get_builds", rs);
} else {
return super.getBuilds(rs);
}
}
@Override
public SortedMap<Integer, RunT> getBuildsAsMap() {
initPython();
if (pexec.isImplemented(41)) {
return (SortedMap) pexec.execPython("get_builds_as_map");
} else {
return super.getBuildsAsMap();
}
}
@Override
public RunT getBuildByNumber(int n) {
initPython();
if (pexec.isImplemented(42)) {
return (RunT) pexec.execPython("get_build_by_number", DataConvertor.fromInt(n));
} else {
return super.getBuildByNumber(n);
}
}
@Override
@WithBridgeMethods(List.class)
public RunList<RunT> getBuildsByTimestamp(long start, long end) {
initPython();
if (pexec.isImplemented(43)) {
return (RunList) pexec.execPython("get_builds_by_timestamp", DataConvertor.fromLong(start), DataConvertor.fromLong(end));
} else {
return super.getBuildsByTimestamp(start, end);
}
}
@Override
@CLIResolver
public RunT getBuildForCLI(@Argument(required = true, metaVar = "BUILD#", usage = "Build number") String id) throws CmdLineException {
initPython();
if (pexec.isImplemented(44)) {
return (RunT) pexec.execPython("get_build_for_cli", id);
} else {
return super.getBuildForCLI(id);
}
}
@Override
public RunT getNearestBuild(int n) {
initPython();
if (pexec.isImplemented(45)) {
return (RunT) pexec.execPython("get_nearest_build", DataConvertor.fromInt(n));
} else {
return super.getNearestBuild(n);
}
}
@Override
public RunT getNearestOldBuild(int n) {
initPython();
if (pexec.isImplemented(46)) {
return (RunT) pexec.execPython("get_nearest_old_build", DataConvertor.fromInt(n));
} else {
return super.getNearestOldBuild(n);
}
}
@Override
public Object getDynamic(String token, StaplerRequest req, StaplerResponse rsp) {
initPython();
if (pexec.isImplemented(47)) {
return (Object) pexec.execPython("get_dynamic", token, req, rsp);
} else {
return super.getDynamic(token, req, rsp);
}
}
@Override
public File getBuildDir() {
initPython();
if (pexec.isImplemented(48)) {
return (File) pexec.execPython("get_build_dir");
} else {
return super.getBuildDir();
}
}
@Override
@Exported
@QuickSilver
public RunT getLastBuild() {
initPython();
if (pexec.isImplemented(49)) {
return (RunT) pexec.execPython("get_last_build");
} else {
return super.getLastBuild();
}
}
@Override
@Exported
@QuickSilver
public RunT getFirstBuild() {
initPython();
if (pexec.isImplemented(50)) {
return (RunT) pexec.execPython("get_first_build");
} else {
return super.getFirstBuild();
}
}
@Override
@Exported
@QuickSilver
public RunT getLastSuccessfulBuild() {
initPython();
if (pexec.isImplemented(51)) {
return (RunT) pexec.execPython("get_last_successful_build");
} else {
return super.getLastSuccessfulBuild();
}
}
@Override
@Exported
@QuickSilver
public RunT getLastUnsuccessfulBuild() {
initPython();
if (pexec.isImplemented(52)) {
return (RunT) pexec.execPython("get_last_unsuccessful_build");
} else {
return super.getLastUnsuccessfulBuild();
}
}
@Override
@Exported
@QuickSilver
public RunT getLastUnstableBuild() {
initPython();
if (pexec.isImplemented(53)) {
return (RunT) pexec.execPython("get_last_unstable_build");
} else {
return super.getLastUnstableBuild();
}
}
@Override
@Exported
@QuickSilver
public RunT getLastStableBuild() {
initPython();
if (pexec.isImplemented(54)) {
return (RunT) pexec.execPython("get_last_stable_build");
} else {
return super.getLastStableBuild();
}
}
@Override
@Exported
@QuickSilver
public RunT getLastFailedBuild() {
initPython();
if (pexec.isImplemented(55)) {
return (RunT) pexec.execPython("get_last_failed_build");
} else {
return super.getLastFailedBuild();
}
}
@Override
@Exported
@QuickSilver
public RunT getLastCompletedBuild() {
initPython();
if (pexec.isImplemented(56)) {
return (RunT) pexec.execPython("get_last_completed_build");
} else {
return super.getLastCompletedBuild();
}
}
@Override
public List<RunT> getLastBuildsOverThreshold(int numberOfBuilds, Result threshold) {
initPython();
if (pexec.isImplemented(57)) {
return (List) pexec.execPython("get_last_builds_over_threshold", DataConvertor.fromInt(numberOfBuilds), threshold);
} else {
return super.getLastBuildsOverThreshold(numberOfBuilds, threshold);
}
}
@Override
public @SuppressWarnings("unchecked")
List<RunT> getEstimatedDurationCandidates() {
initPython();
if (pexec.isImplemented(58)) {
return (List) pexec.execPython("get_estimated_duration_candidates");
} else {
return super.getEstimatedDurationCandidates();
}
}
@Override
public long getEstimatedDuration() {
initPython();
if (pexec.isImplemented(59)) {
return pexec.execPythonLong("get_estimated_duration");
} else {
return super.getEstimatedDuration();
}
}
@Override
public PermalinkList getPermalinks() {
initPython();
if (pexec.isImplemented(60)) {
return (PermalinkList) pexec.execPython("get_permalinks");
} else {
return super.getPermalinks();
}
}
@Override
@Exported(visibility = 2, name = "color")
public BallColor getIconColor() {
initPython();
if (pexec.isImplemented(61)) {
return (BallColor) pexec.execPython("get_icon_color");
} else {
return super.getIconColor();
}
}
@Override
public HealthReport getBuildHealth() {
initPython();
if (pexec.isImplemented(62)) {
return (HealthReport) pexec.execPython("get_build_health");
} else {
return super.getBuildHealth();
}
}
@Override
@Exported(name = "healthReport")
public List<HealthReport> getBuildHealthReports() {
initPython();
if (pexec.isImplemented(63)) {
return (List) pexec.execPython("get_build_health_reports");
} else {
return super.getBuildHealthReports();
}
}
@Override
@RequirePOST
public synchronized void doConfigSubmit(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException, FormException {
initPython();
if (pexec.isImplemented(64)) {
pexec.execPythonVoid("do_config_submit", req, rsp);
} else {
super.doConfigSubmit(req, rsp);
}
}
@Override
public void submit(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException, FormException {
initPython();
if (pexec.isImplemented(65)) {
pexec.execPythonVoid("submit", req, rsp);
} else {
super.submit(req, rsp);
}
}
@Override
public void doDescription(StaplerRequest req, StaplerResponse rsp) throws IOException {
initPython();
if (pexec.isImplemented(66)) {
pexec.execPythonVoid("do_description", req, rsp);
} else {
super.doDescription(req, rsp);
}
}
@Override
public void doBuildStatus(StaplerRequest req, StaplerResponse rsp) throws IOException {
initPython();
if (pexec.isImplemented(67)) {
pexec.execPythonVoid("do_build_status", req, rsp);
} else {
super.doBuildStatus(req, rsp);
}
}
@Override
public String getBuildStatusUrl() {
initPython();
if (pexec.isImplemented(68)) {
return (String) pexec.execPython("get_build_status_url");
} else {
return super.getBuildStatusUrl();
}
}
@Override
public Graph getBuildTimeGraph() {
initPython();
if (pexec.isImplemented(69)) {
return (Graph) pexec.execPython("get_build_time_graph");
} else {
return super.getBuildTimeGraph();
}
}
@Override
@RequirePOST
public void doDoRename(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException {
initPython();
if (pexec.isImplemented(70)) {
pexec.execPythonVoid("do_do_rename", req, rsp);
} else {
super.doDoRename(req, rsp);
}
}
@Override
public void doRssAll(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException {
initPython();
if (pexec.isImplemented(71)) {
pexec.execPythonVoid("do_rss_all", req, rsp);
} else {
super.doRssAll(req, rsp);
}
}
@Override
public void doRssFailed(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException {
initPython();
if (pexec.isImplemented(72)) {
pexec.execPythonVoid("do_rss_failed", req, rsp);
} else {
super.doRssFailed(req, rsp);
}
}
@Override
public ACL getACL() {
initPython();
if (pexec.isImplemented(73)) {
return (ACL) pexec.execPython("get_acl");
} else {
return super.getACL();
}
}
@Override
public BuildTimelineWidget getTimeline() {
initPython();
if (pexec.isImplemented(74)) {
return (BuildTimelineWidget) pexec.execPython("get_timeline");
} else {
return super.getTimeline();
}
}
@Override
public void onCreatedFromScratch() {
initPython();
if (pexec.isImplemented(75)) {
pexec.execPythonVoid("on_created_from_scratch");
} else {
super.onCreatedFromScratch();
}
}
@Override
@Exported(visibility = 999)
public String getName() {
initPython();
if (pexec.isImplemented(76)) {
return (String) pexec.execPython("get_name");
} else {
return super.getName();
}
}
@Override
@Exported
public String getDisplayName() {
initPython();
if (pexec.isImplemented(77)) {
return (String) pexec.execPython("get_display_name");
} else {
return super.getDisplayName();
}
}
@Override
@Exported
public String getDisplayNameOrNull() {
initPython();
if (pexec.isImplemented(78)) {
return (String) pexec.execPython("get_display_name_or_null");
} else {
return super.getDisplayNameOrNull();
}
}
@Override
public void setDisplayNameOrNull(String displayName) throws IOException {
initPython();
if (pexec.isImplemented(79)) {
pexec.execPythonVoid("set_display_name_or_null", displayName);
} else {
super.setDisplayNameOrNull(displayName);
}
}
@Override
public void setDisplayName(String displayName) throws IOException {
initPython();
if (pexec.isImplemented(80)) {
pexec.execPythonVoid("set_display_name", displayName);
} else {
super.setDisplayName(displayName);
}
}
@Override
public File getRootDir() {
initPython();
if (pexec.isImplemented(81)) {
return (File) pexec.execPython("get_root_dir");
} else {
return super.getRootDir();
}
}
@Override
@WithBridgeMethods(value = Jenkins.class, castRequired = true)
public ItemGroup getParent() {
initPython();
if (pexec.isImplemented(82)) {
return (ItemGroup) pexec.execPython("get_parent");
} else {
return super.getParent();
}
}
@Override
@Exported
public String getDescription() {
initPython();
if (pexec.isImplemented(83)) {
return (String) pexec.execPython("get_description");
} else {
return super.getDescription();
}
}
@Override
public void setDescription(String description) throws IOException {
initPython();
if (pexec.isImplemented(84)) {
pexec.execPythonVoid("set_description", description);
} else {
super.setDescription(description);
}
}
@Override
public void doSetName(String name) {
initPython();
if (pexec.isImplemented(85)) {
pexec.execPythonVoid("do_set_name", name);
} else {
super.doSetName(name);
}
}
@Override
public String getRelativeNameFrom(ItemGroup p) {
initPython();
if (pexec.isImplemented(86)) {
return (String) pexec.execPython("get_relative_name_from", p);
} else {
return super.getRelativeNameFrom(p);
}
}
@Override
public String getRelativeNameFrom(Item item) {
initPython();
if (pexec.isImplemented(87)) {
return (String) pexec.execPython("get_relative_name_from", item);
} else {
return super.getRelativeNameFrom(item);
}
}
@Override
public String getShortUrl() {
initPython();
if (pexec.isImplemented(88)) {
return (String) pexec.execPython("get_short_url");
} else {
return super.getShortUrl();
}
}
@Override
public String getSearchUrl() {
initPython();
if (pexec.isImplemented(89)) {
return (String) pexec.execPython("get_search_url");
} else {
return super.getSearchUrl();
}
}
@Override
public void checkPermission(Permission p) {
initPython();
if (pexec.isImplemented(90)) {
pexec.execPythonVoid("check_permission", p);
} else {
super.checkPermission(p);
}
}
@Override
public boolean hasPermission(Permission p) {
initPython();
if (pexec.isImplemented(91)) {
return pexec.execPythonBool("has_permission", p);
} else {
return super.hasPermission(p);
}
}
@Override
public Descriptor getDescriptorByName(String className) {
initPython();
if (pexec.isImplemented(92)) {
return (Descriptor) pexec.execPython("get_descriptor_by_name", className);
} else {
return super.getDescriptorByName(className);
}
}
@Override
public synchronized void doSubmitDescription(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException {
initPython();
if (pexec.isImplemented(93)) {
pexec.execPythonVoid("do_submit_description", req, rsp);
} else {
super.doSubmitDescription(req, rsp);
}
}
@Override
public void delete(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException {
initPython();
if (pexec.isImplemented(95)) {
pexec.execPythonVoid("delete", req, rsp);
} else {
super.delete(req, rsp);
}
}
@Override
@WebMethod(name = "config.xml")
public void doConfigDotXml(StaplerRequest req, StaplerResponse rsp) throws IOException {
initPython();
if (pexec.isImplemented(96)) {
pexec.execPythonVoid("do_config_dot_xml", req, rsp);
} else {
super.doConfigDotXml(req, rsp);
}
}
@Override
public void updateByXml(StreamSource source) throws IOException {
initPython();
if (pexec.isImplemented(97)) {
pexec.execPythonVoid("update_by_xml", source);
} else {
super.updateByXml(source);
}
}
@Override
public void updateByXml(Source source) throws IOException {
initPython();
if (pexec.isImplemented(98)) {
pexec.execPythonVoid("update_by_xml", source);
} else {
super.updateByXml(source);
}
}
@Override
public String getSearchName() {
initPython();
if (pexec.isImplemented(99)) {
return (String) pexec.execPython("get_search_name");
} else {
return super.getSearchName();
}
}
@Override
public String toString() {
initPython();
if (pexec.isImplemented(100)) {
return (String) pexec.execPython("to_string");
} else {
return super.toString();
}
}
@Override
@Exported
public List<Action> getActions() {
initPython();
if (pexec.isImplemented(101)) {
return (List) pexec.execPython("get_actions");
} else {
return super.getActions();
}
}
@Override
public <T extends Action> List<T> getActions(Class<T> type) {
initPython();
if (pexec.isImplemented(102)) {
return (List) pexec.execPython("get_actions", type);
} else {
return super.getActions(type);
}
}
@Override
public void addAction(Action a) {
initPython();
if (pexec.isImplemented(103)) {
pexec.execPythonVoid("add_action", a);
} else {
super.addAction(a);
}
}
@Override
public Action getAction(int index) {
initPython();
if (pexec.isImplemented(104)) {
return (Action) pexec.execPython("get_action", DataConvertor.fromInt(index));
} else {
return super.getAction(index);
}
}
@Override
public <T extends Action> T getAction(Class<T> type) {
initPython();
if (pexec.isImplemented(105)) {
return (T) pexec.execPython("get_action", type);
} else {
return super.getAction(type);
}
}
@Override
public ContextMenu doContextMenu(StaplerRequest request, StaplerResponse response) throws Exception {
initPython();
if (pexec.isImplemented(106)) {
return (ContextMenu) pexec.execPython("do_context_menu", request, response);
} else {
return super.doContextMenu(request, response);
}
}
@Override
public Search getSearch() {
initPython();
if (pexec.isImplemented(107)) {
return (Search) pexec.execPython("get_search");
} else {
return super.getSearch();
}
}
public synchronized void superSave() throws IOException {
super.save();
}
public void superOnLoad(ItemGroup<? extends Item> parent, String name) throws IOException {
super.onLoad(parent, name);
}
public void superOnCopiedFrom(Item src) {
super.onCopiedFrom(src);
}
public void superPerformDelete() throws IOException, InterruptedException {
super.performDelete();
}
public boolean superIsHoldOffBuildUntilSave() {
return super.isHoldOffBuildUntilSave();
}
public synchronized void superSaveNextBuildNumber() throws IOException {
super.saveNextBuildNumber();
}
public boolean superIsInQueue() {
return super.isInQueue();
}
public hudson.model.Queue.Item superGetQueueItem() {
return super.getQueueItem();
}
public boolean superIsBuilding() {
return super.isBuilding();
}
public boolean superIsLogUpdated() {
return super.isLogUpdated();
}
public String superGetPronoun() {
return super.getPronoun();
}
public boolean superIsNameEditable() {
return super.isNameEditable();
}
public boolean superIsKeepDependencies() {
return super.isKeepDependencies();
}
public synchronized int superAssignBuildNumber() throws IOException {
return super.assignBuildNumber();
}
public int superGetNextBuildNumber() {
return super.getNextBuildNumber();
}
public EnvVars superGetCharacteristicEnvVars() {
return super.getCharacteristicEnvVars();
}
public EnvVars superGetEnvironment(Node node, TaskListener listener) throws IOException, InterruptedException {
return super.getEnvironment(node, listener);
}
public synchronized void superUpdateNextBuildNumber(int next) throws IOException {
super.updateNextBuildNumber(next);
}
public BuildDiscarder superGetBuildDiscarder() {
return super.getBuildDiscarder();
}
public void superSetBuildDiscarder(BuildDiscarder bd) throws IOException {
super.setBuildDiscarder(bd);
}
public LogRotator superGetLogRotator() {
return super.getLogRotator();
}
public void superSetLogRotator(LogRotator logRotator) throws IOException {
super.setLogRotator(logRotator);
}
public void superLogRotate() throws IOException, InterruptedException {
super.logRotate();
}
public boolean superSupportsLogRotator() {
return super.supportsLogRotator();
}
public SearchIndexBuilder superMakeSearchIndex() {
return super.makeSearchIndex();
}
public Collection<? extends Job> superGetAllJobs() {
return super.getAllJobs();
}
public void superAddProperty(JobProperty<? super JobT> jobProp) throws IOException {
super.addProperty(jobProp);
}
public void superRemoveProperty(JobProperty<? super JobT> jobProp) throws IOException {
super.removeProperty(jobProp);
}
public <T extends JobProperty> T superRemoveProperty(Class<T> clazz) throws IOException {
return super.removeProperty(clazz);
}
public Map<JobPropertyDescriptor, JobProperty<? super JobT>> superGetProperties() {
return super.getProperties();
}
public List<JobProperty<? super JobT>> superGetAllProperties() {
return super.getAllProperties();
}
public <T extends JobProperty> T superGetProperty(Class<T> clazz) {
return super.getProperty(clazz);
}
public JobProperty superGetProperty(String className) {
return super.getProperty(className);
}
public Collection<?> superGetOverrides() {
return super.getOverrides();
}
public List<Widget> superGetWidgets() {
return super.getWidgets();
}
public HistoryWidget superCreateHistoryWidget() {
return super.createHistoryWidget();
}
public void superRenameTo(String newName) throws IOException {
super.renameTo(newName);
}
public synchronized void superDelete() throws IOException, InterruptedException {
super.delete();
}
public RunList<RunT> superGetBuilds() {
return super.getBuilds();
}
public RunList<RunT> superGetNewBuilds() {
return super.getNewBuilds();
}
public synchronized List<RunT> superGetBuilds(RangeSet rs) {
return super.getBuilds(rs);
}
public SortedMap<Integer, RunT> superGetBuildsAsMap() {
return super.getBuildsAsMap();
}
public RunT superGetBuildByNumber(int n) {
return super.getBuildByNumber(n);
}
public RunList<RunT> superGetBuildsByTimestamp(long start, long end) {
return super.getBuildsByTimestamp(start, end);
}
public RunT superGetBuildForCLI(@Argument(required = true, metaVar = "BUILD#", usage = "Build number") String id) throws CmdLineException {
return super.getBuildForCLI(id);
}
public RunT superGetNearestBuild(int n) {
return super.getNearestBuild(n);
}
public RunT superGetNearestOldBuild(int n) {
return super.getNearestOldBuild(n);
}
public Object superGetDynamic(String token, StaplerRequest req, StaplerResponse rsp) {
return super.getDynamic(token, req, rsp);
}
public File superGetBuildDir() {
return super.getBuildDir();
}
public RunT superGetLastBuild() {
return super.getLastBuild();
}
public RunT superGetFirstBuild() {
return super.getFirstBuild();
}
public RunT superGetLastSuccessfulBuild() {
return super.getLastSuccessfulBuild();
}
public RunT superGetLastUnsuccessfulBuild() {
return super.getLastUnsuccessfulBuild();
}
public RunT superGetLastUnstableBuild() {
return super.getLastUnstableBuild();
}
public RunT superGetLastStableBuild() {
return super.getLastStableBuild();
}
public RunT superGetLastFailedBuild() {
return super.getLastFailedBuild();
}
public RunT superGetLastCompletedBuild() {
return super.getLastCompletedBuild();
}
public List<RunT> superGetLastBuildsOverThreshold(int numberOfBuilds, Result threshold) {
return super.getLastBuildsOverThreshold(numberOfBuilds, threshold);
}
public List<RunT> superGetEstimatedDurationCandidates() {
return super.getEstimatedDurationCandidates();
}
public long superGetEstimatedDuration() {
return super.getEstimatedDuration();
}
public PermalinkList superGetPermalinks() {
return super.getPermalinks();
}
public BallColor superGetIconColor() {
return super.getIconColor();
}
public HealthReport superGetBuildHealth() {
return super.getBuildHealth();
}
public List<HealthReport> superGetBuildHealthReports() {
return super.getBuildHealthReports();
}
public synchronized void superDoConfigSubmit(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException, FormException {
super.doConfigSubmit(req, rsp);
}
public void superSubmit(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException, FormException {
super.submit(req, rsp);
}
public void superDoDescription(StaplerRequest req, StaplerResponse rsp) throws IOException {
super.doDescription(req, rsp);
}
public void superDoBuildStatus(StaplerRequest req, StaplerResponse rsp) throws IOException {
super.doBuildStatus(req, rsp);
}
public String superGetBuildStatusUrl() {
return super.getBuildStatusUrl();
}
public Graph superGetBuildTimeGraph() {
return super.getBuildTimeGraph();
}
public void superDoDoRename(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException {
super.doDoRename(req, rsp);
}
public void superDoRssAll(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException {
super.doRssAll(req, rsp);
}
public void superDoRssFailed(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException {
super.doRssFailed(req, rsp);
}
public ACL superGetACL() {
return super.getACL();
}
public BuildTimelineWidget superGetTimeline() {
return super.getTimeline();
}
public void superOnCreatedFromScratch() {
super.onCreatedFromScratch();
}
public String superGetName() {
return super.getName();
}
public String superGetDisplayName() {
return super.getDisplayName();
}
public String superGetDisplayNameOrNull() {
return super.getDisplayNameOrNull();
}
public void superSetDisplayNameOrNull(String displayName) throws IOException {
super.setDisplayNameOrNull(displayName);
}
public void superSetDisplayName(String displayName) throws IOException {
super.setDisplayName(displayName);
}
public File superGetRootDir() {
return super.getRootDir();
}
public ItemGroup superGetParent() {
return super.getParent();
}
public String superGetDescription() {
return super.getDescription();
}
public void superSetDescription(String description) throws IOException {
super.setDescription(description);
}
public void superDoSetName(String name) {
super.doSetName(name);
}
public String superGetRelativeNameFrom(ItemGroup p) {
return super.getRelativeNameFrom(p);
}
public String superGetRelativeNameFrom(Item item) {
return super.getRelativeNameFrom(item);
}
public String superGetShortUrl() {
return super.getShortUrl();
}
public String superGetSearchUrl() {
return super.getSearchUrl();
}
public void superCheckPermission(Permission p) {
super.checkPermission(p);
}
public boolean superHasPermission(Permission p) {
return super.hasPermission(p);
}
public Descriptor superGetDescriptorByName(String className) {
return super.getDescriptorByName(className);
}
public synchronized void superDoSubmitDescription(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException {
super.doSubmitDescription(req, rsp);
}
public void superDoDoDelete(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException, InterruptedException {
super.doDoDelete(req, rsp);
}
public void superDelete(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException {
super.delete(req, rsp);
}
public void superDoConfigDotXml(StaplerRequest req, StaplerResponse rsp) throws IOException {
super.doConfigDotXml(req, rsp);
}
public void superUpdateByXml(StreamSource source) throws IOException {
super.updateByXml(source);
}
public void superUpdateByXml(Source source) throws IOException {
super.updateByXml(source);
}
public String superGetSearchName() {
return super.getSearchName();
}
public String superToString() {
return super.toString();
}
public List<Action> superGetActions() {
return super.getActions();
}
public <T extends Action> List<T> superGetActions(Class<T> type) {
return super.getActions(type);
}
public void superAddAction(Action a) {
super.addAction(a);
}
public Action superGetAction(int index) {
return super.getAction(index);
}
public <T extends Action> T superGetAction(Class<T> type) {
return super.getAction(type);
}
public ContextMenu superDoContextMenu(StaplerRequest request, StaplerResponse response) throws Exception {
return super.doContextMenu(request, response);
}
public Search superGetSearch() {
return super.getSearch();
}
public Object execPython(String function, Object... params) {
initPython();
return pexec.execPython(function, params);
}
public byte execPythonByte(String function, Object... params) {
initPython();
return pexec.execPythonByte(function, params);
}
public short execPythonShort(String function, Object... params) {
initPython();
return pexec.execPythonShort(function, params);
}
public char execPythonChar(String function, Object... params) {
initPython();
return pexec.execPythonChar(function, params);
}
public int execPythonInt(String function, Object... params) {
initPython();
return pexec.execPythonInt(function, params);
}
public long execPythonLong(String function, Object... params) {
initPython();
return pexec.execPythonLong(function, params);
}
public float execPythonFloat(String function, Object... params) {
initPython();
return pexec.execPythonFloat(function, params);
}
public double execPythonDouble(String function, Object... params) {
initPython();
return pexec.execPythonDouble(function, params);
}
public boolean execPythonBool(String function, Object... params) {
initPython();
return pexec.execPythonBool(function, params);
}
public void execPythonVoid(String function, Object... params) {
initPython();
pexec.execPythonVoid(function, params);
}
}