View Javadoc
1   package pl.matsuo.core.web.mvc;
2   
3   import com.fasterxml.jackson.core.JsonParseException;
4   import com.fasterxml.jackson.core.JsonParser;
5   import com.fasterxml.jackson.core.JsonProcessingException;
6   import com.fasterxml.jackson.databind.DeserializationContext;
7   import com.fasterxml.jackson.databind.deser.std.StdScalarDeserializer;
8   
9   import java.io.IOException;
10  import java.sql.Date;
11  import java.text.DateFormat;
12  import java.text.ParseException;
13  import java.text.SimpleDateFormat;
14  
15  
16  public class SqlDateDeserializer extends StdScalarDeserializer<Date> {
17    private static final long serialVersionUID = 1L;
18  
19  
20    private final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
21  
22  
23    public SqlDateDeserializer() {
24      super(Date.class);
25    }
26  
27  
28    @Override
29    public Date deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException,
30        JsonProcessingException {
31      try {
32        return new Date(dateFormat.parse(jp.getText()).getTime());
33      } catch (ParseException e) {
34        throw new JsonParseException("Unhandled date " + jp.getText(), jp.getCurrentLocation(), e);
35      }
36    }
37  }
38