提交 4d57c31d 编写于 作者: K kohsuke

ParameterDefinition is updated to support automatic discovery

git-svn-id: https://hudson.dev.java.net/svn/hudson/trunk/hudson/main@15658 71c3de6d-444a-0410-be80-ed276b4c234a
上级 62588b02
......@@ -617,7 +617,7 @@ public class Functions {
}
public static List<Descriptor<ParameterDefinition>> getParameterDescriptors() {
return ParameterDefinition.LIST;
return ParameterDefinition.all();
}
/**
......
......@@ -26,6 +26,7 @@ package hudson.model;
import net.sf.json.JSONObject;
import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.StaplerRequest;
import hudson.Extension;
/**
* {@link ParameterDefinition} for doing file upload.
......@@ -41,18 +42,13 @@ public class FileParameterDefinition extends ParameterDefinition {
super(name);
}
public ParameterDescriptor getDescriptor() {
return DESCRIPTOR;
}
public FileParameterValue createValue(StaplerRequest req, JSONObject jo) {
FileParameterValue p = req.bindJSON(FileParameterValue.class, jo);
p.setLocation(getName());
return p;
}
public static final ParameterDescriptor DESCRIPTOR = new DescriptorImpl();
@Extension
public static class DescriptorImpl extends ParameterDescriptor {
@Override
public String getDisplayName() {
......
......@@ -35,13 +35,7 @@ public class JobParameterDefinition extends ParameterDefinition {
super(name);
}
@Override
public ParameterDescriptor getDescriptor() {
return DESCRIPTOR;
}
public static final ParameterDescriptor DESCRIPTOR = new DescriptorImpl();
// @Extension --- not live yet
public static class DescriptorImpl extends ParameterDescriptor {
@Override
public String getDisplayName() {
......
......@@ -29,6 +29,9 @@ import org.kohsuke.stapler.StaplerRequest;
import hudson.util.DescriptorList;
import hudson.ExtensionPoint;
import hudson.DescriptorExtensionList;
import hudson.Extension;
import hudson.views.ListViewColumn;
/**
* Defines a parameter for a build.
......@@ -40,7 +43,7 @@ import hudson.ExtensionPoint;
* <p>
* The actual meaning and the purpose of parameters are entirely up to users, so
* what the concrete parameter implmentation is pluggable. Write subclasses
* in a plugin and hook it up to {@link #LIST} to register it.
* in a plugin and put {@link Extension} on the descriptor to register them.
*
* <p>
* Three classes are used to model build parameters. First is the
......@@ -101,7 +104,9 @@ public abstract class ParameterDefinition implements
/**
* {@inheritDoc}
*/
public abstract ParameterDescriptor getDescriptor();
public ParameterDescriptor getDescriptor() {
return (ParameterDescriptor)Hudson.getInstance().getDescriptor(getClass());
}
/**
* Create a parameter value from a form submission
......@@ -129,10 +134,19 @@ public abstract class ParameterDefinition implements
return null;
}
/**
* Returns all the registered {@link ParameterDefinition} descriptors.
*/
public static DescriptorExtensionList<ParameterDefinition> all() {
return Hudson.getInstance().getDescriptorList(ParameterDefinition.class);
}
/**
* A list of available parameter definition types
* @deprecated as of 1.286
* Use {@link #all()} for read access, and {@link Extension} for registration.
*/
public static final DescriptorList<ParameterDefinition> LIST = new DescriptorList<ParameterDefinition>();
public static final DescriptorList<ParameterDefinition> LIST = new DescriptorList<ParameterDefinition>(ParameterDefinition.class);
public abstract static class ParameterDescriptor extends
Descriptor<ParameterDefinition> {
......
......@@ -158,7 +158,7 @@ public class ParametersDefinitionProperty extends JobProperty<AbstractProject<?,
}
List<ParameterDefinition> parameterDefinitions = Descriptor.newInstancesFromHeteroList(
req, parameterized, "parameter", ParameterDefinition.LIST);
req, parameterized, "parameter", ParameterDefinition.all());
if(parameterDefinitions.isEmpty())
return null;
......@@ -182,9 +182,4 @@ public class ParametersDefinitionProperty extends JobProperty<AbstractProject<?,
public String getUrlName() {
return "parameters";
}
static {
ParameterDefinition.LIST.add(StringParameterDefinition.DESCRIPTOR);
ParameterDefinition.LIST.add(FileParameterDefinition.DESCRIPTOR);
}
}
......@@ -35,13 +35,7 @@ public class RunParameterDefinition extends ParameterDefinition {
super(name);
}
@Override
public ParameterDescriptor getDescriptor() {
return DESCRIPTOR;
}
public static final ParameterDescriptor DESCRIPTOR = new DescriptorImpl();
// @Extension --- not live yet
public static class DescriptorImpl extends ParameterDescriptor {
@Override
public String getDisplayName() {
......
......@@ -27,6 +27,7 @@ import net.sf.json.JSONObject;
import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.StaplerRequest;
import hudson.Extension;
/**
* Parameter whose value is a string value.
......@@ -41,11 +42,6 @@ public class StringParameterDefinition extends ParameterDefinition {
this.defaultValue = defaultValue;
}
@Override
public ParameterDescriptor getDescriptor() {
return DESCRIPTOR;
}
public String getDefaultValue() {
return defaultValue;
}
......@@ -58,8 +54,7 @@ public class StringParameterDefinition extends ParameterDefinition {
return new StringParameterValue(getName(), defaultValue);
}
public static final ParameterDescriptor DESCRIPTOR = new DescriptorImpl();
@Extension
public static class DescriptorImpl extends ParameterDescriptor {
@Override
public String getDisplayName() {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册