package hudson;
import org.kohsuke.stapler.QueryParameter;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.*;
/**
* Used in conjunction with {@link QueryParameter} to refer to
* nearby parameters that belong to different parents.
*
* <p>
* ".." refers
* to values in the parent object, and "foo" refers to the child
* object of the current object named "foo". They can be combined
* with '/' like path, such as "../foo/bar", "../..", and etc.
*
* <p>
* A good way to think about this is the file system structure.
* {@code @RelativePath} is like the dirname, and {@code QueryParameter}
* is like the basename. Together they form a relative path.
* And because of the structured form submissions,
* form elements are organized in a tree structure of JSON objects,
* which is akin to directories and files.
*
* <p>
* The relative path then points from the current input element
* (for which you are doing form validation, for example) to the target
* input element that you want to obtain the value.
*
* @author Kohsuke Kawaguchi
* @since 1.376
*/
@Documented
@Target(PARAMETER)
@Retention(RUNTIME)
public @interface RelativePath {
String value();
}