in mr/src/main/java/org/elasticsearch/hadoop/serialization/bulk/AbstractBulkFactory.java [134:160]
void doWrite(Object value) {
// common-case - constants or JDK types
if (value instanceof String || jsonInput || value instanceof Number || value instanceof Boolean || value == null) {
String valueString = (value == null ? "null" : value.toString());
if (value instanceof String && !jsonInput) {
valueString = StringUtils.toJsonString(valueString);
}
pool.get().bytes(valueString);
} else if (value instanceof Date) {
String valueString = (value == null ? "null" : Long.toString(((Date) value).getTime()));
pool.get().bytes(valueString);
} else if (value instanceof RawJson) {
pool.get().bytes(((RawJson) value).json());
}
// library specific type - use the value writer (a bit overkill but handles collections/arrays properly)
else {
BytesArray ba = pool.get();
JacksonJsonGenerator generator = new JacksonJsonGenerator(new FastByteArrayOutputStream(ba));
ValueWriter.Result writeResult = valueWriter.write(value, generator);
generator.flush();
generator.close();
if(writeResult.isSuccesful() == false) {
throw new RuntimeException("Write failed");
}
}
}