Spring Batch: ¿cómo convertir String de archivo a fecha?

Estoy tratando de procesar un archivo CSV en el que algunos de los campos son fechas del formato"yyyy-MM-dd" - pero el lector falla cuando intenta convertir la Cadena del archivo CSV a una Fecha en mi clase de modelo.

El error es:

org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 error Error de campo en el objeto 'target' en el campo 'datetimeInactive': valor rechazado [2011-04-27]; códigos [typeMismatch.target.datetimeInactive, typeMismatch.datetimeInactive, typeMismatch.java.util.Date, typeMismatch]; argumentos [org.springframework.context.support.DefaultMessageSourceResolvable: codes [target.datetimeInactive, datetimeInactive]; argumentos []; mensaje predeterminado [datetimeInactive]]; mensaje predeterminado [Error al convertir el valor de propiedad del tipo 'java.lang.String' al tipo requerido 'java.util.Date' para la propiedad 'datetimeInactive'; la excepción anidada es java.lang.IllegalStateException: no se puede convertir el valor del tipo [java.lang.String] al tipo requerido [java.util.Date] para la propiedad 'datetimeInactive': no se encontraron editores coincidentes o estrategia de conversión]

XML para el lector:

http: //code.google.com/p/springbatch-in-action/source/browse/trunk/sbia/ch07/src/test/resources/com/manning/sbia/ch07/test-batch-reader-context .xml? r = 145

En mis archivos de configuración XML tengo los siguientes beans:

  <bean id="dateEditor" class="org.springframework.beans.propertyeditors.CustomDateEditor">
    <constructor-arg>
      <bean class="java.text.SimpleDateFormat">
        <constructor-arg value="yyyy-MM-dd" />
      </bean>
    </constructor-arg>
    <constructor-arg value="true" />
  </bean>

  <bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">
    <property name="customEditors">
      <map>
        <entry key="java.util.Date">
          <ref local="dateEditor" />
        </entry>
      </map>
    </property>
  </bean>

Mis preguntas son:

He definido unaCustomDateEditor en mi contexto, entonces, ¿por qué Spring no puede convertir la cadena en fecha?

He leído que hay una nueva forma en Spring 3 Converter?) para realizar la conversión. es decir,http: //forum.springsource.org/showthread.php? 108480-Register-TypeConverter-PropertyEditor-w-Spring-Batch - sin embargo, no pude encontrar ningún código de ejemplo para esto en la documentación de Spring Batch. ¿Podría mostrar aquí cómo hacerlo / señalarme algún enlace?

ACTUALIZAR

Tengo una respuesta a la pregunta # 2:

XML:

  <mvc:annotation-driven conversion-service="conversionService" />

  <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
    <property name="converters">
        <set>
            <bean class="my.project.StringToDate">
                <!-- org.springframework.binding.convert.converters.StringToDate DEFAULT_PATTERN = "yyyy-MM-dd" -->
                <property name="pattern" value="yyyy-MM-dd" />
            </bean>
        </set>
    </property>
  </bean>

Convertidor personalizado:

package my.project;

import java.util.Date;

import org.springframework.core.convert.converter.Converter;

public class StringToDate extends org.springframework.binding.convert.converters.StringToDate implements Converter<String, Date> {

    public Date convert(String source) {

        Date date = null;

        try {
            date = (Date) convertSourceToTargetClass(getPattern(), getTargetClass());
        } catch (Exception e) {

        }

        return date;
    }

}

Todavía estoy buscando una respuesta a la pregunta # 1. Es decir, después de configurar el convertidor, sigo obteniendo BindException durante la tarea por lotes. Desdeeste hilo del foro, parece que mi código debería haber realizado la conversión.

Stack trace es:

Caused by: org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 2 errors
Field error in object 'target' on field 'datetimeInactive': rejected value [2011-04-27]; codes [typeMismatch.target.datetimeInactive,typeMismatch.datetimeInactive,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [target.datetimeInactive,datetimeInactive]; arguments []; default message [datetimeInactive]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'datetimeInactive'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [java.util.Date] for property 'datetimeInactive': no matching editors or conversion strategy found]
Field error in object 'target' on field 'datetimeActive': rejected value [2011-04-27]; codes [typeMismatch.target.datetimeActive,typeMismatch.datetimeActive,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [target.datetimeActive,datetimeActive]; arguments []; default message [datetimeActive]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'datetimeActive'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [java.util.Date] for property 'datetimeActive': no matching editors or conversion strategy found]
    at org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper.mapFieldSet(BeanWrapperFieldSetMapper.java:186)
    at org.springframework.batch.item.file.mapping.DefaultLineMapper.mapLine(DefaultLineMapper.java:42)
    at org.springframework.batch.item.file.FlatFileItemReader.doRead(FlatFileItemReader.java:179)
    ... 45 more

Respuestas a la pregunta(2)

Su respuesta a la pregunta