Examples
For example:
public class Customer {
public static class EmailSpecification extends AbstractSpecification<String> {
public String satisfiesSafely(String proposed) {
return EmailUtil.ensureValidEmail(proposed); (1)
}
}
@Action(semantics=SemanticsOf.IDEMPOTENT)
public Customer updateEmail(
@Parameter(
maxLength=30,
mustSatisfy=EmailSpecification.class,
optionality=Optionality.OPTIONAL,
regexPattern = "(\\w+\\.)*\\w+@(\\w+\\.)+[A-Za-z]+",
regexPatternFlags=Pattern.CASE_INSENSITIVE
)
@ParameterLayout(named="New Email Address")
final String newEmailAddress
...
}
}
| 1 | the (fictitious) EmailUtil.ensureValid(…) (omitted for brevity) returns a string explaining if an email is invalid |