public interface XContentBuilderExtension
ToXContentFragment
in the class for encoding, however, in some situations you may not own the
class, in which case you can add an implementation here for encoding it.Modifier and Type | Method | Description |
---|---|---|
java.util.Map<java.lang.Class<?>,java.util.function.Function<java.lang.Object,java.lang.Object>> |
getDateTransformers() |
Used for plugging a transformer for a date or time type object into a String (or other
encodable object).
|
java.util.Map<java.lang.Class<?>,XContentBuilder.HumanReadableTransformer> |
getXContentHumanReadableTransformers() |
Used for plugging in a human readable version of a class's encoding.
|
java.util.Map<java.lang.Class<?>,XContentBuilder.Writer> |
getXContentWriters() |
Used for plugging in a generic writer for a class, for example, an example implementation:
|
java.util.Map<java.lang.Class<?>,XContentBuilder.Writer> getXContentWriters()
Map<Class<?>, XContentBuilder.Writer> addlWriters = new HashMap<>();
addlWriters.put(BytesRef.class, (builder, value) -> b.value(((BytesRef) value).utf8String()));
return addlWriters;
java.util.Map<java.lang.Class<?>,XContentBuilder.HumanReadableTransformer> getXContentHumanReadableTransformers()
toString()
method, so
this transformer returns the raw value to be used.
An example implementation:
Map<Class<?>, XContentBuilder.HumanReadableTransformer> transformers = new HashMap<>();
transformers.put(ByteSizeValue.class, (value) -> ((ByteSizeValue) value).bytes());
java.util.Map<java.lang.Class<?>,java.util.function.Function<java.lang.Object,java.lang.Object>> getDateTransformers()
final DateTimeFormatter datePrinter = ISODateTimeFormat.dateTime().withZone(DateTimeZone.UTC);
Map<Class<?>, Function<Object, Object>> transformers = new HashMap<>();
transformers.put(Date.class, d -> datePrinter.print(((Date) d).getTime()));