From c0f7065668ed0d34b1a62acd37669f868b4336d7 Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Wed, 4 Jul 2012 10:48:59 +0300 Subject: [PATCH] added a marker interface to help plugin developers. --- core/src/main/java/hudson/PluginManager.java | 3 ++- core/src/main/java/hudson/model/Job.java | 3 ++- core/src/main/java/hudson/model/Node.java | 3 ++- core/src/main/java/hudson/model/Run.java | 3 ++- .../main/java/hudson/model/UpdateCenter.java | 3 ++- .../main/java/jenkins/util/io/OnMaster.java | 19 +++++++++++++++++++ 6 files changed, 29 insertions(+), 5 deletions(-) create mode 100644 core/src/main/java/jenkins/util/io/OnMaster.java diff --git a/core/src/main/java/hudson/PluginManager.java b/core/src/main/java/hudson/PluginManager.java index 99755339ad..fa46102d30 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 3673516ce2..520154785a 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 f6a08d88f5..4c3e6e9ac6 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 5ee80b52d8..3e2ccfce64 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 3a993a18b8..9812192921 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 0000000000..ce84873df8 --- /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 { +} -- GitLab