package org.testng.annotations; import java.lang.annotation.Retention; import java.lang.annotation.Target; import org.testng.internal.Parameters; import static java.lang.annotation.ElementType.*; import static java.lang.annotation.RetentionPolicy.*; /** * Specifies that the current parameter is optional. TestNG will pass * in a specified default value, or <code>null</code> if none is specified. */ @Retention(RUNTIME) @Target({PARAMETER}) public @interface Optional { /** The default value to pass to this parameter. <p>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 <code>null</code>.</p> * <p>In this case, we use this string as a substitute * for <code>null</code>; in practice, TestNG will pass <code>null</code> * 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; }