[quote=maurenginaldo][quote=pcalcado][quote=maurenginaldo]
:arrow: Outra questão: O hibernate validator seria uma implementação de “design by contract”, onde colocamos uma anotação por exemplo @Lenght(min=5,max=10) como definição da invariante. Porém a pré e pós condição é tratada por ele ao persistir o objeto.
[/quote]
Qual a questão?
[/quote]
Desculpem pelas pontuações 
Queria saber se o hibernate validator seria um exemplo de “design by contract”?[/quote]
Ele não é um exemplo por si só, mas é uma ferramenta que lhe ajuda para o design.
O pessoal do OVal tentou fazer algo assim com AOP: http://oval.sourceforge.net/userguide.html
Hummm… bem legal.
Algumas anotações lembram as do hibernate validator.
Gostei muito da anotação para checagem do contrato baseado em uma inner static class.
[code]@CheckWith(DayCheck.class)
private int day;
private static class DayCheck implements CheckWithCheck.SimpleCheck
{
public boolean isSatisfied(Object validatedObject, Object value)
{
try {
GregorianCalendar cal = new GregorianCalendar();
cal.setLenient(false);
cal.set(GregorianCalendar.YEAR, ((DayEntity) validatedObject).year);
cal.set(GregorianCalendar.MONTH, ((DayEntity) validatedObject).month - 1);
cal.set(GregorianCalendar.DATE, ((DayEntity) validatedObject).day);
cal.getTimeInMillis(); // may throw IllegalArgumentException return true;
} catch (IllegalArgumentException e) {}
return false;
}
}[/code]
Alguem está utilizando?