提交 b4f3a13e 编写于 作者: K kohsuke

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
上级 cf25766b
......@@ -675,7 +675,7 @@ public final class Hudson extends Node implements ItemGroup<TopLevelItem>, 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<TopLevelItem>, 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 )
......
......@@ -88,7 +88,9 @@ public abstract class JobProperty<J extends Job<?,?>> implements Describable<Job
/**
* {@inheritDoc}
*/
public abstract JobPropertyDescriptor getDescriptor();
public JobPropertyDescriptor getDescriptor() {
return (JobPropertyDescriptor)Hudson.getInstance().getDescriptor(getClass());
}
/**
* {@link Action} to be displayed in the job page.
......
......@@ -28,6 +28,7 @@ import org.jvnet.tiger_types.Types;
import java.util.List;
import java.util.ArrayList;
import java.util.Collection;
import java.lang.reflect.Type;
import java.lang.reflect.ParameterizedType;
......@@ -37,7 +38,6 @@ import net.sf.json.JSONObject;
* {@link Descriptor} for {@link JobProperty}.
*
* @author Kohsuke Kawaguchi
* @see Jobs#PROPERTIES
* @since 1.72
*/
public abstract class JobPropertyDescriptor extends Descriptor<JobProperty<?>> {
......@@ -93,9 +93,13 @@ public abstract class JobPropertyDescriptor extends Descriptor<JobProperty<?>> {
*/
public static List<JobPropertyDescriptor> getPropertyDescriptors(Class<? extends Job> clazz) {
List<JobPropertyDescriptor> r = new ArrayList<JobPropertyDescriptor>();
for (JobPropertyDescriptor p : Jobs.PROPERTIES)
for (JobPropertyDescriptor p : all())
if(p.isApplicable(clazz))
r.add(p);
return r;
}
public static Collection<JobPropertyDescriptor> all() {
return (Collection)Hudson.getInstance().getDescriptorList(JobProperty.class);
}
}
......@@ -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<JobPropertyDescriptor> PROPERTIES = Descriptor.toList(
ParametersDefinitionProperty.DESCRIPTOR
);
public static final List<JobPropertyDescriptor> PROPERTIES = (List)
new DescriptorList<JobProperty<?>>((Class)JobProperty.class);
}
......@@ -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<AbstractProject<?,
return null;
}
@Override
public JobPropertyDescriptor getDescriptor() {
return DESCRIPTOR;
}
public static final JobPropertyDescriptor DESCRIPTOR = new DescriptorImpl();
@Extension
public static class DescriptorImpl extends JobPropertyDescriptor {
@Override
public boolean isApplicable(Class<? extends Job> jobType) {
......
......@@ -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<Job<?, ?>> {
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<Job<?, ?>> {
sids.add(sid);
}
@Override
public JobPropertyDescriptor getDescriptor() {
return DESCRIPTOR;
}
@Extension
public static class DescriptorImpl extends JobPropertyDescriptor {
@Override
public JobProperty<?> newInstance(StaplerRequest req,
......
......@@ -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);
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册