If so, look for an overridden newInstance method. It's probably being used instead of the constructor annotation.
For example, I was adding a new parameter to Shell.java, so:
@DataBoundConstructor
public Shell(String command) {
super(fixCrLf(command));
}
became
@DataBoundConstructor
public Shell(String command, Integer unstableReturn) {
super(fixCrLf(command));
this.unstableReturn = unstableReturn;
}
public Shell(String command) {
this(command, null);
}
private final Integer unstableReturn;
public final Integer getUnstableReturn() {
return unstableReturn;
}
with the associated extra UI element in config.groovy:
f.entry(title:_("Return code to set build unstable"), description:_("If set, the script return code that will be interpreted as an unstable build result.")) {
f.number(name: "unstableReturn", value: instance?.unstableReturn)
}
... but it was always null.
The cause was that the old ctor was always being called because of the inner class:
@Extension
public static class DescriptorImpl extends BuildStepDescriptor {
//....
@Override
public Builder newInstance(StaplerRequest req, JSONObject data) {
return new Shell(data.getString("command"));
}
//....
}
so there you go, if your UI element just seems to be ignored, check if this is an issue.
No comments:
Post a Comment
Captchas suck. Bots suck more. Sorry.