use of org.bson.types.Code in project spring-data-mongodb by spring-projects.
the class MappingMongoConverterUnitTests method mapsValueToExplicitTargetType.
// DATAMONGO-1849
@Test
void mapsValueToExplicitTargetType() {
WithExplicitTargetTypes source = new WithExplicitTargetTypes();
source.script = "if (a > b) a else b";
org.bson.Document target = new org.bson.Document();
converter.write(source, target);
assertThat(target.get("script")).isEqualTo(new Code(source.script));
}
use of org.bson.types.Code in project spring-data-mongodb by spring-projects.
the class AbstractMongoConverter method initializeConverters.
/**
* Registers additional converters that will be available when using the {@link ConversionService} directly (e.g. for
* id conversion). These converters are not custom conversions as they'd introduce unwanted conversions (e.g.
* ObjectId-to-String).
*/
private void initializeConverters() {
conversionService.addConverter(ObjectIdToStringConverter.INSTANCE);
conversionService.addConverter(StringToObjectIdConverter.INSTANCE);
if (!conversionService.canConvert(ObjectId.class, BigInteger.class)) {
conversionService.addConverter(ObjectIdToBigIntegerConverter.INSTANCE);
}
if (!conversionService.canConvert(BigInteger.class, ObjectId.class)) {
conversionService.addConverter(BigIntegerToObjectIdConverter.INSTANCE);
}
if (!conversionService.canConvert(Date.class, Long.class)) {
conversionService.addConverter(ConverterBuilder.writing(Date.class, Long.class, Date::getTime).getWritingConverter());
}
if (!conversionService.canConvert(Long.class, Date.class)) {
conversionService.addConverter(ConverterBuilder.reading(Long.class, Date.class, Date::new).getReadingConverter());
}
if (!conversionService.canConvert(ObjectId.class, Date.class)) {
conversionService.addConverter(ConverterBuilder.reading(ObjectId.class, Date.class, objectId -> new Date(objectId.getTimestamp())).getReadingConverter());
}
conversionService.addConverter(ConverterBuilder.reading(Code.class, String.class, Code::getCode).getReadingConverter());
conversions.registerConvertersIn(conversionService);
}
use of org.bson.types.Code in project spring-data-mongodb by spring-projects.
the class QueryMapperUnitTests method shouldConvertPropertyWithExplicitTargetType.
// DATAMONGO-1849
@Test
void shouldConvertPropertyWithExplicitTargetType() {
String script = "if (a > b) a else b";
Query query = new Query(where("script").is(script));
org.bson.Document document = mapper.getMappedObject(query.getQueryObject(), context.getPersistentEntity(WithExplicitTargetTypes.class));
assertThat(document).isEqualTo(new org.bson.Document("script", new Code(script)));
}
use of org.bson.types.Code in project spring-data-mongodb by spring-projects.
the class QueryMapperUnitTests method shouldConvertCollectionPropertyWithExplicitTargetType.
// DATAMONGO-1849
@Test
void shouldConvertCollectionPropertyWithExplicitTargetType() {
String script = "if (a > b) a else b";
Query query = new Query(where("scripts").is(script));
org.bson.Document document = mapper.getMappedObject(query.getQueryObject(), context.getPersistentEntity(WithExplicitTargetTypes.class));
assertThat(document).isEqualTo(new org.bson.Document("scripts", new Code(script)));
}
Aggregations