package br.com.caelum.calopsita.infra.vraptor; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Locale; import java.util.ResourceBundle; import org.joda.time.LocalDate; import br.com.caelum.calopsita.infra.interceptor.LocaleInterceptor.DateFormat; import br.com.caelum.vraptor.Convert; import br.com.caelum.vraptor.Converter; import br.com.caelum.vraptor.converter.ConversionError; import br.com.caelum.vraptor.core.RequestInfo; import br.com.caelum.vraptor.ioc.Component; @Convert(LocalDate.class) @Component public class LocalDateConverter implements Converter<LocalDate> { private final RequestInfo request; public LocalDateConverter(RequestInfo request) { this.request = request; } public LocalDate convert(String value, Class<? extends LocalDate> type, ResourceBundle bundle) { if (value == null || value.equals("")) { return null; } Locale locale = request.getRequest().getLocale(); SimpleDateFormat format = DateFormat.valueFor(locale).getFormat(); try { return LocalDate.fromDateFields(format.parse(value)); } catch (ParseException e) { throw new ConversionError("bad.date.format"); } } }