package com.github.mrcritical.ironcache.internal.model; import org.joda.time.LocalDateTime; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.github.mrcritical.ironcache.internal.serializers.JodaLocalDateTimeSerializer; import com.github.mrcritical.ironcache.model.CachedItem; /** * Mixin to add Jackson annotations to {@link CachedItem}. * * @author pjarrell * */ public abstract class CacheItemMixin { @JsonCreator CacheItemMixin(@JsonProperty("cache") final String cache, @JsonProperty("cas") final long cas, @JsonProperty("expires") final String expires, @JsonProperty("flags") final int flags, @JsonProperty("key") final String key, @JsonProperty("token") final String token, @JsonProperty("value") final String value) { } @JsonProperty("cache") abstract String getCache(); @JsonProperty("cas") abstract long getCas(); @JsonProperty("expires") @JsonSerialize(using = JodaLocalDateTimeSerializer.class) abstract LocalDateTime getExpires(); @JsonProperty("flags") abstract int getFlags(); @JsonProperty("key") abstract String getKey(); @JsonProperty("token") abstract String getToken(); @JsonProperty("value") abstract String getValue(); }