Examples
For example:
@DomainObject
public class Customer {
public static class EmailSpecification extends AbstractSpecification<String> {
public String satisfiesSafely(String proposed) {
return EmailUtil.ensureValidEmail(proposed); (1)
}
}
@javax.jdo.annotations.Column(allowsNull="true") (2)
@Property(
maxLength=30,
mustSatisfy=EmailSpecification.class,
regexPattern = "(\\w+\\.)*\\w+@(\\w+\\.)+[A-Za-z]+",
regexPatternFlags=Pattern.CASE_INSENSITIVE
)
public String getEmailAddress() { /* ... */ }
public void setEmailAddress(String emailAddress) { /* ... */ }
...
}
| 1 | the (fictitious) EmailUtil.ensureValid(…) (omitted for brevity) returns a string explaining if an email is invalid |
| 2 | generally use instead of the @Property#optionality attribute |
|
The annotation is one of a handful (others including @Collection, @CollectionLayout and @PropertyLayout) that can also be applied to the field, rather than the getter method. This is specifically so that boilerplate-busting tools such as Project Lombok can be used. |