mirror of
https://github.com/jenkinsci/jenkins.git
synced 2026-10-26 19:15:09 +00:00
Register OptionHandlers through META-INF/services/annotations and Annotation Indexer rather than META-INF/services and Commons Discovery
This commit is contained in:
1 parent
ab2ae8bf6b
commit
a1c8c83cf7
10 files changed
+27
-38
No files matched your search
@@ -242,7 +242,6 @@ public abstract class CLICommand implements ExtensionPoint, Cloneable {
|
||||
this.stdout = stdout;
|
||||
this.stderr = stderr;
|
||||
this.locale = locale;
|
||||
registerOptionHandlers();
|
||||
CmdLineParser p = getCmdLineParser();
|
||||
|
||||
// add options from the authenticator
|
||||
@@ -527,20 +526,6 @@ public abstract class CLICommand implements ExtensionPoint, Cloneable {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Auto-discovers {@link OptionHandler}s and add them to the given command line parser.
|
||||
*/
|
||||
protected void registerOptionHandlers() {
|
||||
try {
|
||||
for (Class c : Index.list(OptionHandlerExtension.class, Jenkins.get().pluginManager.uberClassLoader, Class.class)) {
|
||||
Type t = Types.getBaseClass(c, OptionHandler.class);
|
||||
CmdLineParser.registerHandler(Types.erasure(Types.getTypeArgument(t, 0)), c);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
throw new Error(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all the registered {@link CLICommand}s.
|
||||
*/
|
||||
@@ -577,11 +562,21 @@ public abstract class CLICommand implements ExtensionPoint, Cloneable {
|
||||
|
||||
static {
|
||||
// register option handlers that are defined
|
||||
ClassLoaders cls = new ClassLoaders();
|
||||
Jenkins j = Jenkins.getInstanceOrNull();
|
||||
if (j != null) { // only when running on the controller
|
||||
cls.put(j.getPluginManager().uberClassLoader);
|
||||
// Register OptionHandlers through META-INF/services/annotations and Annotation Indexer
|
||||
try {
|
||||
for (Class c : Index.list(OptionHandlerExtension.class, Jenkins.get().pluginManager.uberClassLoader, Class.class)) {
|
||||
Type t = Types.getBaseClass(c, OptionHandler.class);
|
||||
CmdLineParser.registerHandler(Types.erasure(Types.getTypeArgument(t, 0)), c);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
throw new UncheckedIOException(e);
|
||||
}
|
||||
|
||||
// Register OptionHandlers through META-INF/services and Commons Discovery
|
||||
ClassLoaders cls = new ClassLoaders();
|
||||
cls.put(j.getPluginManager().uberClassLoader);
|
||||
ResourceNameIterator servicesIter =
|
||||
new DiscoverServiceNames(cls).findResourceNames(OptionHandler.class.getName());
|
||||
final ResourceClassIterator itr =
|
||||
|
||||
@@ -131,7 +131,6 @@ public class CLIRegisterer extends ExtensionFinder {
|
||||
|
||||
private CmdLineParser bindMethod(List<MethodBinder> binders) {
|
||||
|
||||
registerOptionHandlers();
|
||||
ParserProperties properties = ParserProperties.defaults().withAtSyntax(ALLOW_AT_SYNTAX);
|
||||
CmdLineParser parser = new CmdLineParser(null, properties);
|
||||
|
||||
|
||||
@@ -35,7 +35,6 @@ import org.kohsuke.args4j.spi.OptionHandler;
|
||||
|
||||
/**
|
||||
* {@link OptionHandler}s that should be auto-discovered.
|
||||
* TODO is this actually necessary? {@code @MetaInfServices(OptionHandler.class)} seems to work as well.
|
||||
* @author Kohsuke Kawaguchi
|
||||
*/
|
||||
@Indexed
|
||||
|
||||
@@ -24,18 +24,18 @@
|
||||
|
||||
package hudson.cli.handlers;
|
||||
|
||||
import hudson.cli.declarative.OptionHandlerExtension;
|
||||
import hudson.model.AbstractItem;
|
||||
import org.kohsuke.MetaInfServices;
|
||||
import org.kohsuke.args4j.CmdLineParser;
|
||||
import org.kohsuke.args4j.OptionDef;
|
||||
import org.kohsuke.args4j.spi.OptionHandler;
|
||||
import org.kohsuke.args4j.spi.Setter;
|
||||
|
||||
/**
|
||||
* Refers to an {@link AbstractItem} by name.
|
||||
* @since 1.538
|
||||
*/
|
||||
@MetaInfServices(OptionHandler.class) public class AbstractItemOptionHandler extends GenericItemOptionHandler<AbstractItem> {
|
||||
@OptionHandlerExtension
|
||||
public class AbstractItemOptionHandler extends GenericItemOptionHandler<AbstractItem> {
|
||||
|
||||
public AbstractItemOptionHandler(CmdLineParser parser, OptionDef option, Setter<AbstractItem> setter) {
|
||||
super(parser, option, setter);
|
||||
|
||||
@@ -24,11 +24,10 @@
|
||||
|
||||
package hudson.cli.handlers;
|
||||
|
||||
import hudson.cli.declarative.OptionHandlerExtension;
|
||||
import hudson.model.AbstractProject;
|
||||
import org.kohsuke.MetaInfServices;
|
||||
import org.kohsuke.args4j.CmdLineParser;
|
||||
import org.kohsuke.args4j.OptionDef;
|
||||
import org.kohsuke.args4j.spi.OptionHandler;
|
||||
import org.kohsuke.args4j.spi.Setter;
|
||||
|
||||
/**
|
||||
@@ -36,7 +35,7 @@ import org.kohsuke.args4j.spi.Setter;
|
||||
*
|
||||
* @author Kohsuke Kawaguchi
|
||||
*/
|
||||
@MetaInfServices(OptionHandler.class)
|
||||
@OptionHandlerExtension
|
||||
@SuppressWarnings("rawtypes")
|
||||
public class AbstractProjectOptionHandler extends GenericItemOptionHandler<AbstractProject> {
|
||||
public AbstractProjectOptionHandler(CmdLineParser parser, OptionDef option, Setter<AbstractProject> setter) {
|
||||
|
||||
@@ -24,11 +24,10 @@
|
||||
|
||||
package hudson.cli.handlers;
|
||||
|
||||
import hudson.cli.declarative.OptionHandlerExtension;
|
||||
import hudson.model.Job;
|
||||
import org.kohsuke.MetaInfServices;
|
||||
import org.kohsuke.args4j.CmdLineParser;
|
||||
import org.kohsuke.args4j.OptionDef;
|
||||
import org.kohsuke.args4j.spi.OptionHandler;
|
||||
import org.kohsuke.args4j.spi.Setter;
|
||||
|
||||
/**
|
||||
@@ -36,7 +35,7 @@ import org.kohsuke.args4j.spi.Setter;
|
||||
*
|
||||
* @author Kohsuke Kawaguchi
|
||||
*/
|
||||
@MetaInfServices(OptionHandler.class)
|
||||
@OptionHandlerExtension
|
||||
@SuppressWarnings("rawtypes")
|
||||
public class JobOptionHandler extends GenericItemOptionHandler<Job> {
|
||||
public JobOptionHandler(CmdLineParser parser, OptionDef option, Setter<Job> setter) {
|
||||
|
||||
@@ -24,9 +24,9 @@
|
||||
|
||||
package hudson.cli.handlers;
|
||||
|
||||
import hudson.cli.declarative.OptionHandlerExtension;
|
||||
import hudson.model.Node;
|
||||
import jenkins.model.Jenkins;
|
||||
import org.kohsuke.MetaInfServices;
|
||||
import org.kohsuke.args4j.CmdLineException;
|
||||
import org.kohsuke.args4j.CmdLineParser;
|
||||
import org.kohsuke.args4j.OptionDef;
|
||||
@@ -40,7 +40,7 @@ import org.kohsuke.args4j.spi.Setter;
|
||||
* @author ogondza
|
||||
* @since 1.526
|
||||
*/
|
||||
@MetaInfServices
|
||||
@OptionHandlerExtension
|
||||
public class NodeOptionHandler extends OptionHandler<Node> {
|
||||
|
||||
public NodeOptionHandler(CmdLineParser parser, OptionDef option, Setter<Node> setter) {
|
||||
|
||||
@@ -24,20 +24,19 @@
|
||||
|
||||
package hudson.cli.handlers;
|
||||
|
||||
import hudson.cli.declarative.OptionHandlerExtension;
|
||||
import jenkins.model.ParameterizedJobMixIn;
|
||||
import org.kohsuke.MetaInfServices;
|
||||
import org.kohsuke.accmod.Restricted;
|
||||
import org.kohsuke.accmod.restrictions.DoNotUse;
|
||||
import org.kohsuke.args4j.CmdLineParser;
|
||||
import org.kohsuke.args4j.OptionDef;
|
||||
import org.kohsuke.args4j.spi.OptionHandler;
|
||||
import org.kohsuke.args4j.spi.Setter;
|
||||
|
||||
/**
|
||||
* Refer to {@link jenkins.model.ParameterizedJobMixIn.ParameterizedJob} by its name.
|
||||
*/
|
||||
@Restricted(DoNotUse.class)
|
||||
@MetaInfServices(OptionHandler.class)
|
||||
@OptionHandlerExtension
|
||||
@SuppressWarnings("rawtypes")
|
||||
public class ParameterizedJobOptionHandler extends GenericItemOptionHandler<ParameterizedJobMixIn.ParameterizedJob> {
|
||||
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
package hudson.cli.handlers;
|
||||
|
||||
import hudson.cli.declarative.OptionHandlerExtension;
|
||||
import hudson.model.TopLevelItem;
|
||||
import org.kohsuke.MetaInfServices;
|
||||
import org.kohsuke.args4j.CmdLineParser;
|
||||
import org.kohsuke.args4j.OptionDef;
|
||||
import org.kohsuke.args4j.spi.OptionHandler;
|
||||
import org.kohsuke.args4j.spi.Setter;
|
||||
|
||||
/**
|
||||
@@ -12,7 +11,7 @@ import org.kohsuke.args4j.spi.Setter;
|
||||
*
|
||||
* @author Kohsuke Kawaguchi
|
||||
*/
|
||||
@MetaInfServices(OptionHandler.class)
|
||||
@OptionHandlerExtension
|
||||
public class TopLevelItemOptionHandler extends GenericItemOptionHandler<TopLevelItem> {
|
||||
public TopLevelItemOptionHandler(CmdLineParser parser, OptionDef option, Setter<TopLevelItem> setter) {
|
||||
super(parser, option, setter);
|
||||
|
||||
@@ -25,11 +25,11 @@
|
||||
package hudson.cli.handlers;
|
||||
|
||||
import edu.umd.cs.findbugs.annotations.CheckForNull;
|
||||
import hudson.cli.declarative.OptionHandlerExtension;
|
||||
import hudson.model.View;
|
||||
import hudson.model.ViewGroup;
|
||||
import java.util.StringTokenizer;
|
||||
import jenkins.model.Jenkins;
|
||||
import org.kohsuke.MetaInfServices;
|
||||
import org.kohsuke.args4j.CmdLineException;
|
||||
import org.kohsuke.args4j.CmdLineParser;
|
||||
import org.kohsuke.args4j.OptionDef;
|
||||
@@ -58,7 +58,7 @@ import org.springframework.security.access.AccessDeniedException;
|
||||
* @author ogondza
|
||||
* @since 1.538
|
||||
*/
|
||||
@MetaInfServices
|
||||
@OptionHandlerExtension
|
||||
public class ViewOptionHandler extends OptionHandler<View> {
|
||||
|
||||
public ViewOptionHandler(CmdLineParser parser, OptionDef option, Setter<View> setter) {
|
||||
|
||||
Reference in new issue
Block a user