diff --git a/core/src/main/java/hudson/node_monitors/ArchitectureMonitor.java b/core/src/main/java/hudson/node_monitors/ArchitectureMonitor.java index 44af3340e4..d2c60a2544 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 java.io.IOException; 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 @@ import org.kohsuke.stapler.StaplerRequest; * @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 533de56a7d..b958df61d7 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 net.sf.json.JSONObject; 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 @@ import org.kohsuke.stapler.StaplerRequest; * @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 b3080d0749..b8f7902a72 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 hudson.remoting.Callable; 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 class DiskSpaceMonitor extends AbstractDiskSpaceMonitor { 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 @@ public class DiskSpaceMonitor extends AbstractDiskSpaceMonitor { 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 eb5a9459c3..0fb737a767 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 @@ import org.kohsuke.stapler.export.ExportedBean; *

* {@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 1ffdcc1a54..5a72230396 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.Map; 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 @@ import org.kohsuke.stapler.export.ExportedBean; * @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 class ResponseTimeMonitor extends NodeMonitor { 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 97965cc4af..09064ccb4a 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 net.sf.json.JSONObject; 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 @@ import org.kohsuke.stapler.export.ExportedBean; * @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 77f2d2cffb..d92341142a 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 @@ public class TemporarySpaceMonitor extends AbstractDiskSpaceMonitor { } } - /** - * @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 {