Implementar Mensagem em Validador - Hibernate Validator

Olá,
Criei um validator de hora.
Gostaria que ele exibisse mensagem diferente para cada validação.
A idéia eh parecida com as linhas comentadas em IntervaloDeTempoValidator, que está tratando IntervaloDeTempo.message() como se fosse um atributo, esse trecho está ai para se ter uma idéia da funcionalidade.
Alguém já implementou algo assim?
Ou algo assim, em IntervaloDeTempo: String message() default "o procedimento deve ser executado entre " + inicio() + " e " + fim();
Tb coloquei essa linha comentada, em IntervaloDeTempo…
Obrigado.

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import org.hibernate.validator.ValidatorClass;

@ValidatorClass(IntervaloDeTempoValidator.class)
@Target({ ElementType.FIELD, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
public @interface IntervaloDeTempo {

	/** @return inicio do intervalo de tempo */
	String inicio() default "00:00";

	/** @return fim do intervalo de tempo */
	String fim() default "23:59";
	
	String message() default "o procedimento deve ser executado em um intervalo de tempo valido";
	//String message() default "o procedimento deve ser executado entre " + inicio() + " e " + fim();
}
import java.util.Date;

import org.hibernate.validator.Validator;

public class IntervaloDeTempoValidator implements Validator<IntervaloDeTempo> {

	private IntervaloDeTempo anotacao;

	public void initialize(IntervaloDeTempo intervaloDeTempo) {
		this.anotacao = intervaloDeTempo;
	}

	public boolean isValid(Object entidade) {
		GregorianCalendar dataFormulario = new GregorianCalendar();
		dataFormulario.setTime((Date) entidade);

		String[] horaInicio = anotacao.inicio().split(":");
		String[] horaFim = anotacao.fim().split(":");

		GregorianCalendar dataInicio = (GregorianCalendar) dataFormulario.clone();
		dataInicio.set(Calendar.HOUR_OF_DAY, Integer.parseInt(horaInicio[0]));
		dataInicio.set(Calendar.MINUTE, Integer.parseInt(horaInicio[1]));

		GregorianCalendar dataFim = (GregorianCalendar) dataFormulario.clone();
		dataFim.set(Calendar.HOUR_OF_DAY, Integer.parseInt(horaFim[0]));
		dataFim.set(Calendar.MINUTE, Integer.parseInt(horaFim[1]));

		//boolean ehInicioValido = dataFormulario.after(dataInicio);
		//boolean ehFimValido = dataFormulario.before(dataFim);
		//if isInicioValido
		//	anotacao.message() = "hora inicial invalida";
		//if isFimValido
		//	anotacao.message() = "hora final invalida";

		return (dataFormulario.after(dataInicio)) && (dataFormulario.before(dataFim));
	}
}

No bean

	@IntervaloDeTempo(inicio="08:00", fim="17:00")
	@Temporal(TemporalType.TIME)
	private Date horaPartida;

Olá,
Com relação a mensagem default em IntervaloDeTempo.message(), consegui solucionar.
IntervaloDeTempo: String message() default "o procedimento deve ser executado entre {inicio} e {fim} horas";
Vou continuar buscando como modificar o message em IntervaloDeTempoValidator.
Abraços.