@Override public Iterable decode(final BsonReader reader, final DecoderContext decoderContext) { reader.readStartArray(); List<Object> list = new ArrayList<Object>(); while (reader.readBsonType() != BsonType.END_OF_DOCUMENT) { list.add(readValue(reader, decoderContext)); } reader.readEndArray(); return list; }
private List<Object> readList(final BsonReader reader, final DecoderContext decoderContext) { reader.readStartArray(); List<Object> list = new ArrayList<Object>(); while (reader.readBsonType() != BsonType.END_OF_DOCUMENT) { list.add(readValue(reader, decoderContext)); } reader.readEndArray(); return list; } }
@Override public BsonArray decode(final BsonReader reader, final DecoderContext decoderContext) { reader.readStartArray(); List<BsonValue> list = new ArrayList<BsonValue>(); while (reader.readBsonType() != BsonType.END_OF_DOCUMENT) { list.add(readValue(reader, decoderContext)); } reader.readEndArray(); return new BsonArray(list); }
@Override public Map<String, Object> decode(final BsonReader reader, final DecoderContext decoderContext) { Map<String, Object> map = new HashMap<String, Object>(); reader.readStartDocument(); while (reader.readBsonType() != BsonType.END_OF_DOCUMENT) { String fieldName = reader.readName(); map.put(fieldName, readValue(reader, decoderContext)); } reader.readEndDocument(); return map; }
private static List<Position> decodeCoordinates(final BsonReader reader) { validateIsArray(reader); reader.readStartArray(); List<Position> values = new ArrayList<Position>(); while (reader.readBsonType() != BsonType.END_OF_DOCUMENT) { values.add(decodePosition(reader)); } reader.readEndArray(); return values; }
private static List<? extends Geometry> decodeGeometries(final BsonReader reader) { validateIsArray(reader); reader.readStartArray(); List<Geometry> values = new ArrayList<Geometry>(); while (reader.readBsonType() != BsonType.END_OF_DOCUMENT) { Geometry geometry = decodeGeometry(reader); values.add(geometry); } reader.readEndArray(); return values; }
private static List<List<Position>> decodeMultiCoordinates(final BsonReader reader) { validateIsArray(reader); reader.readStartArray(); List<List<Position>> values = new ArrayList<List<Position>>(); while (reader.readBsonType() != BsonType.END_OF_DOCUMENT) { values.add(decodeCoordinates(reader)); } reader.readEndArray(); return values; }
private static List<PolygonCoordinates> decodeMultiPolygonCoordinates(final BsonReader reader) { validateIsArray(reader); reader.readStartArray(); List<PolygonCoordinates> values = new ArrayList<PolygonCoordinates>(); while (reader.readBsonType() != BsonType.END_OF_DOCUMENT) { values.add(decodePolygonCoordinates(reader)); } reader.readEndArray(); if (values.isEmpty()) { throw new CodecConfigurationException("Invalid MultiPolygon no coordinates."); } return values; }
private static void validateIsDocument(final BsonReader reader) { BsonType currentType = reader.getCurrentBsonType(); if (currentType == null) { currentType = reader.readBsonType(); } if (!currentType.equals(BsonType.DOCUMENT)) { throw new CodecConfigurationException("Invalid BsonType expecting a Document"); } }
@Override public BsonDocument decode(final BsonReader reader, final DecoderContext decoderContext) { List<BsonElement> keyValuePairs = new ArrayList<BsonElement>(); reader.readStartDocument(); while (reader.readBsonType() != BsonType.END_OF_DOCUMENT) { String fieldName = reader.readName(); keyValuePairs.add(new BsonElement(fieldName, readValue(reader, decoderContext))); } reader.readEndDocument(); return new BsonDocument(keyValuePairs); }
@Override public BsonArray decode(final BsonReader reader, final DecoderContext decoderContext) { reader.readStartArray(); List<T> list = new ArrayList<T>(); while (reader.readBsonType() != BsonType.END_OF_DOCUMENT) { if (reader.getCurrentBsonType() == BsonType.NULL) { reader.readNull(); list.add(null); } else { list.add(decoder.decode(reader, decoderContext)); } } reader.readEndArray(); return new BsonArrayWrapper<T>(list); }
@Override public Document decode(final BsonReader reader, final DecoderContext decoderContext) { Document document = new Document(); reader.readStartDocument(); while (reader.readBsonType() != BsonType.END_OF_DOCUMENT) { String fieldName = reader.readName(); document.put(fieldName, readValue(reader, decoderContext)); } reader.readEndDocument(); return document; }
@Override public Collection<T> decode(final BsonReader reader, final DecoderContext context) { Collection<T> collection = getInstance(); reader.readStartArray(); while (reader.readBsonType() != BsonType.END_OF_DOCUMENT) { if (reader.getCurrentBsonType() == BsonType.NULL) { collection.add(null); reader.readNull(); } else { collection.add(codec.decode(reader, context)); } } reader.readEndArray(); return collection; }
private List readArray(final BsonReader reader, final DecoderContext decoderContext, final List<String> path) { reader.readStartArray(); BasicDBList list = new BasicDBList(); while (reader.readBsonType() != BsonType.END_OF_DOCUMENT) { list.add(readValue(reader, decoderContext, null, path)); } reader.readEndArray(); return list; }
@Override public Map<String, T> decode(final BsonReader reader, final DecoderContext context) { reader.readStartDocument(); Map<String, T> map = getInstance(); while (reader.readBsonType() != BsonType.END_OF_DOCUMENT) { if (reader.getCurrentBsonType() == BsonType.NULL) { map.put(reader.readName(), null); reader.readNull(); } else { map.put(reader.readName(), codec.decode(reader, context)); } } reader.readEndDocument(); return map; }
@SuppressWarnings("unchecked") private void decodeProperties(final BsonReader reader, final DecoderContext decoderContext, final InstanceCreator<T> instanceCreator) { reader.readStartDocument(); while (reader.readBsonType() != BsonType.END_OF_DOCUMENT) { String name = reader.readName(); if (classModel.useDiscriminator() && classModel.getDiscriminatorKey().equals(name)) { reader.readString(); } else { decodePropertyModel(reader, decoderContext, instanceCreator, name, getPropertyModelByWriteName(classModel, name)); } } reader.readEndDocument(); }
private void pipeArray(final BsonReader reader) { reader.readStartArray(); writeStartArray(); while (reader.readBsonType() != BsonType.END_OF_DOCUMENT) { pipeValue(reader); if (abortPipe()) { return; } } reader.readEndArray(); writeEndArray(); }
private DBObject readDocument(final BsonReader reader, final DecoderContext decoderContext, final List<String> path) { DBObject document = objectFactory.getInstance(path); reader.readStartDocument(); while (reader.readBsonType() != BsonType.END_OF_DOCUMENT) { String fieldName = reader.readName(); document.put(fieldName, readValue(reader, decoderContext, fieldName, path)); } reader.readEndDocument(); return document; }
private static BsonValue getField(final BsonReader bsonReader, final String fieldName) { bsonReader.readStartDocument(); while (bsonReader.readBsonType() != BsonType.END_OF_DOCUMENT) { if (bsonReader.readName().equals(fieldName)) { return REGISTRY.get(getClassForBsonType(bsonReader.getCurrentBsonType())).decode(bsonReader, DecoderContext.builder().build()); } bsonReader.skipValue(); } bsonReader.readEndDocument(); return null; }
private void pipeDocument(final BsonReader reader, final List<BsonElement> extraElements) { reader.readStartDocument(); writeStartDocument(); while (reader.readBsonType() != BsonType.END_OF_DOCUMENT) { writeName(reader.readName()); pipeValue(reader); if (abortPipe()) { return; } } reader.readEndDocument(); if (extraElements != null) { pipeExtraElements(extraElements); } writeEndDocument(); }