diff --git a/core/src/main/java/hudson/node_monitors/ArchitectureMonitor.java b/core/src/main/java/hudson/node_monitors/ArchitectureMonitor.java index 44af3340e434..d2c60a2544d0 100644 --- a/core/src/main/java/hudson/node_monitors/ArchitectureMonitor.java +++ b/core/src/main/java/hudson/node_monitors/ArchitectureMonitor.java @@ -32,6 +32,7 @@ import jenkins.security.MasterToSlaveCallable; import net.sf.json.JSONObject; import org.jenkinsci.Symbol; +import org.kohsuke.stapler.DataBoundConstructor; import org.kohsuke.stapler.StaplerRequest; /** @@ -40,6 +41,11 @@ * @author Kohsuke Kawaguchi */ public class ArchitectureMonitor extends NodeMonitor { + + @DataBoundConstructor + public ArchitectureMonitor() { + } + @Extension @Symbol("architecture") public static final class DescriptorImpl extends AbstractAsyncNodeMonitorDescriptor { @Override diff --git a/core/src/main/java/hudson/node_monitors/ClockMonitor.java b/core/src/main/java/hudson/node_monitors/ClockMonitor.java index 533de56a7ddd..b958df61d776 100644 --- a/core/src/main/java/hudson/node_monitors/ClockMonitor.java +++ b/core/src/main/java/hudson/node_monitors/ClockMonitor.java @@ -36,6 +36,7 @@ import org.jenkinsci.Symbol; import org.kohsuke.accmod.Restricted; import org.kohsuke.accmod.restrictions.NoExternalUse; +import org.kohsuke.stapler.DataBoundConstructor; import org.kohsuke.stapler.StaplerRequest; /** @@ -46,6 +47,11 @@ * @since 1.123 */ public class ClockMonitor extends NodeMonitor { + + @DataBoundConstructor + public ClockMonitor() { + } + public ClockDifference getDifferenceFor(Computer c) { return DESCRIPTOR.get(c); } diff --git a/core/src/main/java/hudson/node_monitors/DiskSpaceMonitor.java b/core/src/main/java/hudson/node_monitors/DiskSpaceMonitor.java index b3080d074925..b8f7902a728b 100644 --- a/core/src/main/java/hudson/node_monitors/DiskSpaceMonitor.java +++ b/core/src/main/java/hudson/node_monitors/DiskSpaceMonitor.java @@ -25,6 +25,7 @@ package hudson.node_monitors; import edu.umd.cs.findbugs.annotations.NonNull; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import hudson.Extension; import hudson.FilePath; import hudson.model.Computer; @@ -34,6 +35,7 @@ import java.io.IOException; import java.text.ParseException; import jenkins.model.Jenkins; +import org.jenkinsci.Symbol; import org.kohsuke.stapler.DataBoundConstructor; /** @@ -61,7 +63,17 @@ public String getColumnCaption() { return Jenkins.get().hasPermission(Jenkins.ADMINISTER) ? super.getColumnCaption() : null; } - public static final DiskSpaceMonitorDescriptor DESCRIPTOR = new DiskSpaceMonitorDescriptor() { + @SuppressFBWarnings(value = "MS_PKGPROTECT", justification = "for backward compatibility") + public static /*almost final*/ DiskSpaceMonitorDescriptor DESCRIPTOR; + + @Extension @Symbol("diskSpace") + public static class DescriptorImpl extends DiskSpaceMonitorDescriptor { + + @SuppressFBWarnings(value = "ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD", justification = "for backward compatibility") + public DescriptorImpl() { + DESCRIPTOR = this; + } + @NonNull @Override public String getDisplayName() { @@ -78,10 +90,5 @@ protected Callable createCallable(Computer c) { return p.asCallableWith(new GetUsableSpace()); } - }; - - @Extension - public static DiskSpaceMonitorDescriptor install() { - return DESCRIPTOR; } } diff --git a/core/src/main/java/hudson/node_monitors/NodeMonitor.java b/core/src/main/java/hudson/node_monitors/NodeMonitor.java index eb5a9459c33d..0fb737a7677a 100644 --- a/core/src/main/java/hudson/node_monitors/NodeMonitor.java +++ b/core/src/main/java/hudson/node_monitors/NodeMonitor.java @@ -61,6 +61,9 @@ *

* {@link NodeMonitor}s are persisted via XStream. * + *

CasC

+ * To be able to configure {@link NodeMonitor}s via JCasC, they should have a {@link org.kohsuke.stapler.DataBoundConstructor} + * * @author Kohsuke Kawaguchi * @since 1.123 */ diff --git a/core/src/main/java/hudson/node_monitors/ResponseTimeMonitor.java b/core/src/main/java/hudson/node_monitors/ResponseTimeMonitor.java index 1ffdcc1a54ee..5a7223039696 100644 --- a/core/src/main/java/hudson/node_monitors/ResponseTimeMonitor.java +++ b/core/src/main/java/hudson/node_monitors/ResponseTimeMonitor.java @@ -25,6 +25,7 @@ package hudson.node_monitors; import edu.umd.cs.findbugs.annotations.NonNull; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import hudson.Extension; import hudson.model.Computer; import hudson.remoting.Callable; @@ -34,6 +35,8 @@ import java.util.logging.Logger; import jenkins.security.MasterToSlaveCallable; import net.sf.json.JSONObject; +import org.jenkinsci.Symbol; +import org.kohsuke.stapler.DataBoundConstructor; import org.kohsuke.stapler.StaplerRequest; import org.kohsuke.stapler.export.Exported; import org.kohsuke.stapler.export.ExportedBean; @@ -44,8 +47,22 @@ * @author Kohsuke Kawaguchi */ public class ResponseTimeMonitor extends NodeMonitor { + + @DataBoundConstructor + public ResponseTimeMonitor() { + } + + @SuppressFBWarnings(value = "MS_PKGPROTECT", justification = "for backward compatibility") + public static /*almost final*/ AbstractNodeMonitorDescriptor DESCRIPTOR; + @Extension - public static final AbstractNodeMonitorDescriptor DESCRIPTOR = new AbstractAsyncNodeMonitorDescriptor<>() { + @Symbol("responseTime") + public static class DescriptorImpl extends AbstractAsyncNodeMonitorDescriptor { + + @SuppressFBWarnings(value = "ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD", justification = "for backward compatibility") + public DescriptorImpl() { + DESCRIPTOR = this; + } @Override protected Callable createCallable(Computer c) { @@ -91,7 +108,7 @@ public String getDisplayName() { public NodeMonitor newInstance(StaplerRequest req, JSONObject formData) throws FormException { return new ResponseTimeMonitor(); } - }; + } private static final class Step1 extends MasterToSlaveCallable { private Data cur; diff --git a/core/src/main/java/hudson/node_monitors/SwapSpaceMonitor.java b/core/src/main/java/hudson/node_monitors/SwapSpaceMonitor.java index 97965cc4afe9..09064ccb4a82 100644 --- a/core/src/main/java/hudson/node_monitors/SwapSpaceMonitor.java +++ b/core/src/main/java/hudson/node_monitors/SwapSpaceMonitor.java @@ -37,6 +37,7 @@ import org.jenkinsci.Symbol; import org.jvnet.hudson.MemoryMonitor; import org.jvnet.hudson.MemoryUsage; +import org.kohsuke.stapler.DataBoundConstructor; import org.kohsuke.stapler.StaplerRequest; import org.kohsuke.stapler.export.Exported; import org.kohsuke.stapler.export.ExportedBean; @@ -48,6 +49,11 @@ * @since 1.233 */ public class SwapSpaceMonitor extends NodeMonitor { + + @DataBoundConstructor + public SwapSpaceMonitor() { + } + /** * Returns the HTML representation of the space. */ diff --git a/core/src/main/java/hudson/node_monitors/TemporarySpaceMonitor.java b/core/src/main/java/hudson/node_monitors/TemporarySpaceMonitor.java index 77f2d2cffbc3..d92341142a09 100644 --- a/core/src/main/java/hudson/node_monitors/TemporarySpaceMonitor.java +++ b/core/src/main/java/hudson/node_monitors/TemporarySpaceMonitor.java @@ -101,14 +101,6 @@ protected Callable createCallable(Computer c) { } } - /** - * @deprecated as of 2.0 - */ - @Deprecated - public static DiskSpaceMonitorDescriptor install() { - return (DiskSpaceMonitorDescriptor) Jenkins.get().getDescriptor(TemporarySpaceMonitor.class); - } - protected static final class GetTempSpace extends MasterToSlaveFileCallable { @Override public DiskSpace invoke(File f, VirtualChannel channel) throws IOException {