private static Geometry decodeGeometry(final BsonReader reader) { String type = null; BsonReaderMark mark = reader.getMark(); validateIsDocument(reader); reader.readStartDocument();
@SuppressWarnings("unchecked") private Codec<T> getCodecFromDocument(final BsonReader reader, final boolean useDiscriminator, final String discriminatorKey, final CodecRegistry registry, final DiscriminatorLookup discriminatorLookup, final Codec<T> defaultCodec) { Codec<T> codec = defaultCodec; if (useDiscriminator) { BsonReaderMark mark = reader.getMark(); reader.readStartDocument(); boolean discriminatorKeyFound = false; while (!discriminatorKeyFound && reader.readBsonType() != BsonType.END_OF_DOCUMENT) { String name = reader.readName(); if (discriminatorKey.equals(name)) { discriminatorKeyFound = true; try { codec = (Codec<T>) registry.get(discriminatorLookup.lookup(reader.readString())); } catch (Exception e) { throw new CodecConfigurationException(format("Failed to decode '%s'. Decoding errored with: %s", classModel.getName(), e.getMessage()), e); } } else { reader.skipValue(); } } mark.reset(); } return codec; }
private static Geometry decodeGeometry(final BsonReader reader) { String type = null; BsonReaderMark mark = reader.getMark(); validateIsDocument(reader); reader.readStartDocument();