@Documented @Constraint(validatedBy={}) @Target(value={CONSTRUCTOR,METHOD}) @Retention(value=RUNTIME) @Repeatable(value=ParameterScriptAssert.List.class) public @interface ParameterScriptAssert
A method-level constraint, that evaluates a script expression against the annotated method or constructor. This constraint can be used to implement validation routines that depend on several parameters of the annotated executable.
Script expressions can be written in any scripting or expression language,
for which a JSR 223
("Scripting for the JavaTM Platform") compatible engine can be
found on the classpath. To refer to a parameter within the scripting
expression, use its name as obtained by the active
ParameterNameProvider
. By default, arg0
, arg1
etc.
will be used as parameter names.
The following listing shows an example using the JavaScript engine which comes with the JDK:
@ParameterScriptAssert(script = "arg0.before(arg1)", lang = "javascript")
public void createEvent(Date start, Date end) { ... }
Can be specified on any method or constructor.
public abstract String lang
ScriptEngineManager
. A
ConstraintDeclarationException
will be thrown upon script
evaluation, if no engine for the given language could be found.public abstract String script
Boolean.TRUE
, if the executable parameters could
successfully be validated, otherwise Boolean.FALSE
.
Returning null or any type other than Boolean will cause a
ConstraintDeclarationException
upon validation. Any
exception occurring during script evaluation will be wrapped into
a ConstraintDeclarationException, too. Within the script, the
validated parameters can be accessed using their names as retrieved from the
active ParameterNameProvider
.public abstract String message
public abstract Class<?>[] groups
Copyright © 2019 JBoss by Red Hat. All rights reserved.