package org.testng.annotations;
import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import org.testng.internal.Parameters;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
/**
* Specifies that the current parameter is optional. TestNG will pass
* in a specified default value, or null
if none is specified.
*/
@Retention(RUNTIME)
@Target({PARAMETER})
public @interface Optional {
/** The default value to pass to this parameter.
The default deserves
* a bit of explanation. JSR-175 (which defines annotations) says that
* Java annotation parameters can only be ConstantExpressions, which
* can be primitive/string literals, but not null
.
In this case, we use this string as a substitute
* for null
; in practice, TestNG will pass null
* to your code, and not the string "null", if you do not specify
* a default value here in this parameter.
*/
public String value() default Parameters.NULL_VALUE;
}