package no.niths.domain.adapter; import java.io.IOException; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.GregorianCalendar; import no.niths.application.rest.exception.CustomParseException; import no.niths.common.constants.MiscConstants; import org.codehaus.jackson.JsonParser; import org.codehaus.jackson.JsonProcessingException; import org.codehaus.jackson.map.DeserializationContext; import org.codehaus.jackson.map.JsonDeserializer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Class JsonCalendarDeserializerAdapter used too parse a String too a Calendar */ public class JsonCalendarDeserializerAdapter extends JsonDeserializer<Calendar> { private Logger logger = LoggerFactory .getLogger(JsonCalendarDeserializerAdapter.class); private DateFormat df = new SimpleDateFormat(MiscConstants.CALENDAR_FORMAT); @Override public Calendar deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { Calendar calendar = new GregorianCalendar(); try { logger.debug("calendarDezerializer is entred" + jp.getText()); calendar.setTime(df.parse(jp.getText())); } catch (ParseException px) { logger.error(px.getMessage(),px); throw new CustomParseException("Invalid syntacs! Valid syntax : " + MiscConstants.CALENDAR_FORMAT + " ErrorOffset:" + px.getErrorOffset()); } return calendar; } }