Refine search
private Codec<T> getWrapped() { if (wrapped == null) { wrapped = registry.get(clazz); } return wrapped; } }
@Override @SuppressWarnings({"unchecked", "rawtypes"}) public void encode(final BsonWriter writer, final DBRef value, final EncoderContext encoderContext) { writer.writeStartDocument(); writer.writeString("$ref", value.getCollectionName()); writer.writeName("$id"); Codec codec = registry.get(value.getId().getClass()); codec.encode(writer, value.getId(), encoderContext); if (value.getDatabaseName() != null) { writer.writeString("$db", value.getDatabaseName()); } writer.writeEndDocument(); }
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; }
@SuppressWarnings("unchecked") static <TItem> void encodeValue(final BsonDocumentWriter writer, final TItem value, final CodecRegistry codecRegistry) { if (value == null) { writer.writeNull(); } else if (value instanceof Bson) { ((Encoder) codecRegistry.get(BsonDocument.class)).encode(writer, ((Bson) value).toBsonDocument(BsonDocument.class, codecRegistry), EncoderContext.builder().build()); } else { ((Encoder) codecRegistry.get(value.getClass())).encode(writer, value, EncoderContext.builder().build()); } }
@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; }
@Override @SuppressWarnings({"unchecked", "rawtypes"}) public void encode(final BsonWriter writer, final BsonArray array, final EncoderContext encoderContext) { writer.writeStartArray(); for (BsonValue value : array) { Codec codec = codecRegistry.get(value.getClass()); encoderContext.encodeWithChildContext(codec, writer, value); } writer.writeEndArray(); }
private Object readValue(final BsonReader reader, final DecoderContext decoderContext) { BsonType bsonType = reader.getCurrentBsonType(); if (bsonType == BsonType.NULL) { reader.readNull(); return null; } else if (bsonType == BsonType.ARRAY) { return decoderContext.decodeWithChildContext(registry.get(List.class), reader); } else if (bsonType == BsonType.BINARY && BsonBinarySubType.isUuid(reader.peekBinarySubType()) && reader.peekBinarySize() == 16) { return decoderContext.decodeWithChildContext(registry.get(UUID.class), reader); } return valueTransformer.transform(bsonTypeCodecMap.get(bsonType).decode(reader, decoderContext)); }
/** * This method may be overridden to change the behavior of reading the current value from the given {@code BsonReader}. It is required * that the value be fully consumed before returning. * * @param reader the read to read the value from * @param decoderContext the decoder context * @return the non-null value read from the reader */ protected BsonValue readValue(final BsonReader reader, final DecoderContext decoderContext) { return codecRegistry.get(BsonValueCodecProvider.getClassForBsonType(reader.getCurrentBsonType())).decode(reader, decoderContext); }
@SuppressWarnings({"unchecked", "rawtypes"}) private void writeValue(final BsonWriter writer, final EncoderContext encoderContext, final Object value) { if (value == null) { writer.writeNull(); } else { Codec codec = registry.get(value.getClass()); encoderContext.encodeWithChildContext(codec, writer, value); } }
@SuppressWarnings({"unchecked", "rawtypes"}) static void encodeCoordinateReferenceSystem(final BsonWriter writer, final Geometry geometry, final EncoderContext encoderContext, final CodecRegistry registry) { CoordinateReferenceSystem coordinateReferenceSystem = geometry.getCoordinateReferenceSystem(); if (coordinateReferenceSystem != null) { writer.writeName("crs"); Codec codec = registry.get(coordinateReferenceSystem.getClass()); encoderContext.encodeWithChildContext(codec, writer, coordinateReferenceSystem); } }
@SuppressWarnings("unchecked") private void writeValue(final BsonWriter bsonWriter, final EncoderContext encoderContext, final Object initialValue) { Object value = org.bson.BSON.applyEncodingHooks(initialValue); if (value == null) { bsonWriter.writeNull(); } else if (value instanceof DBRef) { encodeDBRef(bsonWriter, (DBRef) value); } else if (value instanceof Map) { encodeMap(bsonWriter, (Map<String, Object>) value); } else if (value instanceof Iterable) { encodeIterable(bsonWriter, (Iterable) value); } else if (value instanceof BSONObject) { encodeBsonObject(bsonWriter, ((BSONObject) value)); } else if (value instanceof CodeWScope) { encodeCodeWScope(bsonWriter, (CodeWScope) value); } else if (value instanceof byte[]) { encodeByteArray(bsonWriter, (byte[]) value); } else if (value.getClass().isArray()) { encodeArray(bsonWriter, value); } else if (value instanceof Symbol) { bsonWriter.writeSymbol(((Symbol) value).getSymbol()); } else { Codec codec = codecRegistry.get(value.getClass()); codec.encode(bsonWriter, value, encoderContext); } }
@SuppressWarnings({"unchecked", "rawtypes"}) private void writeValue(final BsonWriter writer, final EncoderContext encoderContext, final Object value) { if (value == null) { writer.writeNull(); } else if (value instanceof Iterable) { writeIterable(writer, (Iterable<Object>) value, encoderContext.getChildContext()); } else if (value instanceof Map) { writeMap(writer, (Map<String, Object>) value, encoderContext.getChildContext()); } else { Codec codec = registry.get(value.getClass()); encoderContext.encodeWithChildContext(codec, writer, value); } }
private Object readBinary(final BsonReader reader, final DecoderContext decoderContext) { byte bsonBinarySubType = reader.peekBinarySubType(); if (BsonBinarySubType.isUuid(bsonBinarySubType) && reader.peekBinarySize() == 16) { return codecRegistry.get(UUID.class).decode(reader, decoderContext); } else if (bsonBinarySubType == BINARY.getValue() || bsonBinarySubType == OLD_BINARY.getValue()) { return codecRegistry.get(byte[].class).decode(reader, decoderContext); } else { return codecRegistry.get(Binary.class).decode(reader, decoderContext); } }
@SuppressWarnings({"unchecked", "rawtypes"}) @Override public void encode(final BsonWriter writer, final BsonValue value, final EncoderContext encoderContext) { Codec codec = codecRegistry.get(value.getClass()); encoderContext.encodeWithChildContext(codec, writer, value); }
@SuppressWarnings("unchecked") @Override public void encode(final BsonWriter writer, final T value, final EncoderContext encoderContext) { if (!specialized) { throw new CodecConfigurationException(format("%s contains generic types that have not been specialised.%n" + "Top level classes with generic types are not supported by the PojoCodec.", classModel.getName())); } if (areEquivalentTypes(value.getClass(), classModel.getType())) { writer.writeStartDocument(); encodeIdProperty(writer, value, encoderContext, classModel.getIdPropertyModelHolder()); if (classModel.useDiscriminator()) { writer.writeString(classModel.getDiscriminatorKey(), classModel.getDiscriminator()); } for (PropertyModel<?> propertyModel : classModel.getPropertyModels()) { if (propertyModel.equals(classModel.getIdPropertyModel())) { continue; } encodeProperty(writer, value, encoderContext, propertyModel); } writer.writeEndDocument(); } else { ((Codec<T>) registry.get(value.getClass())).encode(writer, value, encoderContext); } }
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; }
/** * Converts to GeoJSON representation * * @return the GeoJSON representation */ @SuppressWarnings({"unchecked", "rawtypes", "deprecation"}) public String toJson() { StringWriter stringWriter = new StringWriter(); JsonWriter writer = new JsonWriter(stringWriter, new JsonWriterSettings()); Codec codec = getRegistry().get(getClass()); codec.encode(writer, this, EncoderContext.builder().build()); return stringWriter.toString(); }
private Object readValue(final BsonReader reader, final DecoderContext decoderContext) { BsonType bsonType = reader.getCurrentBsonType(); if (bsonType == BsonType.NULL) { reader.readNull(); return null; } else if (bsonType == BsonType.BINARY && BsonBinarySubType.isUuid(reader.peekBinarySubType()) && reader.peekBinarySize() == 16) { return registry.get(UUID.class).decode(reader, decoderContext); } return valueTransformer.transform(bsonTypeCodecMap.get(bsonType).decode(reader, decoderContext)); } }
@Override public BsonValue decode(final BsonReader reader, final DecoderContext decoderContext) { return codecRegistry.get(BsonValueCodecProvider.getClassForBsonType(reader.getCurrentBsonType())).decode(reader, decoderContext); }
@SuppressWarnings({"unchecked", "rawtypes"}) private void writeValue(final BsonWriter writer, final EncoderContext encoderContext, final Object value) { if (value == null) { writer.writeNull(); } else { Codec codec = registry.get(value.getClass()); encoderContext.encodeWithChildContext(codec, writer, value); } } }