From b4f3a13ebc762a85e27539556f9c4166e1e5b8b1 Mon Sep 17 00:00:00 2001 From: kohsuke Date: Tue, 24 Feb 2009 05:09:02 +0000 Subject: [PATCH] converted JobProperty to support auto-registration. git-svn-id: https://hudson.dev.java.net/svn/hudson/trunk/hudson/main@15618 71c3de6d-444a-0410-be80-ed276b4c234a --- core/src/main/java/hudson/model/Hudson.java | 4 ++-- core/src/main/java/hudson/model/JobProperty.java | 4 +++- .../java/hudson/model/JobPropertyDescriptor.java | 8 ++++++-- core/src/main/java/hudson/model/Jobs.java | 12 +++++++++--- .../hudson/model/ParametersDefinitionProperty.java | 9 ++------- .../hudson/security/AuthorizationMatrixProperty.java | 9 ++------- .../security/ProjectMatrixAuthorizationStrategy.java | 5 ----- 7 files changed, 24 insertions(+), 27 deletions(-) diff --git a/core/src/main/java/hudson/model/Hudson.java b/core/src/main/java/hudson/model/Hudson.java index 0e129051a3..429933b09f 100644 --- a/core/src/main/java/hudson/model/Hudson.java +++ b/core/src/main/java/hudson/model/Hudson.java @@ -675,7 +675,7 @@ public final class Hudson extends Node implements ItemGroup, Stapl */ public JobPropertyDescriptor getJobProperty(String shortClassName) { // combining these two lines triggers javac bug. See issue #610. - Descriptor d = findDescriptor(shortClassName, Jobs.PROPERTIES); + Descriptor d = findDescriptor(shortClassName, JobPropertyDescriptor.all()); return (JobPropertyDescriptor) d; } @@ -2038,7 +2038,7 @@ public final class Hudson extends Node implements ItemGroup, Stapl for( TriggerDescriptor d : Triggers.TRIGGERS ) result &= configureDescriptor(req,json,d); - for( JobPropertyDescriptor d : Jobs.PROPERTIES ) + for( JobPropertyDescriptor d : JobPropertyDescriptor.all() ) result &= configureDescriptor(req,json,d); for( PageDecorator d : PageDecorator.ALL ) diff --git a/core/src/main/java/hudson/model/JobProperty.java b/core/src/main/java/hudson/model/JobProperty.java index 0bc9e66c07..771da21cda 100644 --- a/core/src/main/java/hudson/model/JobProperty.java +++ b/core/src/main/java/hudson/model/JobProperty.java @@ -88,7 +88,9 @@ public abstract class JobProperty> implements Describable> { @@ -93,9 +93,13 @@ public abstract class JobPropertyDescriptor extends Descriptor> { */ public static List getPropertyDescriptors(Class clazz) { List r = new ArrayList(); - for (JobPropertyDescriptor p : Jobs.PROPERTIES) + for (JobPropertyDescriptor p : all()) if(p.isApplicable(clazz)) r.add(p); return r; } + + public static Collection all() { + return (Collection)Hudson.getInstance().getDescriptorList(JobProperty.class); + } } diff --git a/core/src/main/java/hudson/model/Jobs.java b/core/src/main/java/hudson/model/Jobs.java index 19390a5586..078595544e 100644 --- a/core/src/main/java/hudson/model/Jobs.java +++ b/core/src/main/java/hudson/model/Jobs.java @@ -23,6 +23,9 @@ */ package hudson.model; +import hudson.util.DescriptorList; +import hudson.Extension; + import java.util.List; /** @@ -38,8 +41,11 @@ public class Jobs { * Plugins can add their {@link JobPropertyDescriptor}s to this list. * * @see JobPropertyDescriptor#getPropertyDescriptors(Class) + * + * @deprecated as of 1.281 + * Use {@link JobPropertyDescriptor#all()} for read access, + * and {@link Extension} for registration. */ - public static final List PROPERTIES = Descriptor.toList( - ParametersDefinitionProperty.DESCRIPTOR - ); + public static final List PROPERTIES = (List) + new DescriptorList>((Class)JobProperty.class); } diff --git a/core/src/main/java/hudson/model/ParametersDefinitionProperty.java b/core/src/main/java/hudson/model/ParametersDefinitionProperty.java index 62904c49b7..57416f8f1e 100644 --- a/core/src/main/java/hudson/model/ParametersDefinitionProperty.java +++ b/core/src/main/java/hudson/model/ParametersDefinitionProperty.java @@ -35,6 +35,7 @@ import net.sf.json.JSONObject; import org.kohsuke.stapler.StaplerRequest; import org.kohsuke.stapler.StaplerResponse; +import hudson.Extension; /** * Keeps a list of the parameters defined for a project. @@ -136,13 +137,7 @@ public class ParametersDefinitionProperty extends JobProperty jobType) { diff --git a/core/src/main/java/hudson/security/AuthorizationMatrixProperty.java b/core/src/main/java/hudson/security/AuthorizationMatrixProperty.java index 862fbb7b13..c5b063a663 100644 --- a/core/src/main/java/hudson/security/AuthorizationMatrixProperty.java +++ b/core/src/main/java/hudson/security/AuthorizationMatrixProperty.java @@ -30,6 +30,7 @@ import hudson.model.JobProperty; import hudson.model.JobPropertyDescriptor; import hudson.model.Hudson; import hudson.model.Run; +import hudson.Extension; import java.util.Arrays; import java.util.HashMap; @@ -60,8 +61,6 @@ import javax.servlet.ServletException; */ public class AuthorizationMatrixProperty extends JobProperty> { - public static final JobPropertyDescriptor DESCRIPTOR = new DescriptorImpl(); - private transient SidACL acl = new AclImpl(); private boolean useProjectSecurity; @@ -117,11 +116,7 @@ public class AuthorizationMatrixProperty extends JobProperty> { sids.add(sid); } - @Override - public JobPropertyDescriptor getDescriptor() { - return DESCRIPTOR; - } - + @Extension public static class DescriptorImpl extends JobPropertyDescriptor { @Override public JobProperty newInstance(StaplerRequest req, diff --git a/core/src/main/java/hudson/security/ProjectMatrixAuthorizationStrategy.java b/core/src/main/java/hudson/security/ProjectMatrixAuthorizationStrategy.java index 5b062622c3..01e9305296 100644 --- a/core/src/main/java/hudson/security/ProjectMatrixAuthorizationStrategy.java +++ b/core/src/main/java/hudson/security/ProjectMatrixAuthorizationStrategy.java @@ -25,7 +25,6 @@ package hudson.security; import hudson.model.Descriptor; import hudson.model.Job; -import hudson.model.Jobs; import hudson.util.RobustReflectionConverter; import hudson.Extension; import com.thoughtworks.xstream.io.HierarchicalStreamReader; @@ -90,9 +89,5 @@ public class ProjectMatrixAuthorizationStrategy extends GlobalMatrixAuthorizatio return type==ProjectMatrixAuthorizationStrategy.class; } } - - static { - Jobs.PROPERTIES.add(AuthorizationMatrixProperty.DESCRIPTOR); - } } -- GitLab