public XContentBuilder copyCurrentStructure(XContentParser parser) throws IOException { generator.copyCurrentStructure(parser); return this; }
@Override public void close() { try { generator.close(); } catch (IOException e) { // ignore } }
public XContentBuilder endObject() throws IOException { generator.writeEndObject(); return this; }
public XContentBuilder field(String name, Double value) throws IOException { field(name); if (value == null) { generator.writeNull(); } else { generator.writeNumber(value); } return this; }
public XContentBuilder field(String name, String value, FieldCaseConversion conversion) throws IOException { field(name, conversion); if (value == null) { generator.writeNull(); } else { generator.writeString(value); } return this; }
public static void copyCurrentEvent(XContentGenerator generator, XContentParser parser) throws IOException { switch (parser.currentToken()) { case START_OBJECT: generator.writeStartObject(); break; case END_OBJECT: generator.writeEndObject(); break; case START_ARRAY: generator.writeStartArray(); break; case END_ARRAY: generator.writeEndArray(); break; case FIELD_NAME: generator.writeFieldName(parser.currentName()); break; case VALUE_STRING: if (parser.hasTextCharacters()) { generator.writeString(parser.textCharacters(), parser.textOffset(), parser.textLength()); } else { generator.writeString(parser.text()); switch (parser.numberType()) { case INT: generator.writeNumber(parser.intValue()); break; case LONG: generator.writeNumber(parser.longValue()); break;
XContentGenerator generator = JsonXContent.jsonXContent.createGenerator(byteArrayBuilder); if (source == null) { generator.writeNull(); } else if (source instanceof Boolean) { generator.writeBoolean((Boolean) source); } else if (source instanceof Number) { if (source instanceof Double) { generator.writeNumber((Double) source); } else if (source instanceof Float) { generator.writeNumber((Float) source); } else if (source instanceof Integer) { generator.writeNumber((Integer) source); } else if (source instanceof Long) { generator.writeNumber((Long) source); } else { throw new IllegalStateException(String.format("unexpected numeric type %s of %s", source.getClass(), source)); generator.writeString((String) source); } else if (source instanceof List) { List<Object> objects = nodeListValue(source, Object.class); generator.writeStartArray(); for (Object o : objects) { generator.writeBinary(readRaw(o)); generator.writeEndArray(); } else if (source instanceof Map) { Map<String, Object> map = nodeMapValue(source, String.class, Object.class); generator.writeStartObject(); for (Map.Entry<String, Object> entry : map.entrySet()) { generator.writeRawField(entry.getKey(), readRaw(entry.getValue()), byteArrayBuilder);
private void writeValue(Object value) throws IOException { if (value == null) { generator.writeNull(); return; generator.writeString((String) value); } else if (type == Integer.class) { generator.writeNumber(((Integer) value).intValue()); } else if (type == Long.class) { generator.writeNumber(((Long) value).longValue()); } else if (type == Float.class) { generator.writeNumber(((Float) value).floatValue()); } else if (type == Double.class) { generator.writeNumber(((Double) value).doubleValue()); } else if (type == Byte.class) { generator.writeNumber(((Byte)value).byteValue()); } else if (type == Short.class) { generator.writeNumber(((Short) value).shortValue()); } else if (type == Boolean.class) { generator.writeBoolean(((Boolean) value).booleanValue()); } else if (type == GeoPoint.class) { generator.writeStartObject(); generator.writeNumberField("lat", ((GeoPoint) value).lat()); generator.writeNumberField("lon", ((GeoPoint) value).lon()); generator.writeEndObject(); } else if (value instanceof Map) { writeMap((Map) value); } else if (value instanceof Path) { generator.writeString(value.toString());
/** * Low level implementation detail of {@link XContentGenerator#copyCurrentStructure(XContentParser)}. */ private static void copyCurrentStructure(XContentGenerator destination, XContentParser parser) throws IOException { XContentParser.Token token = parser.currentToken(); // Let's handle field-name separately first if (token == XContentParser.Token.FIELD_NAME) { destination.writeFieldName(parser.currentName()); token = parser.nextToken(); // fall-through to copy the associated value } switch (token) { case START_ARRAY: destination.writeStartArray(); while (parser.nextToken() != XContentParser.Token.END_ARRAY) { copyCurrentStructure(destination, parser); } destination.writeEndArray(); break; case START_OBJECT: destination.writeStartObject(); while (parser.nextToken() != XContentParser.Token.END_OBJECT) { copyCurrentStructure(destination, parser); } destination.writeEndObject(); break; default: // others are simple: destination.copyCurrentEvent(parser); } }
@FunctionalInterface private interface Writer { void write(XContentBuilder builder, Object value) throws IOException; }
public XContentBuilder value(int value) throws IOException { generator.writeNumber(value); return this; }
private void writeMap(Map<String, ?> map) throws IOException { generator.writeStartObject(); for (Map.Entry<String, ?> entry : map.entrySet()) { field(entry.getKey()); Object value = entry.getValue(); if (value == null) { generator.writeNull(); } else { writeValue(value); } } generator.writeEndObject(); }
public XContentBuilder field(XContentBuilderString name, BigDecimal value, int scale, RoundingMode rounding, boolean toDouble) throws IOException { field(name); if (value == null) { generator.writeNull(); } else { if (toDouble) { try { generator.writeNumber(value.setScale(scale, rounding).doubleValue()); } catch (ArithmeticException e) { generator.writeString(value.toEngineeringString()); } } else { generator.writeString(value.toEngineeringString()); } } return this; }
generator.writeStartObject(); generator.writeFieldName("newField"); XContentHelper.copyCurrentStructure(generator, parser); generator.writeEndObject();
public XContentBuilder field(String name, byte[] value) throws IOException { field(name); if (value == null) { generator.writeNull(); } else { generator.writeBinary(value); } return this; }
public XContentBuilder value(boolean value) throws IOException { generator.writeBoolean(value); return this; }
public XContentBuilder nullValue() throws IOException { generator.writeNull(); return this; }
public XContentType contentType() { return generator.contentType(); }
public XContentBuilder startObject() throws IOException { generator.writeStartObject(); return this; }
public XContentBuilder field(String name) throws IOException { ensureNameNotNull(name); generator.writeFieldName(name); return this; }