@Override public JsonSerializer<?> createContextual(SerializerProvider prov, BeanProperty property) throws JsonMappingException { if (property != null) { JsonFormat.Value ann = prov.getAnnotationIntrospector().findFormat((Annotated) property.getMember()); if (ann != null) { JacksonJodaDateFormat format = _format; Boolean useTimestamp; // Simple case first: serialize as numeric timestamp? if (ann.getShape().isNumeric()) { useTimestamp = Boolean.TRUE; } else if (ann.getShape() == JsonFormat.Shape.STRING) { useTimestamp = Boolean.FALSE; } else if (ann.getShape() == JsonFormat.Shape.ARRAY) { // 17-Nov-2014, tatu: also, arrays typically contain non-string representation useTimestamp = Boolean.TRUE; } else { useTimestamp = null; } // must not call if flag defined, to rely on defaults: if (useTimestamp != null) { format = format.withUseTimestamp(useTimestamp); } // for others, safe to call, null/empty just ignored format = format.withFormat(ann.getPattern().trim()); format = format.withLocale(ann.getLocale()); format = format.withTimeZone(ann.getTimeZone()); if (format != _format) { return withFormat(format); } } } return this; }
protected boolean _useTimestamp(SerializerProvider provider) { return _format.useTimestamp(provider, _featureForNumeric); }