All Downloads are FREE. Search and download functionalities are using the official Maven repository.

hudson.cli.declarative.CLIResolver Maven / Gradle / Ivy

The newest version!
/*******************************************************************************
 *
 * Copyright (c) 2004-2009, Oracle Corporation
 *
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *
 *
 *
 *
 *******************************************************************************/ 

package hudson.cli.declarative;

import hudson.cli.CLICommand;
import hudson.model.Hudson;
import org.jvnet.hudson.annotation_indexer.Indexed;
import org.kohsuke.args4j.CmdLineException;

import java.lang.annotation.Documented;
import static java.lang.annotation.ElementType.METHOD;
import java.lang.annotation.Retention;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.Target;

/**
 * Annotates a resolver method that binds a portion of the command line
 * arguments and parameters to an instance whose {@link CLIMethod} is invoked
 * for the final processing.
 *
 * 

Hudson uses the return type of the resolver method to pick the resolver * method to use, of all the resolver methods it discovers. That is, if Hudson * is looking to find an instance of type T for the current command, it * first looks for the resolver method whose return type is T, then it * checks for the base type of T, and so on. * *

If the chosen resolver method is an instance method on type S, * the "parent resolver" is then located to resolve an instance of type 'S'. * This process repeats until a static resolver method is discovered (since most * of Hudson's model objects are anchored to the root {@link Hudson} object, * normally that would become the top-most resolver method.) * *

Parameters of the resolver method receives the same parameter/argument * injections that {@link CLIMethod}s receive. Parameters and arguments consumed * by the resolver will not be visible to {@link CLIMethod}s. * *

The resolver method shall never return null — it should instead * indicate a failure by throwing {@link CmdLineException}. * * @author Kohsuke Kawaguchi * @see CLICommand * @since 1.321 */ @Indexed @Retention(RUNTIME) @Target({METHOD}) @Documented public @interface CLIResolver { }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy