diff --git a/core/src/main/java/hudson/PluginManager.java b/core/src/main/java/hudson/PluginManager.java index 99755339adfe7c2b1fa0dd8137037799251a998c..fa46102d309e6635dde5e0bf7132aa98965744fb 100644 --- a/core/src/main/java/hudson/PluginManager.java +++ b/core/src/main/java/hudson/PluginManager.java @@ -46,6 +46,7 @@ import jenkins.InitReactorRunner; import jenkins.RestartRequiredException; import jenkins.YesNoMaybe; import jenkins.model.Jenkins; +import jenkins.util.io.OnMaster; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; @@ -99,7 +100,7 @@ import static hudson.init.InitMilestone.*; * @author Kohsuke Kawaguchi */ @ExportedBean -public abstract class PluginManager extends AbstractModelObject { +public abstract class PluginManager extends AbstractModelObject implements OnMaster { /** * All discovered plugins. */ diff --git a/core/src/main/java/hudson/model/Job.java b/core/src/main/java/hudson/model/Job.java index 3673516ce2ba32952bb74c465e91aad60b47ed5e..520154785a96b899c0100eff34e1e7d2652c7b51 100644 --- a/core/src/main/java/hudson/model/Job.java +++ b/core/src/main/java/hudson/model/Job.java @@ -60,6 +60,7 @@ import hudson.widgets.HistoryWidget.Adapter; import hudson.widgets.Widget; import jenkins.model.Jenkins; import jenkins.model.ProjectNamingStrategy; +import jenkins.util.io.OnMaster; import net.sf.json.JSONException; import net.sf.json.JSONObject; import org.jfree.chart.ChartFactory; @@ -102,7 +103,7 @@ import static javax.servlet.http.HttpServletResponse.*; * @author Kohsuke Kawaguchi */ public abstract class Job, RunT extends Run> - extends AbstractItem implements ExtensionPoint, StaplerOverridable { + extends AbstractItem implements ExtensionPoint, StaplerOverridable, OnMaster { /** * Next build number. Kept in a separate file because this is the only diff --git a/core/src/main/java/hudson/model/Node.java b/core/src/main/java/hudson/model/Node.java index f6a08d88f558b03ffe0c0732888df7ed8b836cc3..4c3e6e9ac6084b43089fe809f33da88217a7d38c 100644 --- a/core/src/main/java/hudson/model/Node.java +++ b/core/src/main/java/hudson/model/Node.java @@ -59,6 +59,7 @@ import java.util.List; import java.util.logging.Logger; import jenkins.model.Jenkins; +import jenkins.util.io.OnMaster; import net.sf.json.JSONObject; import org.kohsuke.stapler.BindInterceptor; import org.kohsuke.stapler.Stapler; @@ -77,7 +78,7 @@ import org.kohsuke.stapler.export.Exported; * @see NodeDescriptor */ @ExportedBean -public abstract class Node extends AbstractModelObject implements ReconfigurableDescribable, ExtensionPoint, AccessControlled { +public abstract class Node extends AbstractModelObject implements ReconfigurableDescribable, ExtensionPoint, AccessControlled, OnMaster { private static final Logger LOGGER = Logger.getLogger(Node.class.getName()); diff --git a/core/src/main/java/hudson/model/Run.java b/core/src/main/java/hudson/model/Run.java index 5ee80b52d8f533bf03eb15b7326a5f16aa292948..3e2ccfce64691dd00fa8f9520fdfcdf02f795b27 100644 --- a/core/src/main/java/hudson/model/Run.java +++ b/core/src/main/java/hudson/model/Run.java @@ -97,6 +97,7 @@ import javax.servlet.ServletException; import javax.servlet.http.HttpServletResponse; import jenkins.model.Jenkins; +import jenkins.util.io.OnMaster; import net.sf.json.JSONObject; import org.apache.commons.io.input.NullInputStream; import org.apache.commons.io.IOUtils; @@ -128,7 +129,7 @@ import static java.util.logging.Level.*; */ @ExportedBean public abstract class Run ,RunT extends Run> - extends Actionable implements ExtensionPoint, Comparable, AccessControlled, PersistenceRoot, DescriptorByNameOwner { + extends Actionable implements ExtensionPoint, Comparable, AccessControlled, PersistenceRoot, DescriptorByNameOwner, OnMaster { protected transient final JobT project; diff --git a/core/src/main/java/hudson/model/UpdateCenter.java b/core/src/main/java/hudson/model/UpdateCenter.java index 3a993a18b865d0eb8bbea2b29e23cc08af490a49..9812192921edf506f797b94100b5397d629d10cc 100644 --- a/core/src/main/java/hudson/model/UpdateCenter.java +++ b/core/src/main/java/hudson/model/UpdateCenter.java @@ -47,6 +47,7 @@ import hudson.util.PersistedList; import hudson.util.XStream2; import jenkins.RestartRequiredException; import jenkins.model.Jenkins; +import jenkins.util.io.OnMaster; import org.acegisecurity.Authentication; import org.acegisecurity.context.SecurityContext; import org.apache.commons.io.input.CountingInputStream; @@ -104,7 +105,7 @@ import org.kohsuke.stapler.interceptor.RequirePOST; * @since 1.220 */ @ExportedBean -public class UpdateCenter extends AbstractModelObject implements Saveable { +public class UpdateCenter extends AbstractModelObject implements Saveable, OnMaster { private static final String UPDATE_CENTER_URL = System.getProperty(UpdateCenter.class.getName()+".updateCenterUrl","http://updates.jenkins-ci.org/"); diff --git a/core/src/main/java/jenkins/util/io/OnMaster.java b/core/src/main/java/jenkins/util/io/OnMaster.java new file mode 100644 index 0000000000000000000000000000000000000000..ce84873df874626c18d307e2f69bb8fe61f30f57 --- /dev/null +++ b/core/src/main/java/jenkins/util/io/OnMaster.java @@ -0,0 +1,19 @@ +package jenkins.util.io; + +/** + * Marks the objects in Jenkins that only exist in the core + * and not on slaves. + * + *

+ * This marker interface is for plugin developers to quickly + * tell if they can take a specific object from a master to + * a slave. + * + * (Core developers, if you find classes/interfaces that extend + * from this, please be encouraged to add them.) + * + * @author Kohsuke Kawaguchi + * @since 1.475 + */ +public interface OnMaster { +}