Created
March 1, 2017 13:55
-
-
Save svaponi/dfd8224375bb51913c14ad446ec195a1 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package it.miriade.commons.web.resources.utils; | |
import java.io.IOException; | |
import java.text.ParseException; | |
import java.text.SimpleDateFormat; | |
import java.util.Date; | |
import org.apache.commons.lang3.StringUtils; | |
import org.slf4j.Logger; | |
import org.slf4j.LoggerFactory; | |
import com.fasterxml.jackson.core.JsonParser; | |
import com.fasterxml.jackson.core.JsonProcessingException; | |
import com.fasterxml.jackson.databind.DeserializationContext; | |
import com.fasterxml.jackson.databind.JsonDeserializer; | |
/** | |
* Deserializer for {@link Date} attributes in JSON Resources. | |
* | |
* @author svaponi | |
*/ | |
public class DateDeserializer extends JsonDeserializer<Date> { | |
private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |
private static final String ISO_DATE = ("yyyy-MM-dd'T'HH:mm'Z'"); | |
private SimpleDateFormat formatter; | |
public DateDeserializer() { | |
super(); | |
this.formatter = new SimpleDateFormat(ISO_DATE); | |
} | |
public DateDeserializer(String dateFormat) { | |
super(); | |
if (StringUtils.isNotBlank(dateFormat)) | |
this.formatter = new SimpleDateFormat(dateFormat); | |
else | |
this.formatter = new SimpleDateFormat(ISO_DATE); | |
} | |
@Override | |
public Date deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { | |
String timestamp = jp.getText().trim(); | |
try { | |
return formatter.parse(timestamp); | |
} catch (ParseException e) { | |
logger.warn(e.getMessage()); | |
return new Date(); | |
} | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package it.miriade.commons.web.resources.utils; | |
import java.io.IOException; | |
import java.text.SimpleDateFormat; | |
import java.util.Date; | |
import java.util.TimeZone; | |
import org.apache.commons.lang3.StringUtils; | |
import com.fasterxml.jackson.core.JsonGenerator; | |
import com.fasterxml.jackson.core.JsonProcessingException; | |
import com.fasterxml.jackson.databind.JsonSerializer; | |
import com.fasterxml.jackson.databind.SerializerProvider; | |
/** | |
* Serializer for {@link Date} attributes in JSON Resources. | |
* | |
* @author svaponi | |
*/ | |
public class DateSerializer extends JsonSerializer<Date> { | |
private static final String ISO_DATE = ("yyyy-MM-dd'T'HH:mm'Z'"); | |
private SimpleDateFormat formatter; | |
public DateSerializer() { | |
super(); | |
this.formatter = new SimpleDateFormat(ISO_DATE); | |
} | |
public DateSerializer(String dateFormat) { | |
super(); | |
if (StringUtils.isNotBlank(dateFormat)) | |
this.formatter = new SimpleDateFormat(dateFormat); | |
else | |
this.formatter = new SimpleDateFormat(ISO_DATE); | |
} | |
@Override | |
public void serialize(Date date, JsonGenerator gen, SerializerProvider provider) | |
throws IOException, JsonProcessingException { | |
TimeZone tz = TimeZone.getTimeZone("UTC"); | |
formatter.setTimeZone(tz); | |
String formattedDate = formatter.format(date); | |
gen.writeString(formattedDate); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package it.miriade.commons.web.resources.utils; | |
import java.io.IOException; | |
import java.text.ParseException; | |
import java.text.SimpleDateFormat; | |
import java.util.Date; | |
import org.slf4j.Logger; | |
import org.slf4j.LoggerFactory; | |
import com.fasterxml.jackson.core.JsonParser; | |
import com.fasterxml.jackson.core.JsonProcessingException; | |
import com.fasterxml.jackson.databind.DeserializationContext; | |
import com.fasterxml.jackson.databind.JsonDeserializer; | |
/** | |
* @author svaponi | |
*/ | |
public class EasyDecodeDateDeserializer extends JsonDeserializer<Date> { | |
private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |
private static final String EASY_DECODE_TIMESTAMP = ("yyyy-MM-dd-HH-mm-ss-SSS"); | |
private static final SimpleDateFormat formatter = new SimpleDateFormat(EASY_DECODE_TIMESTAMP); | |
@Override | |
public Date deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { | |
String timestamp = jp.getText().trim(); | |
try { | |
return formatter.parse(timestamp); | |
} catch (ParseException e) { | |
logger.warn(e.getMessage()); | |
return new Date(); | |
} | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package it.miriade.commons.web.resources.utils; | |
import java.io.IOException; | |
import java.text.SimpleDateFormat; | |
import java.util.Date; | |
import com.fasterxml.jackson.core.JsonGenerator; | |
import com.fasterxml.jackson.core.JsonProcessingException; | |
import com.fasterxml.jackson.databind.JsonSerializer; | |
import com.fasterxml.jackson.databind.SerializerProvider; | |
/** | |
* Usa il formato {@value #EASY_DECODE_TIMESTAMP} facile da decodificare lato client, basta splittare per '-' e si | |
* ottiene un array con tutte le componenti del timestamp.<br/> | |
* Il JSON risultante avrà un campo Date in formato string human-readble, esempio | |
* <strong>2015-04-24-09-58-58-012</strong>. | |
* | |
* @author svaponi | |
*/ | |
public class EasyDecodeDateSerializer extends JsonSerializer<Date> { | |
private static final String EASY_DECODE_TIMESTAMP = ("yyyy-MM-dd-HH-mm-ss-SSS"); | |
private static final SimpleDateFormat formatter = new SimpleDateFormat(EASY_DECODE_TIMESTAMP); | |
@Override | |
public void serialize(Date date, JsonGenerator gen, SerializerProvider provider) throws IOException, JsonProcessingException { | |
String formattedDate = formatter.format(date); | |
gen.writeString(formattedDate); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package it.miriade.commons.web.resources.utils; | |
import java.io.IOException; | |
import java.text.ParseException; | |
import java.text.SimpleDateFormat; | |
import java.util.Date; | |
import org.slf4j.Logger; | |
import org.slf4j.LoggerFactory; | |
import com.fasterxml.jackson.core.JsonParser; | |
import com.fasterxml.jackson.core.JsonProcessingException; | |
import com.fasterxml.jackson.databind.DeserializationContext; | |
import com.fasterxml.jackson.databind.JsonDeserializer; | |
/** | |
* @see EasyDecodeEpochSerializer | |
* @author svaponi | |
*/ | |
public class EasyDecodeEpochDeserializer extends JsonDeserializer<Long> { | |
private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |
private static final String EASY_DECODE_TIMESTAMP = ("yyyy-MM-dd-HH-mm-ss-SSS"); | |
private static final SimpleDateFormat formatter = new SimpleDateFormat(EASY_DECODE_TIMESTAMP); | |
@Override | |
public Long deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { | |
String timestamp = jp.getText().trim(); | |
try { | |
return formatter.parse(timestamp).getTime() / 1000; | |
} catch (ParseException e) { | |
logger.warn(e.getMessage()); | |
return new Date().getTime() / 1000; | |
} | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package it.miriade.commons.web.resources.utils; | |
import java.io.IOException; | |
import java.text.SimpleDateFormat; | |
import java.util.Date; | |
import com.fasterxml.jackson.core.JsonGenerator; | |
import com.fasterxml.jackson.core.JsonProcessingException; | |
import com.fasterxml.jackson.databind.JsonSerializer; | |
import com.fasterxml.jackson.databind.SerializerProvider; | |
/** | |
* Usa il formato {@link Format.EASY_DECODE_TIMESTAMP} facile da decodificare lato client, basta splittare per '-' e si | |
* ottiene un array con tutte le componenti del timestamp.<br/> | |
* | |
* @author svaponi | |
*/ | |
public class EasyDecodeEpochSerializer extends JsonSerializer<Long> { | |
private static final String EASY_DECODE_TIMESTAMP = ("yyyy-MM-dd-HH-mm-ss-SSS"); | |
private static final SimpleDateFormat formatter = new SimpleDateFormat(EASY_DECODE_TIMESTAMP); | |
@Override | |
public void serialize(Long secondsFrom1970, JsonGenerator gen, SerializerProvider provider) throws IOException, JsonProcessingException { | |
Date date = new Date(secondsFrom1970 * 1000); | |
String formattedDate = formatter.format(date); | |
gen.writeString(formattedDate); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package it.miriade.commons.web.resources.utils; | |
import java.io.IOException; | |
import java.math.BigDecimal; | |
import java.util.Date; | |
import com.fasterxml.jackson.core.JsonParser; | |
import com.fasterxml.jackson.core.JsonProcessingException; | |
import com.fasterxml.jackson.databind.DeserializationContext; | |
import com.fasterxml.jackson.databind.JsonDeserializer; | |
/** | |
* @author matteo | |
*/ | |
public class UnixDateDeserializer extends JsonDeserializer<Date> { | |
@Override | |
public Date deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { | |
String timestamp = jp.getText().trim(); | |
return deserialize(timestamp); | |
} | |
public Date deserialize(String timestamp) { | |
try { | |
return new Date(new BigDecimal(timestamp).multiply(new BigDecimal(1000)).longValue()); | |
} catch (NumberFormatException e) { | |
return null; | |
} | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package it.miriade.commons.web.resources.utils; | |
import com.fasterxml.jackson.core.JsonGenerator; | |
import com.fasterxml.jackson.core.JsonProcessingException; | |
import com.fasterxml.jackson.databind.JsonSerializer; | |
import com.fasterxml.jackson.databind.SerializerProvider; | |
import java.io.IOException; | |
import java.util.Calendar; | |
import java.util.Date; | |
import java.util.TimeZone; | |
/** | |
* @author matteo | |
*/ | |
public class UnixDateSerializer extends JsonSerializer<Date> { | |
@Override | |
public void serialize(Date value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { | |
if(value != null){ | |
Calendar cal = Calendar.getInstance(); | |
cal.setTime(value); | |
cal.setTimeZone(TimeZone.getTimeZone("GMT")); | |
long gmtTime = cal.getTime().getTime(); | |
jgen.writeString((gmtTime/1000)+""); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment